A modern, full-stack TypeScript starter template built with Next.js, Supabase, and tRPC. This template provides a solid foundation for building scalable web applications with type safety, authentication, and database management.
- ⚡️ Next.js 15 with App Router
 - 🔐 Supabase Authentication & Database
 - 🎨 Tailwind CSS for styling
 - 🔄 tRPC for type-safe API calls
 - 📦 Drizzle ORM for database management
 - 🎯 TypeScript for type safety
 - 📱 Responsive design
 - 🔍 Biome for linting and formatting
 - 🧪 React Query for data fetching
 - 🔒 Middleware for route protection
 
- Node.js 18+
 - pnpm 9+
 - Supabase account
 - PostgreSQL (if running locally)
 
- Clone the repository:
 
git clone https://github.com/yourusername/testimate.git
cd testimate- Install dependencies:
 
pnpm install- Set up environment variables:
 
cp .env.example .env- Update the 
.envfile with your Supabase credentials: 
NEXT_PUBLIC_SUPABASE_URL=your_supabase_url
NEXT_PUBLIC_SUPABASE_ANON_KEY=your_supabase_anon_key
DATABASE_URL=your_database_url- Start the development server:
 
pnpm dev- Open http://localhost:3000 in your browser.
 
src/
├── app/              # Next.js app router pages
├── components/       # React components
├── lib/             # Utility functions and shared logic
├── server/          # Server-side code
│   └── db/         # Database configuration and schema
├── styles/          # Global styles
├── supabase/        # Supabase client configuration
└── trpc/            # tRPC router and procedures
pnpm dev- Start development serverpnpm build- Build for productionpnpm start- Start production serverpnpm db:generate- Generate database migrationspnpm db:push- Push database changespnpm db:studio- Open Drizzle Studiopnpm typecheck- Run TypeScript type checkingpnpm check- Run Biome lintingpnpm check:write- Fix linting issues
The project uses Supabase for authentication with middleware protection. Protected routes will automatically redirect to the login page if the user is not authenticated.
This project uses Drizzle ORM with Supabase PostgreSQL. To manage your database:
- Generate migrations:
 
pnpm db:generate- Push changes to database:
 
pnpm db:push- View database in Drizzle Studio:
 
pnpm db:studioThe project uses Tailwind CSS for styling. You can find global styles in src/styles/globals.css.
- TypeScript for static type checking
 - tRPC for end-to-end type safety
 - Zod for runtime type validation
 
- Biome for linting and formatting
 - TypeScript for type checking
 - ESLint for code quality
 
Contributions are welcome! Please feel free to submit a Pull Request.
This project is licensed under the MIT License - see the LICENSE file for details.
- create-t3-app for the initial setup
 - Supabase for authentication and database
 - Next.js for the framework
 - Drizzle ORM for database management