MCPcopy
hub / github.com/Kiranism/next-shadcn-dashboard-starter

github.com/Kiranism/next-shadcn-dashboard-starter @main sqlite

repository ↗ · DeepWiki ↗
672 symbols 1,660 edges 265 files 12 documented · 2%
README

Admin Dashboard Template with Next.js & Shadcn UI

Open source admin dashboard starter built with Next.js 16, shadcn/ui, Tailwind CSS, and TypeScript

View Demo

Shadcn Dashboard Cover

GitHub stars Forks MIT License Next.js Sponsored by Clerk

Overview

An open source admin dashboard starter built with Next.js 16, shadcn/ui, TypeScript, and Tailwind CSS.

It ships with authentication, charts, tables, forms, and a feature-based folder structure, so you can skip the boilerplate and start building. It works well as a base for SaaS apps, internal tools, and admin panels.

Tech Stack

Looking for a TanStack Start version? Here's the repo.

Features

  • Pre-built dashboard layout with sidebar, header, and content area
  • Analytics overview page with cards and charts
  • Data tables with React Query prefetch, client-side cache, search, filter, and pagination
  • Authentication and user management through Clerk
  • Multi-tenant workspaces using Clerk Organizations (create, switch, manage teams)
  • Billing and subscriptions via Clerk Billing for B2B, with plan management and feature gating
  • Client-side RBAC navigation that filters menu items by organization, permissions, and roles
  • Infobar component for tips, status messages, or contextual notes on any page
  • shadcn/ui components styled with Tailwind CSS
  • Six-plus themes with a theme switcher
  • Feature-based folder structure
  • A starting point for SaaS dashboards, internal tools, and client admin panels

Use Cases

A few things you can build with it:

  • SaaS admin dashboards
  • Internal tools and operations panels
  • Analytics dashboards
  • Client project admin panels
  • A boilerplate for new Next.js shadcn projects

Pages

Page Notes
Signup / Signin Auth handled by Clerk, with passwordless sign-in, social logins, and enterprise SSO.
Dashboard Overview Cards and Recharts graphs. Parallel routes give each section its own loading and error state.
Product List (Table) TanStack Table plus React Query (server prefetch, client cache) with nuqs URL state for search, filter, and pagination. shallow: true keeps interactions on the client.
Create Product Form TanStack Form and Zod with useMutation for create and update. Cache is invalidated on success.
Users (Table) Same setup as Products: React Query with nuqs, server prefetch, and client-side pagination and filtering.
React Query Demo A Pokemon API example showing the server prefetch, HydrationBoundary, and useSuspenseQuery pattern with client-side cache.
Profile Clerk's account management UI for profile and security settings.
Kanban Board Drag-and-drop task board built with dnd-kit and Zustand. Column sorting, priority badges, assignees, and due dates.
Chat Messaging UI with a conversation list, message bubbles, quick replies, attachments, and an auto-reply demo. Multi-panel layout that works on mobile.
Notifications Notification center with a header badge, popover preview, and a full page with All / Unread / Read tabs. Includes mark-as-read and mark-all-as-read.
Workspaces Organization management using Clerk's <OrganizationList />. View, create, and switch between organizations.
Team Management Team management using Clerk's <OrganizationProfile />. Manage members, roles, permissions, security, and org details. Needs an active organization.
Billing & Plans Billing page using Clerk's <PricingTable />. View plans, subscribe, and manage subscriptions. Needs an active organization.
Exclusive Page Plan-based access control with Clerk's <Protect>. Only available to organizations on the Pro plan, with a fallback UI for everyone else.
Not Found A root-level not-found page.
Global Error A shared error page wired to Sentry for logging, reports, and session replay.

Folder Structure

src/
├── app/                           # Next.js App Router directory
│   ├── auth/                      # Auth pages (sign-in, sign-up)
│   ├── dashboard/                 # Dashboard route group
│   │   ├── overview/              # Analytics with parallel routes
│   │   ├── product/               # Product CRUD pages (React Query)
│   │   ├── users/                 # Users table (React Query + nuqs)
│   │   ├── react-query/           # React Query demo page
│   │   ├── kanban/                # Task board page
│   │   ├── chat/                  # Messaging page
│   │   ├── notifications/         # Notifications page
│   │   ├── workspaces/            # Org management & teams
│   │   ├── billing/               # Billing & plans
│   │   ├── profile/               # User profile
│   │   └── exclusive/             # Plan-gated page
│   └── api/                       # API routes
│
├── components/                    # Shared components
│   ├── ui/                        # UI primitives (buttons, inputs, kanban, etc.)
│   ├── layout/                    # Layout components (header, sidebar, etc.)
│   ├── themes/                    # Theme system (selector, mode toggle, config)
│   └── kbar/                      # Command+K interface
│
├── features/                      # Feature-based modules
│   ├── overview/                  # Dashboard analytics (charts, cards)
│   ├── products/                  # Product listing, form, tables (React Query)
│   ├── users/                     # User management table (React Query)
│   ├── react-query-demo/          # React Query demo (Pokemon API)
│   ├── kanban/                    # Drag-drop task board
│   ├── chat/                      # Messaging (conversations, bubbles, composer)
│   ├── notifications/             # Notification center & store
│   ├── auth/                      # Auth components
│   └── profile/                   # Profile form schemas
│
├── lib/                           # Core utilities (query-client, searchparams, etc.)
├── hooks/                         # Custom hooks
├── config/                        # Navigation, infobar, data table config
├── constants/                     # Mock data
├── styles/                        # Global CSS & theme files
│   └── themes/                    # Individual theme CSS files
└── types/                         # TypeScript types

