Thinboard is a thin, open-source admin dashboard template for Next.js — a reusable shell you clone, re-theme, and extend for internal tools, SaaS admin panels, or any CRUD-style backend UI.
Thinboard is intentionally thin: layout, design tokens, UI primitives, and example pages — not a full product.
- Shell: collapsible sidebar, header, page scaffolding, light/dark theming
- UI kit: buttons, inputs, tables, dialogs, toasts, and more (shadcn/ui)
- Examples: overview with charts, users list, settings forms
- Excluded by design: real authentication, database, and API layers (bring your own per project)
- Next.js 15 App Router + strict TypeScript
- shadcn/ui + Tailwind CSS + CSS variable theming
- Light / dark / system theme via
next-themes - Collapsible sidebar + mobile drawer layout
- Data table pattern: search, sort, pagination (client-side demo)
- Recharts dashboard widgets with mock data
- react-hook-form + Zod on the settings example
- Sonner toasts
/ui-kit— living catalog of components
git clone https://github.com/YOUR_USERNAME/thinboard.git
cd thinboard
npm install
npm run devOpen http://localhost:3000.
| Command | Description |
|---|---|
npm run dev |
Start dev server |
npm run build |
Production build |
npm run start |
Run production build |
npm run lint |
Run ESLint |
| Route | Purpose |
|---|---|
/ |
Dashboard overview (stats + charts) |
/users |
Data table example |
/settings |
Forms + validation example |
/ui-kit |
Component showcase |
/login |
Auth UI shell (no real auth) |
app/
(auth)/login/ # Login shell
(dashboard)/ # Sidebar layout + pages
components/
ui/ # shadcn primitives
dashboard/ # Sidebar, header, page chrome
charts/ # Chart wrappers
data/ # Table, search, badges
forms/ # Form helpers + examples
lib/
mock-data.ts # Typed demo data
validators.ts # Zod schemas
utils.ts # cn() and helpers
types/
index.ts # Shared TypeScript types
Edit CSS variables in app/globals.css (--primary, --radius, etc.). Components inherit tokens automatically.
- Add a link in
components/dashboard/nav-config.ts - Create
app/(dashboard)/your-page/page.tsx - Use
<PageHeader />inside the existing dashboard layout
Copy the /users pattern:
- Define types in
types/ - Add mock or API-backed data in
lib/ - Compose
DataTable,SearchInput,StatusBadge, dialogs, and toasts
- Add a Zod schema in
lib/validators.ts - Build a form in
components/forms/with react-hook-form - Follow
/settingsfor validation and submit feedback
- Add series data in
lib/mock-data.ts - Drop a widget from
components/charts/intoChartCard
| Layer | Choice |
|---|---|
| Framework | Next.js 15 (App Router) |
| Language | TypeScript |
| Styling | Tailwind CSS |
| Components | shadcn/ui (Radix) |
| Icons | Lucide |
| Charts | Recharts |
| Forms | react-hook-form + Zod |
| Toasts | Sonner |
Thin, not opinionated. Thinboard ships patterns and UI so you can focus on domain logic — wire your APIs, auth, and data layer without fighting the layout.
- Command palette (⌘K)
- i18n example
- Storybook for
components/ui - Example API route + data-fetching pattern
Contributions are welcome. Please open an issue before large changes. Keep PRs focused on the generic template — avoid product-specific auth providers, databases, or branding.
- Fork the repo
- Create a branch (
git checkout -b feat/your-feature) - Commit with a clear message
- Open a pull request
Thinboard is open source under the MIT License.
Copyright (c) 2026 Claret Nnamocha
You are free to use, modify, and distribute this project, including in commercial work, with minimal restrictions. See LICENSE for the full text.
Thinboard — clone it, theme it, ship your admin.