Skip to content

Repository files navigation

dotty

Pixel-brutalist dashboard template. Cool-toned monochrome. Sharp geometry. Stacked-block charts. 2-layer cards.

License: MITFramework: ViteStyle: Tailwind

Dotty Preview

Live Preview →

Design Philosophy

Cool monochrome

Near-monochrome grayscale with a subtle blue undertone (hue 220, saturation 4–14%). No warm yellows, no neutral grays — every surface carries a faint cool cast that keeps the palette clean and prevents the "dirty gray" look that pure hsl(0 0% …) produces. The only chromatic accent is green (--success) for positive change indicators.

Sharp + round radius rule

Large layout containers (sidebar shell, main content wrapper) have zero border radius — hard, architectural edges. Small interactive controls (buttons, search box, nav items, badges, kbd tags) use rounded-lg. Page-level cards use --radius-card (14px); inner widgets use --radius-widget (10px). This creates a deliberate tension between the rigid frame and the soft content within it.

2-layer card pattern

The signature visual element. Every card follows a stacked construction:

  1. Outer containerbg-muted with rounded-[--radius-card], the cool-gray base
  2. Inner content areabg-card with rounded-[--radius-widget] and a 1px border, floating inside
  3. Exposed gray zone — the gap between inner and outer surfaces holds secondary content (footers, labels, metadata)

Depth is communicated through luminance layers, not shadows or gradients.

Pixel bar charts

Bar charts are rendered as vertically stacked square blocks (PixelBarChart component) rather than smooth SVG rectangles. Each bar is a column of discrete squares, reinforcing the pixel-grid aesthetic.

Logo

Three rounded squares arranged to form the number 7 — two blocks on top (the horizontal stroke) and one block bottom-right (the vertical stroke). The logo ships as both a React component (DottyLogo) and a static SVG favicon (public/logo.svg).

Typography

Inter is the global body font. Only card numerical values (stats, metrics, percentages) use IBM Plex Mono via the font-mono-num utility. Display headings optionally use DM Sans via font-display.

Pages

28 pages organized into 5 sidebar sections. The Dashboard page plus all Controls, Pages, and System pages are fully implemented; Blocks and Scenarios pages are layout-ready stubs.

SectionPages
BlocksDashboard, Components, Health, Accounts, Progress Tracking, Flow Comparison, Portfolio, Interactions
ScenariosWearable Health, Banking & Wealth, Network Ops
ControlsInteractive, Data, Forms, Navigation
PagesLogin, Badge Login, Static Page, Loading, 404
SystemLayout, Color Palette, Settings

Tech Stack

LayerTechnology
BuildVite 8 + SWC
UIReact 19 + TypeScript 7
RoutingReact Router 7
StylingTailwind CSS 4 + @tailwindcss/vite + tw-animate-css
Componentsshadcn/ui (31 primitives)
ChartsRecharts 3 + custom PixelBarChart
IconsLucide React (1.5px stroke)
TestingVitest 4 + Testing Library
Package ManagerBun

Design Tokens

All tokens live in src/index.css as CSS custom properties with HSL values (hue saturation lightness). Light mode uses :root, dark mode uses .dark. Every gray-scale token shares hue 220 for consistent cool tonality.

--background Page background 220 14% 96% (light) / 220 14% 5% (dark)
--foreground Primary text 220 14% 10% (light) / 220 6% 93% (dark)
--card Card inner surface 220 20% 100% (light) / 220 10% 9% (dark)
--muted Card outer surface 220 10% 93% (light) / 220 8% 15% (dark)
--border Borders 220 8% 88% (light) / 220 6% 22% (dark)
--radius 0px (global default — sharp corners)
--radius-card 14px (page-level cards)
--radius-widget 10px (inner card widgets)

Getting Started

# Install dependencies
bun install
# Start dev server (port 7017)
bun dev
# Build for production
bun run build
# Run tests
bun run test

License

MIT

About

🔲 Pixel-brutalist dashboard template with cool-toned monochrome, sharp geometry, and stacked-block charts

Resources

Stars

4 stars

Watchers

0 watching

Forks

Contributors

Languages