Skip to main content

Overview

Launch is a Turborepo monorepo that uses a single pnpm 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 in app/, reusable components in components/.
apps/mobile/
├── app/
│   ├── _layout.tsx
│   ├── index.tsx
│   ├── (tabs)/          # Tab screens
│   ├── onboarding/      # Onboarding flow
│   └── auth/            # Auth screens
├── components/          # Reusable UI components
├── features/            # Feature modules (chat, etc)
├── lib/                 # API client, hooks, utilities
├── constants/           # Colors, spacing, typography
├── assets/              # Fonts, images
├── app.config.ts
└── package.json
FolderWhat 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 under apps/api/src/ (routes, routers, services, middleware, and shared clients), while apps/api/prisma/ contains the database schema and migrations.
FolderWhat 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

FilePurpose
apps/mobile/app.config.tsExpo configuration (app name, bundle ID, plugins)
apps/mobile/app/_layout.tsxRoot layout with auth provider and navigation
apps/api/src/router.tsMain tRPC router combining all sub-routers
apps/api/prisma/schema.prismaDatabase models and relationships
turbo.jsonTurborepo build pipeline configuration
pnpm-workspace.yamlWorkspace package definitions

Troubleshooting

  • Can’t find a screen: check apps/mobile/app/
  • Missing API route: check apps/api/src/router.ts for registration

Next Steps