A modern, production-ready starter template featuring React 19, TypeScript, Vite, Tailwind CSS v4, and shadcn/ui components with state management via Zustand.
- ⚡️ Vite - Lightning-fast HMR and optimized builds
- ⚛️ React 19 - Latest React with concurrent features
- 🔷 TypeScript - Type-safe development experience
- 🎨 Tailwind CSS v4 - Utility-first CSS with PostCSS
- 🧩 shadcn/ui - Beautiful, accessible component library (New York style)
- 📦 Zustand - Lightweight state management
- 🎭 Lucide Icons - Modern icon library
- 🔍 ESLint - Code linting with React-specific rules
- 🚀 SWC - Fast TypeScript/JSX compilation
- Button
- Dialog
├── src/
│ ├── components/
│ │ └── ui/ # shadcn/ui components
│ ├── lib/ # Utility functions
│ ├── assets/ # Static assets
│ ├── App.tsx # Main app component with demo
│ ├── main.tsx # Application entry point
│ └── index.css # Global styles & Tailwind config
├── public/ # Public assets
├── components.json # shadcn/ui configuration
└── vite.config.ts # Vite configuration with path aliases
Configured aliases for cleaner imports:
@/components→src/components@/lib→src/lib@/ui→src/components/ui@/hooks→src/hooks
- Node.js 18+ or Bun
# Install dependencies
npm install
# or
bun install# Start dev server (http://localhost:5173)
npm run dev
# or
bun run dev# Build for production
npm run build
# or
bun run build# Preview production build
npm run preview
# or
bun run preview# Run ESLint
npm run lint
# or
bun run lintThis template uses Tailwind CSS v4 with the new PostCSS architecture:
- Configuration is in
src/index.cssusing@themedirective - Custom color scheme with CSS variables for easy theming
- Dark mode support built-in
tailwindcss-animateplugin for animations
# Add new components
npx shadcn@latest add [component-name]Example:
npx shadcn@latest add card
npx shadcn@latest add inputComponents are configured with:
- Style: New York
- Base Color: Neutral
- CSS Variables: Enabled
- Icon Library: Lucide React
The template includes a basic ESLint setup. For production applications, consider enabling type-aware lint rules:
- Update
eslint.config.jsto enable type-aware rules:
export default tseslint.config({
languageOptions: {
parserOptions: {
project: ['./tsconfig.node.json', './tsconfig.app.json'],
tsconfigRootDir: import.meta.dirname,
},
},
})-
Replace
tseslint.configs.recommendedwith:tseslint.configs.recommendedTypeChecked(recommended)tseslint.configs.strictTypeChecked(strict)
-
Optionally add
...tseslint.configs.stylisticTypeChecked
Install and configure eslint-plugin-react:
npm install -D eslint-plugin-react// eslint.config.js
import react from 'eslint-plugin-react'
export default tseslint.config({
settings: { react: { version: '18.3' } },
plugins: { react },
rules: {
...react.configs.recommended.rules,
...react.configs['jsx-runtime'].rules,
},
})- React & React DOM 19.2.4
- Radix UI - Headless UI primitives for accessibility
- class-variance-authority - Type-safe component variants
- clsx & tailwind-merge - Utility for managing class names
- Zustand 5.0.1 - State management
- Lucide React - Icon library
- Vite 5.4.10 - Build tool
- TypeScript 5.6.2 - Type checking
- @vitejs/plugin-react-swc - Fast refresh with SWC
- Tailwind CSS 4.1.18 - Styling framework
- ESLint 9.13.0 - Code linting
This boilerplate is perfect for:
- Dashboard applications
- Admin panels
- SaaS products
- Content management systems
- Any React application requiring beautiful, accessible UI components
This is a starter template. Use it however you'd like!
Feel free to customize this template for your needs. If you find issues or have suggestions, contributions are welcome!