- Runtime: Bun
- Framework: Next.js 15 (App Router)
- Database: PostgreSQL + Drizzle ORM
- Deployment: Vercel Serverless
- UI: React + Tailwind CSS
bun install # Install dependencies
bun run dev # Start dev server
bun run build # Production build
bun run db:migrate # Apply database migrations
bun run db:generate # Generate migration from schema
bun run db:studio # Open Drizzle StudioNever use db:push - it's removed. All schema changes go through migrations.
- Edit schema in
packages/db/schemas/ bun run db:generate- Review SQL in
packages/db/migrations/ bun run db:migrate- Commit both schema + migration
npx drizzle-kit generate --custom --name=descriptive_name- No
CREATE INDEX CONCURRENTLY(runs in transaction) - Use
IF NOT EXISTS/IF EXISTS - Never edit applied migrations
- See
docs/database-migrations.mdfor details
app/ # Next.js App Router pages
packages/
lib/ # Business logic, services
db/
schemas/ # Drizzle schema definitions
migrations/ # SQL migration files
repositories/ # Data access layer
components/ # React components
ui/ # Shared UI component library
tests/ # Test suites
types/ # Shared TypeScript generic types
scripts/ # CLI utilities
infra/ # Infrastructure logic
config/ # Shared settings