Workspace Overview
Root Package
Location:/package.json
Configuration
adonisjs-starter-kit0.0.2[email protected] - Enforces pnpm version for consistency>=20 - Requires Node.js version 20 or higherScripts
turbo build - Runs build tasks across all packagesturbo dev - Starts development servers for all appsturbo lint - Runs linting across all packagesprettier --write "**/*.{ts,tsx,md}" - Formats all codedocker compose -f docker-compose.yaml -f docker-compose.prod.yaml up -d - Starts production Docker containersDependencies
@workspace/eslint-config- Internal shared ESLint config@workspace/typescript-config- Internal shared TypeScript configprettier@^3.6.2- Code formattingturbo@^2.5.8- Monorepo build systemtypescript@~5.9.3- TypeScript language
Apps
Web Application
Location:/apps/web/package.json
The main full-stack application built with AdonisJS, featuring both backend and frontend (via Inertia.js).
Configuration
webmodule - Uses ES modulesModule Path Aliases
Theimports field defines module path aliases for cleaner imports:
Scripts
node bin/server.js - Starts production servernode ace build - Builds application for productionnode ace serve --hmr - Development server with hot module replacementnode ace test - Runs test suiteeslint . - Lints codebaseprettier --write . - Formats all filestsc --noEmit - Type checks without emitting filesHot Module Replacement
Configured viahotHook for faster development:
Packages
UI Package
Location:/packages/ui/package.json
Shared UI component library built with ShadCN and Radix UI.
Configuration
@workspace/uimodule - Uses ES modulesExports
Key Dependencies
- Radix UI - Headless UI components
- Tailwind CSS - Utility-first CSS framework
- React 19 - UI library
- Motion - Animation library
- Lucide React - Icon library
- TanStack Table - Table component
- next-themes - Theme management
- sonner - Toast notifications
- zod - Schema validation
ESLint Config Package
Location:/packages/eslint-config/package.json
Centralized ESLint configuration for the entire workspace.
Configuration
@workspace/eslint-configExports
Key Dependencies
@adonisjs/eslint-config- AdonisJS ESLint rules@typescript-eslint/eslint-plugin- TypeScript lintingeslint-plugin-react- React linting ruleseslint-plugin-turbo- TurboRepo linting rules
TypeScript Config Package
Location:/packages/typescript-config/package.json
Shared TypeScript configuration.
Configuration
@workspace/typescript-configDependencies
@adonisjs/tsconfig@^1.4.1- Base TypeScript config from AdonisJS
Workspace Configuration
pnpm-workspace.yaml
Defines which directories are part of the workspace:turbo.json
Configures build pipeline and caching. TurboRepo intelligently caches build outputs and runs tasks in parallel.Adding New Packages
To add a new shared package:-
Create package directory:
-
Initialize package.json:
-
Update name to use workspace scope:
-
Use in other packages:
Workspace Commands
Run commands in specific packages:Benefits of Monorepo Structure
Code Sharing
Share components, utilities, and configurations across apps
Atomic Changes
Make coordinated changes across multiple packages in a single commit
Unified Tooling
One set of tools and configurations for the entire project
Fast Builds
TurboRepo caching speeds up builds and tests