Architectural Principles
The starter kit is built on three core architectural principles:- Monorepo Organization - Multiple apps and shared packages in a single repository
- Modular Design - Feature-based modules for better code organization
- Workspace Management - Shared dependencies and configurations across the project
High-Level Structure
Apps Directory
Theapps/ directory contains runnable applications. Currently, the starter kit includes:
web (apps/web)
The main full-stack AdonisJS application that combines:- Backend: AdonisJS server with routing, controllers, and business logic
- Frontend: React components with Inertia.js for SPA experience
- Database: PostgreSQL with Lucid ORM
- Authentication: Session-based auth with social login support
Packages Directory
Thepackages/ directory contains shared code that can be imported by any app:
@workspace/ui
Shared UI components built with ShadCN and Radix UI. Includes buttons, dialogs, forms, and more.
@workspace/eslint-config
Centralized ESLint configurations for consistent code style across all apps and packages.
@workspace/typescript-config
Shared TypeScript configurations extending AdonisJS base config.
Technology Stack
The starter kit leverages modern technologies:Build & Tooling
Build & Tooling
- TurboRepo: Monorepo build system with intelligent caching
- pnpm: Fast, disk-space efficient package manager
- Vite: Lightning-fast dev server and build tool
- TypeScript: Type-safe development across the entire stack
Backend
Backend
- AdonisJS v6: Modern Node.js framework
- PostgreSQL: Robust relational database
- Lucid ORM: Type-safe database queries
- Inertia.js: Server-side routing with client-side rendering
Frontend
Frontend
- React 19: Latest React with modern features
- Tailwind CSS v4: Utility-first styling
- ShadCN: Accessible, customizable UI components
- Radix UI: Unstyled, accessible component primitives
Configuration Files
Root Level
- package.json: Defines workspace-level scripts and shared dev dependencies
- pnpm-workspace.yaml: Declares workspace packages (apps/* and packages/*)
- turbo.json: Configures build pipeline, caching, and task dependencies
- tsconfig.json: Base TypeScript configuration
App Level (apps/web)
- adonisrc.ts: AdonisJS configuration including providers, commands, and module preloads
- package.json: App-specific dependencies and import aliases for modules
- vite.config.ts: Vite configuration for frontend builds
- tsconfig.json: TypeScript config extending root configuration
Import Aliases
The starter kit uses TypeScript import aliases for clean imports:Import aliases are defined in
apps/web/package.json under the imports field. Each module gets its own alias (e.g., #users/*, #auth/*).Next Steps
Monorepo Setup
Learn about TurboRepo and pnpm workspace configuration
Modular Architecture
Understand how modules work and how to create new ones