Start once, ship everything.
An opinionated monorepo starter kit for building apps everywhere: web, mobile, desktop, and more.
- Web application using Next.js
- Documentation site using Fumadocs
- Mobile application using Expo
- API using Hono, built to be deployed on Cloudflare Workers
- Desktop application using Tauri
- Browser extension using WXT
- We use pnpm as our package manager.
- You'll need Nodejs v22 or higher installed.
- You'll need Docker installed for running the database and Redis. I recommend using OrbStack for managing your containers.
- Install the dependencies using
pnpm
:
pnpm install
- Start your local services using
docker
.
pnpm docker:up
- Run the
setup-env
script to create the environment files:
pnpm env:setup
- Start the development server:
pnpm dev
Since this monorepo has a lot of applications and packages you may not need for your project, you can run the setup-template
script to select which workspaces you want to keep:
pnpm template:setup
If you later want to add or remove workspaces, you can use the following commands:
pnpm workspace:add # Adds a workspace from the template to the project
pnpm workspace:remove # Removes a workspace from the project
Apps run in the 3000-3999 range.
- App: 3000
- API: 3001
- Mobile: 3002
- Desktop: 3003
- Extension: 3004
- Docs: 3005
- Web: 3006
Packages run in the 8000-8999 range.
- Redis: 8079
- Database: 8080
- Email: 8081
- Queue: 8288
Here are the most common commands you'll use during development:
pnpm dev
- Start all applications in development modepnpm build
- Build all applicationspnpm lint
- Run linting across the codebase using Biomepnpm format
- Format code using Biomepnpm typecheck
- Run TypeScript type checkingpnpm check
- Run linting and formattingpnpm clean
- Clean build artifactspnpm clean:all
- Deep clean (build artifacts, cache, node_modules)
If you want to run a command for a specific workspace, you can use the following syntax:
pnpm <command> --filter <workspace>
pnpm deps:check
- Check for outdated dependenciespnpm deps:update
- Update dependencies interactivelypnpm deps:mismatch
- List version mismatches across the monorepopnpm deps:sync
- Fix version mismatches automaticallypnpm deps:graph
- Generate a dependency graph visualization