Getting Started

[!NOTE] This starter uses Next.js 16 (App Router) with React 19 and shadcn/ui. To run it locally:

Clone the repo:

git clone https://github.com/Kiranism/next-shadcn-dashboard-starter.git
  • bun install
  • Copy the example env file: cp env.example.txt .env.local
  • Fill in the required variables in .env.local
  • bun run dev
Environment variables

See env.example.txt for the variables you need. They cover authentication and error tracking.

Clerk setup

For setting up Clerk auth (including organizations, workspaces, and teams), see clerk_setup.md.

The app should now be running at http://localhost:3000.

[!WARNING] After cloning or forking, be careful when pulling the latest changes. Updates can cause merge conflicts.


Cleanup

To strip out features you don't need (auth, kanban, chat, notifications, extra themes, Sentry), run the cleanup script:

```bash node scripts/cleanup.js --interactive # interactive mode node scripts/cleanup.js --list # see available features node scripts/cleanup.js --dry-run chat # preview before r

Extension points exported contracts — how you extend this code

FieldValidatorConfig (Interface)
Field-level validators forwarded to form.Field
src/components/ui/form-context.tsx
InteractiveGridPatternProps (Interface)
* InteractiveGridPattern is a component that renders a grid pattern with interactive squares. * * @param width - The w
src/features/auth/components/interactive-grid.tsx
PermissionCheck (Interface)
(no doc)
src/types/index.ts
StatsErrorProps (Interface)
(no doc)
src/app/dashboard/overview/@bar_stats/error.tsx
UseDataTableProps (Interface)
(no doc)
src/hooks/use-data-table.ts
FieldListenerConfig (Interface)
Field-level side-effect listeners forwarded to form.Field
src/components/ui/form-context.tsx
UserFormSheetProps (Interface)
(no doc)
src/features/users/components/user-form-sheet.tsx
NavItem (Interface)
(no doc)
src/types/index.ts

Core symbols most depended-on inside this repo

cn
called by 299
src/lib/utils.ts
log
called by 46
scripts/cleanup.js
row
called by 19
scripts/postinstall.js
getQueryClient
called by 11
src/lib/query-client.ts
useFieldContext
called by 10
src/components/ui/form-context.tsx
delay
called by 9
src/constants/mock-api.ts
createFormField
called by 8
src/components/ui/form-context.tsx
useSidebar
called by 7
src/components/ui/sidebar.tsx

Shape

Function 584
Interface 70
Method 16
Class 2

Languages

TypeScript100%

Modules by API surface

src/components/ui/kanban.tsx26 symbols
src/components/ui/sidebar.tsx25 symbols
src/components/ui/infobar.tsx25 symbols
scripts/cleanup.js24 symbols
src/components/ui/menubar.tsx16 symbols
src/components/ui/dropdown-menu.tsx15 symbols
src/components/ui/context-menu.tsx15 symbols
src/components/ui/form-context.tsx12 symbols
src/components/ui/alert-dialog.tsx11 symbols
src/components/ui/sheet.tsx10 symbols
src/components/ui/select.tsx10 symbols
src/components/ui/field.tsx10 symbols

Dependencies from manifests, versioned

@clerk/nextjs7.3.5 · 1×
@dnd-kit/core6.3.1 · 1×
@dnd-kit/modifiers9.0.0 · 1×
@dnd-kit/sortable10.0.0 · 1×
@dnd-kit/utilities3.2.2 · 1×
@faker-js/faker9.9.0 · 1×
@radix-ui/react-accordion1.2.12 · 1×
@radix-ui/react-alert-dialog1.1.15 · 1×
@radix-ui/react-aspect-ratio1.1.8 · 1×
@radix-ui/react-avatar1.1.11 · 1×
@radix-ui/react-checkbox1.3.3 · 1×
@radix-ui/react-collapsible1.1.12 · 1×

For agents

$ claude mcp add next-shadcn-dashboard-starter \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact