Overview
Launch is a Turborepo monorepo that uses a singlepnpm workspace to manage
dependencies across apps. A monorepo keeps related code in one place so you can
share types, reuse utilities, and ship features across the API and mobile app
without cross-repo overhead.
At the top level, apps/ holds the product apps (mobile, api, and web — work in progress).
The root config files (package.json, pnpm-workspace.yaml, turbo.json) manage
dependencies and task orchestration across the workspace.
pnpm-workspace.yaml defines the workspace packages and turbo.json runs tasks
across them efficiently.
Apps
Mobile
iOS and Android app built with Expo SDK 55 and Expo Router.
API
Backend server with tRPC, Better Auth, and Prisma.
Web (Coming Soon)
Web app is planned, but not shipped yet.
Mobile App
The mobile app uses Expo Router for file-based navigation. Screens go inapp/, reusable components in components/.
| Folder | What goes here |
|---|---|
app/ | Screens and navigation. File name = route. |
components/ | Shared UI components used across screens. |
features/ | Self-contained feature modules with their own hooks and components. |
lib/ | API client, authentication, utilities, custom hooks. |
constants/ | Theme tokens, colors, spacing values. |
API
The API uses Koa.js as the server framework with tRPC for type-safe endpoints and Prisma for database access. The API source lives underapps/api/src/ (routes, routers, services, middleware,
and shared clients), while apps/api/prisma/ contains the database schema and
migrations.
| Folder | What goes here |
|---|---|
routers/ | tRPC routers. Each file exports procedures for a domain. |
routes/ | Traditional REST endpoints like auth callbacks and webhooks. |
services/ | Business logic. Keep routers thin, put logic here. |
lib/ | Database client, external service clients (Stripe, Twilio). |
prisma/ | Database schema and migrations. |
Key Files
| File | Purpose |
|---|---|
apps/mobile/app.config.ts | Expo configuration (app name, bundle ID, plugins) |
apps/mobile/app/_layout.tsx | Root layout with auth provider and navigation |
apps/api/src/router.ts | Main tRPC router combining all sub-routers |
apps/api/prisma/schema.prisma | Database models and relationships |
turbo.json | Turborepo build pipeline configuration |
pnpm-workspace.yaml | Workspace package definitions |
Troubleshooting
- Can’t find a screen: check
apps/mobile/app/ - Missing API route: check
apps/api/src/router.tsfor registration