A modern full-stack monorepo boilerplate featuring AdonisJS backend, TanStack Start frontend, and a custom design system. Built with TypeScript, optimized for developer experience, and production-ready.
- AdonisJS v6 - Node.js web framework
- PostgreSQL - Database
- Lucid ORM - Database toolkit
- Authentication - Built-in auth system with session management
- Authorization - Role-based permissions with Bouncer
- Email - React Email for beautiful email templates
- Stripe Integration - Payment processing with Shopkeeper
- Tuyau - Type-safe API client generation
- Sentry - Error tracking and monitoring
- TanStack Start - Full-stack React framework
- TanStack Router - Type-safe routing
- TanStack Query - Server state management
- TanStack Table - Headless table utilities
- Intlayer - Internationalization (i18n)
- Tailwind CSS v4 - Utility-first CSS
- Zod - Type-safe schema validation
- Cloudflare - Optional deployment target
- Radix UI - Unstyled, accessible components
- Tailwind CSS - Styling framework
- Lucide Icons - Icon library
- dnd-kit - Drag and drop functionality
- Recharts - Chart components
- pnpm - Fast, disk space efficient package manager
- Turbo - High-performance build system
- Docker - Containerization for development and deployment
boilerplate/
βββ apps/
β βββ backend/ # AdonisJS API server
β β βββ app/
β β β βββ admin/ # Admin features (user management, impersonation)
β β β βββ auth/ # Authentication (login, register, verify email)
β β β βββ users/ # User models and DTOs
β β β βββ core/ # Core middleware, policies, abilities
β β βββ config/ # Configuration files
β β βββ database/ # Migrations and seeders
β β βββ emails/ # React Email templates
β β βββ start/ # Routes and kernel
β β
β βββ frontend/ # TanStack Start app
β βββ src/
β β βββ components/ # React components
β β βββ routes/ # File-based routing
β β βββ hooks/ # Custom React hooks
β β βββ lib/ # Utilities and API queries
β β βββ contents/ # i18n content
β βββ public/ # Static assets
β
βββ packages/
βββ design-system/ # Shared UI components
βββ components/ # Reusable UI components
βββ hooks/ # Shared React hooks
βββ styles/ # Global styles
- Node.js v20 or higher
- pnpm v10.18.0 (specified in package.json)
- Docker and Docker Compose (for PostgreSQL)
- PostgreSQL (via Docker or local installation)
pnpm installCreate .env files for both backend and frontend:
Backend (apps/backend/.env):
PORT=3333
HOST=0.0.0.0
NODE_ENV=development
APP_KEY=<generate-with-node-ace-generate:key>
LOG_LEVEL=info
APP_URL=http://localhost:3001
# Database
DB_HOST=127.0.0.1
DB_PORT=5432
DB_USER=postgres
DB_PASSWORD=postgres
DB_DATABASE=boilerplate
# S3
DRIVE_DISK=s3
AWS_ACCESS_KEY_ID=key
AWS_SECRET_ACCESS_KEY=secret
AWS_REGION=localhost
S3_BUCKET=bucket
# Session
SESSION_DRIVER=cookie
# Mail
SMTP_HOST=localhost
SMTP_PORT=587
RESEND_API_KEY=your_resend_key
# Stripe
STRIPE_KEY=your_stripe_key
STRIPE_SECRET=your_stripe_secretFrontend (apps/frontend/.env):
VITE_API_URL=http://localhost:3333# Start PostgreSQL and development servers
pnpm devThis command will:
- Start Docker containers (PostgreSQL)
- Start the backend server (http://localhost:3333)
- Start the frontend server (http://localhost:3000)
cd apps/backend
node ace migration:run
node ace db:seed# Start all development servers
pnpm dev
# Run linting across all workspaces
pnpm lint
# Run tests across all workspaces
pnpm test
# Update dependencies interactively
pnpm tazecd apps/backend
# Development with hot reload
pnpm dev
# Build for production
pnpm build
# Start production server
pnpm start
# Run tests
pnpm test
node ace test
node ace test --groups "group-name"
# Database migrations
node ace migration:run
node ace migration:rollback
# Database seeding
node ace db:seed
# Generate API key
node ace generate:key
# Tuyau generate
node ace tuyau:generate
# Linting and formatting
pnpm lint
pnpm format
# Type checking
pnpm typecheck
# React Email Preview
pnpm emailcd apps/frontend
# Development server
pnpm dev
# Build for production
pnpm build
# Preview production build
pnpm serve
# Run tests
pnpm test
# Linting and formatting
pnpm lint
pnpm format
pnpm check # Format and lint fix
# Deploy to Cloudflare
pnpm deploy
# Build IntLayer
pnpm intlayer build- Email/password authentication
- Email verification system
- Password reset functionality
- Role-based access control (RBAC)
- Admin impersonation
- Session management
- Stripe integration via Shopkeeper
- Subscription management
- Customer billing portal
- Type-safe API client (Tuyau)
- Hot module replacement
- Auto-generated route types
- Path aliases for cleaner imports
- Comprehensive linting and formatting
- Docker-based development environment
- Multi-language support via Intlayer
- Localized routing
- Content management system
- Modern, accessible component library
- Responsive design
- Dark mode support (via next-themes)
- Toast notifications
- Data tables with sorting, filtering, pagination
- Drag and drop interfaces
The project includes Docker configuration for easy development setup:
# Start services
docker compose up -d
# Stop services
docker compose down
# View logs
docker compose logs -fThis is a boilerplate project. Feel free to fork and customize for your needs.
Happy Coding! π