Monorepo for the FitFo product: mobile (Expo), web (Next.js), and API (FastAPI).
Package manager: pnpm (see root packageManager). You can still run app scripts with npm from inside each app directory — that matches the day-to-day flow below.
From the repo root:
pnpm installCopy env files if you do not already have them:
cp apps/api/.env.example apps/api/.env
cp apps/mobile/.env.example apps/mobile/.env
cp apps/web/.env.example apps/web/.env.localPoint clients at an API:
| App | Env var | Local API | Production |
|---|---|---|---|
| Mobile | EXPO_PUBLIC_API_URL |
http://localhost:8000 |
https://api.fitfo.app |
| Web | NEXT_PUBLIC_API_URL |
http://localhost:8000 |
https://api.fitfo.app |
On a physical phone, do not use localhost — use your machine’s LAN IP (e.g. http://192.168.1.25:8000).
Run each app in its own terminal. Typical daily commands:
cd apps/mobile
npm run startThen press i for iOS simulator, a for Android, or scan the QR code on a device.
Other options:
# From apps/mobile
npm run ios # native iOS build + Metro (preferred for full native features)
npm run android # native Android build + Metro
npx expo run:ios # alternate iOS native run
# From repo root
pnpm mobile:start
pnpm mobile:ios
pnpm mobile:androidDev server (local coaching dashboard / marketing / admin):
cd apps/web
npm run devOpen http://localhost:3000.
Production build check (what you often run before shipping):
cd apps/web
npm run buildFrom repo root:
pnpm web:devOnly needed when you want a local backend. Many local mobile/web sessions point at https://api.fitfo.app instead.
cd apps/api
python3.12 -m venv .venv # once
source .venv/bin/activate # or use your conda base if uvicorn is already installed
pip install -r requirements.txt
uvicorn app.main:app --reload --host 0.0.0.0 --port 8000- Health: http://localhost:8000/health
- Docs: http://localhost:8000/docs
Optional Celery worker (ingest / library / creator pipeline with Redis):
cd apps/api
source .venv/bin/activate
celery -A app.celery_app:celery_app worker --loglevel=info -Q importsMore detail: apps/api/README.md.
| App | Directory | Dev command | Default URL |
|---|---|---|---|
| Mobile | apps/mobile |
npm run start |
Expo / Metro (8081) |
| Web | apps/web |
npm run dev |
http://localhost:3000 |
| API | apps/api |
uvicorn app.main:app --reload --host 0.0.0.0 --port 8000 |
http://localhost:8000 |
Root shortcuts:
pnpm mobile:start # Expo
pnpm web:dev # Next.js
pnpm ios # mobile iOS runner
pnpm android # mobile Android runner| Path | Notes |
|---|---|
packages/* |
Shared workspace libs (e.g. coach-profile) — built via workspace install |
apps/nutrition/* |
Nutrition / planner services — see their own READMEs |
- API deep dive:
apps/api/README.md - Mobile notes:
apps/mobile/README.md - Infra / load test:
infra/ - Product docs:
docs/