Automated Return & Refund Tracker — mobile-first B2C app.
| Path | Description |
|---|---|
apps/api |
NestJS REST API (PostgreSQL, Redis, BullMQ) |
apps/mobile |
Expo React Native client |
services/email-worker |
Go email sync & parsing worker |
db/migrations |
PostgreSQL schema |
infra/terraform |
Staging infrastructure |
apps/web |
Marketing landing page (static) |
docs/ |
Blueprint, Phase 3 roadmap & OpenAPI |
legal/ |
Terms of Service & Privacy Policy |
cp .env.example .env
docker compose up -d
cd apps/api && npm install && npx prisma generate && npx prisma db push && npm run devcurl -X POST http://localhost:3000/api/v1/auth/dev-token \
-H "Content-Type: application/json" \
-d "{\"sub\":\"dev-user\",\"email\":\"dev@returnrider.com\"}"Seed demo data: cd apps/api && npx ts-node src/seed/seed.ts
API: http://localhost:3000
Docs: http://localhost:3000/api/docs
EAS builds: https://expo.dev/accounts/ahmed5145/projects/returnrider/builds (see docs/EAS_SETUP.md)
Legal: http://localhost:3000/legal/terms · http://localhost:3000/legal/privacy
Requires Expo SDK 54 (matches current Expo Go). If you see an SDK mismatch, run npx expo install --fix in apps/mobile.
# API (from repo root — npm workspace)
cd ReturnRider
npm install
# Mobile (standalone — NOT a workspace; avoids Expo Go native module errors)
cd apps/mobile
copy .env.example .env
npm install
npx expo install --fix
npx expo start -cPorts: 8081 = Expo app (Metro). 3000 = API only (not the mobile UI).
Physical phone: set EXPO_PUBLIC_API_URL=http://YOUR_LAN_IP:3000/api/v1 in apps/mobile/.env (ipconfig → IPv4). Phone and PC must be on the same Wi‑Fi. Keep npm run dev running in apps/api.
See .env.example for required secrets (Gmail OAuth, Plaid, EasyPost, wallet certs).
| Doc | Purpose |
|---|---|
| docs/NORTH_STAR_AUDIT.md | Set-and-forget audit — gaps, sprints A/B/C, smoke checklist |
| docs/BLUEPRINT.md | Architecture & phased delivery |
| docs/PARSER_TUNING.md | Email parser rules & tests |
| docs/STAGING_DEPLOY.md | Render staging |
| docs/DEV_BUILD.md | Android APK for push |