MCPcopy Index your code
hub / github.com/Kiranism/tanstack-start-dashboard

github.com/Kiranism/tanstack-start-dashboard @main

Chat with this repo
repository ↗ · DeepWiki ↗ · + Follow
602 symbols 1,468 edges 228 files 12 documented · 2%
What it actually does AI analysis from the code graph — generated when you open this
loading…
README

Admin Dashboard with TanStack Start & Shadcn UI

Open source admin dashboard starter built with TanStack Start, shadcn/ui, Tailwind CSS, TypeScript

View Demo

TanStack Start Dashboard Cover

GitHub stars Forks MIT License TanStack Start Vite

Overview

This is an open source admin dashboard starter built with TanStack Start, Shadcn UI, TypeScript, and Tailwind CSS.

It gives you a production-ready dashboard UI with charts, tables, forms, and a feature-based folder structure, perfect for SaaS apps, internal tools, and admin panels.

Tech Stack

Category Technology
Framework TanStack Start
Language TypeScript
Build Tool Vite 7
Deployment Nitro (Vercel, Cloudflare, Node.js)
Styling Tailwind CSS v4
Components Shadcn-ui
Routing TanStack Router (file-based, type-safe)
Data Fetching TanStack React Query
Tables TanStack Table
Forms TanStack Form + Zod
Charts Recharts
State Management Zustand
Command+K kbar
Themes tweakcn
Linter / Formatter OxLint / Oxfmt

If you are looking for a Next.js dashboard template, here is the repo.

Features

  • Admin dashboard layout (sidebar, header, content area)

  • Analytics overview page with cards and Suspense-based independent loading

  • Data tables with React Query route loaders, client-side cache, search, filter & pagination

  • Type-safe file-based routing with TanStack Router (auto-generated route tree)

  • Server functions via createServerFn() for server-side logic

  • Infobar component to show helpful tips, status messages, or contextual info on any page

  • Shadcn UI components with Tailwind CSS styling

  • Multi-theme support with 10+ beautiful themes and easy theme switching

  • Feature-based folder structure for scalable projects

  • Kanban board with drag-n-drop (dnd-kit + Zustand)

  • Chat interface with conversation list, message bubbles, and auto-reply demo

  • Notification center with bell icon badge, popover preview, and full page view

  • Command palette (Cmd+K) for quick navigation

  • Deploy anywhere — Vercel, Cloudflare, Node.js via Nitro presets

Pages

Page Description
Dashboard Overview Cards with Recharts graphs. Suspense boundaries for independent loading/error per section.
Product List (Table) TanStack Table + React Query (route loader prefetch + client cache) with URL search params for search, filter, pagination.
Create Product Form TanStack Form + Zod with useMutation for create/update. Cache invalidation on success.
Users (Table) Users table with React Query + URL state pattern. Same architecture as Products.
React Query Demo Pokemon API showcase demonstrating route loader + useSuspenseQuery pattern with client-side cache.
Kanban Board Drag n Drop task management board with dnd-kit and Zustand. Column sorting, task cards with priority badges.
Chat Messaging UI with conversation list, message bubbles, quick replies, file attachments.
Notifications Notification center with bell icon badge, popover preview, and dedicated full page with tabs.
Forms Basic, Multi-step, Sheet/Dialog, and Advanced form patterns with TanStack Form + Zod.
Not Found Custom 404 page via TanStack Router's defaultNotFoundComponent.

Feature-based Organization

src/
├── routes/                        # TanStack Router file-based routes
│   ├── __root.tsx                 # Root layout (providers, theme, HTML shell)
│   ├── index.tsx                  # Home (auth redirect)
│   ├── auth/                      # Auth pages (sign-in, sign-up)
│   ├── dashboard.tsx              # Dashboard layout (sidebar, header, KBar)
│   └── dashboard/                 # Dashboard pages
│       ├── overview.tsx           # Analytics with Suspense boundaries
│       ├── product/               # Product CRUD (route loaders + React Query)
│       ├── users.tsx              # Users table (route loaders + React Query)
│       ├── react-query.tsx        # React Query demo page
│       ├── kanban.tsx             # Task board page
│       ├── chat.tsx               # Messaging page
│       ├── notifications.tsx      # Notifications page
│       ├── forms/                 # Form examples
│       └── elements/              # UI showcase
│
├── 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
│   └── forms/                     # Form showcases
│
├── lib/                           # Core utilities (query-client, parsers, etc.)
├── hooks/                         # Custom hooks (use-data-table, use-media-query, etc.)
├── config/                        # Navigation, infobar, data table config
├── constants/                     # Mock data
├── styles/                        # Global CSS & theme files
│   └── themes/                    # Individual theme CSS files (OKLCH)
└── types/                         # TypeScript types

Getting Started

[!NOTE] This admin dashboard starter uses TanStack Start with React 19, Vite 7, and Shadcn UI. Follow these steps to run it locally:

Clone the repo:

git clone https://github.com/Kiranism/tanstack-start-dashboard.git
cd tanstack-start-dashboard

Install dependencies and run:

bun install
cp env.example.txt .env
bun run dev

You should now be able to access the application at http://localhost:3000.

Deploy

Vercel (Recommended)

The project uses Nitro with the vercel preset. Just connect your GitHub repo to Vercel:

  • Build Command: bun run build
  • Output Directory: leave blank (auto-detected)
  • Framework Preset: Other

Other Platforms

Change the Nitro preset in vite.config.ts:

// Cloudflare Pages
nitro({ preset: 'cloudflare-pages' });

// Node.js server
nitro({ preset: 'node-server' });

// Netlify
nitro({ preset: 'netlify' });

Then run locally with:

bun run build
bun run start

Key Differences from Next.js Version

Concept Next.js TanStack Start
Routing App Router (app/) File-based (routes/) with type-safe params
Data Fetching Server Components + HydrationBoundary Route loader + useSuspenseQuery
Layouts layout.tsx nesting Layout routes with <Outlet />
Server Code 'use server' actions createServerFn()
Build Tool Webpack/Turbopack Vite
Deployment next start Nitro (any platform)
URL State nuqs TanStack Router useSearch() + validateSearch

Support

If you find this template helpful, please consider giving it a star!

Buy Me A Coffee

Cheers!

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
Register (Interface)
(no doc)
src/router.tsx
PermissionCheck (Interface)
(no doc)
src/types/index.ts
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 296
src/lib/utils.ts
useFieldContext
called by 10
src/components/ui/form-context.tsx
createFormField
called by 8
src/components/ui/form-context.tsx
getQueryClient
called by 7
src/lib/query-client.ts
useFormFields
called by 6
src/components/ui/tanstack-form.tsx
useInfobar
called by 6
src/components/ui/infobar.tsx
useSidebar
called by 6
src/components/ui/sidebar.tsx
useKanbanContext
called by 6
src/components/ui/kanban.tsx

Shape

Function 524
Interface 72
Method 4
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
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
src/components/ui/drawer.tsx10 symbols

For agents

$ claude mcp add tanstack-start-dashboard \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact