Social restaurant discovery for friends — share short visits (photos + comment), see activity on a map, save places, and blend tastes with friends for heuristic recommendations. Restaurant data comes from Foursquare only (no user-created venues).
- Auth — Sign up / log in; optional email verification (Resend).
- Friends — Send and accept requests; mutual friend graph for social context.
- Posts — Pick a Foursquare-backed restaurant, up to 3 photos (presigned S3 upload), comment ≤ 200 characters; friend feed, per-user and per-restaurant views.
- Engagement — Likes and threaded comments on posts.
- Saved places — Bookmark restaurants for later.
- Map — Mapbox map with zoom-dependent visualization (heatmap vs pins) for activity.
- Taste blend (coming soon!) —
POST /recommendations/blendaggregates posts, likes, and saves across selected users, derives top cuisines + geographic centroid, and ranks nearby matches with a simple heuristic (no ML). - Restaurant search — Server-backed search that resolves through Foursquare and persists structured rows in Postgres.
- Profile & notifications — User profiles and in-app notification surfaces (see API/OpenAPI for current endpoints).
| Area | Technology |
|---|---|
| iOS | Swift, SwiftUI, MVVM |
| Android | Kotlin, Jetpack Compose, Navigation, Retrofit/OkHttp, Coil, MVVM |
| API | Node.js, Express 5, TypeScript, Zod validation |
| Data | PostgreSQL 16 (migrations in backend/) |
| Storage | S3-compatible presigned uploads (@aws-sdk/client-s3) |
| Maps | Mapbox (native SDKs) |
| Places | Foursquare Places API |
| Contract | docs/openapi.yaml (source of truth for mobile + backend) |
| Web (support site) | React (Vite), Firebase Hosting (static, Spark), support mail via API (frontend/) |
| Ops | Docker Compose for local Postgres; deploy docs under docs/ |
├── backend/ # REST API (Express, Vitest, ESLint, Prettier)
├── ios/ # SwiftUI app (Xcode project: BigBack.xcodeproj)
├── android/ # Kotlin + Compose app
├── docs/ # OpenAPI, architecture, deployment guides
├── frontend/ # Support + privacy + email-confirm pages (Firebase)
├── .claude/ # Agent/skill configuration (optional tooling)
└── docker-compose.yml # Local PostgreSQL
The iOS target name BigBack is legacy in paths and Xcode; the product and packages align with MaillardMap.
- Node.js (see
backend/package.jsonengines if present; LTS recommended) - PostgreSQL (local:
docker compose up -dfrom repo root) - Xcode (iOS) / Android Studio + SDK 34 (Android)
- API keys as documented in
backend/.env.example, Mapbox tokens for mobile builds
cd backend
cp .env.example .env
# Set DATABASE_URL, JWT_SECRET, and optional FOURSQUARE / S3 / Resend vars
# From repo root, if using Compose:
docker compose up -d
cd backend && npm install && npm run db:migrate && npm run devHealth check: GET http://localhost:3000/health
- Android — See
android/README.mdfor Gradle,MAILLARDMAP_API_BASE_URL, and Mapbox Maven token. - iOS — Open
ios/BigBack.xcodeprojin Xcode; configure Mapbox and API base URL per project settings (seeios/BigBacksources andServices/APIClient.swift).
- OpenAPI spec:
docs/openapi.yaml - Contributing workflow, ownership, and PR checklist:
CONTRIBUTING.md
backend/README.md— env vars, Docker image, scriptsdocs/architecture.md— schema and system notesdocs/deploy-api-docker.md,docs/deploy-supabase.md— hosting
MIT