A modern, production-ready, and highly opinionated full-stack starter template built on TanStack Start, React 19, and Vite. It's designed for maximum type safety, developer experience, and performance, leveraging the power of the Bun ecosystem.
- Full-Stack React: Powered by TanStack Start (Router + Query + SSR + Server Functions).
- React 19 Ready: Utilizing the new React Compiler for automatic memoization and performance optimizations.
- Modern Styling: Tailwind CSS v4 combined with highly customizable Shadcn UI / Base UI components.
- Type-Safe Database: Drizzle ORM with PostgreSQL for robust, fully-typed database interactions.
- State Management: Zustand for simple, scalable, and type-safe global state.
- Internationalization (i18n): Paraglide JS for fully type-safe, zero-runtime-overhead translations.
- Error Tracking: Built-in Sentry integration for React and Server components.
- Blazing Fast Tooling: Built on Vite and powered by Bun for lightning-fast installs and execution.
- Docker Ready: Pre-configured
Dockerfileandcompose.ymlfor seamless deployment.
| Category | Technology |
|---|---|
| Framework | TanStack Start, React 19, Nitro |
| Language | TypeScript |
| Styling | Tailwind CSS v4, Lucide Icons, Framer Motion |
| UI Components | Shadcn UI, Base UI, Radix UI Primitives |
| Database | Drizzle ORM, PostgreSQL |
| State Management | Zustand, TanStack Query |
| Tooling | Vite, Bun, ESLint, Prettier, Vitest |
| i18n | Paraglide JS |
.
βββ messages/ # i18n translation files (en.json, de.json, etc.)
βββ project.inlang/ # Paraglide JS configuration
βββ public/ # Static assets
βββ src/
β βββ db/ # Drizzle ORM schema and database client
β βββ integrations/ # Third-party integrations (e.g., TanStack Devtools)
β βββ lib/ # Utility functions
β βββ routes/ # TanStack Router file-based routing
β βββ shared/ # Shared application logic
β β βββ stores/ # Zustand state stores
β β βββ styles/ # Global and theme CSS
β β βββ types/ # Global TypeScript definitions
β β βββ ui/ # Reusable UI components (Shadcn/Base UI)
β β βββ utils/ # Shared utilities
β βββ widgets/ # Complex, feature-specific components and providers
β βββ router.tsx # TanStack Router initialization
βββ .env.example # Environment variables template
βββ components.json # Shadcn UI configuration
βββ drizzle.config.ts # Drizzle ORM configuration
βββ instrument.server.mjs # Sentry server instrumentation
βββ vite.config.ts # Vite configuration (React Compiler, Nitro, Tailwind v4)
Ensure you have the following installed:
- Bun (Recommended) or Node.js >= 20
- PostgreSQL (Local instance or Docker)
# Install dependencies using Bun
bun installCopy the example environment file and configure your local variables:
cp .env.example .env.localMake sure to update the database connection string and any Sentry/API keys in .env.local.
Generate and apply Drizzle migrations to your local PostgreSQL database:
bun run db:generate
bun run db:migrate
# Alternatively, if you want to push the schema directly:
bun run db:pushTo view and manage your data, you can launch Drizzle Studio:
bun run db:studioStart the Vite development server with hot module replacement (HMR):
bun run devThe application will be available at http://localhost:3000.
bun run dev: Starts the development server.bun run build: Builds the application for production.bun run start: Runs the compiled production server.bun run preview: Locally previews the production build.bun run test: Runs the Vitest test suite.bun run lint: Runs ESLint.bun run format: Checks code formatting with Prettier.bun run check: Runs TypeScript type checking.bun run db:*: Drizzle ORM commands (generate,migrate,push,pull,studio).
This template uses Paraglide JS for type-safe internationalization.
- Translation files are located in the
messages/directory (e.g.,en.json,de.json). - When you update the JSON files, Paraglide automatically generates type-safe getter functions.
- The active locale is managed via the URL or base settings configured in
vite.config.ts.
The project includes a ready-to-use Dockerfile and compose.yml for containerized deployments.
To build and run the application using Docker Compose:
docker compose up --build -dThe app will be exposed on port 3000 (configurable in compose.yml).
This project is licensed under the MIT License.