Run oboapp locally with zero cloud dependencies using Firebase Emulators and mock APIs.
- Docker and Docker Compose
- Node.js 20+
# Copy environment templates
cp ingest/.env.example.emulator ingest/.env.local
cp web/.env.example.emulator web/.env.localpnpm installNote: run dependency installation the root folder of the monorepo
docker-compose up firebase-emulatorsWait for: ✔ All emulators ready! It is now safe to connect your app.
cd ingest
pnpm emulatorsWait for: ✔ All emulators ready! It is now safe to connect your app.
Emulator UI: http://localhost:4000
Open new terminal:
cd ingest
pnpm emulator:seedSeeded messages are intentionally labeled as test data so they are clearly fake if they are viewed outside the emulator workflow.
Stop emulators (Ctrl+C), then restart. Data persists across restarts.
cd web
pnpm devMake sure to add your Google Maps API key to the NEXT_PUBLIC_GOOGLE_MAPS_API_KEY variable in web/.env.local.
- Firestore database with sample messages, sources, interest zones
- Firebase Authentication (Google Sign-In mocked)
- Mock external APIs (Gemini, Google Geocoding, Overpass, Cadastre)
- Emulator UI for data inspection
Run crawler (mocked):
cd ingest
pnpm crawl --source rayon-oborishte-bg --dry-runRun ingestion pipeline (mocked):
cd ingest
pnpm ingestReset data:
cd ingest
pnpm emulator:clear
pnpm emulator:seedRun the reseed commands after pulling changes to the seed fixtures so existing local emulator data picks up the latest warning text.
Emulators won't start: Install firebase-tools globally: pnpm add -g firebase-tools
Web app can't connect: Verify NEXT_PUBLIC_USE_FIREBASE_EMULATORS=true in web/.env.local
Empty Firestore UI: Navigate to http://localhost:4000/firestore/default/data?ns=demo-project
Mock APIs not working: Verify MOCK_*=true variables in ingest/.env.local
- Firebase Cloud Messaging has no emulator
- Firestore indexes are ignored
- All external API calls are mocked
For production setup, see production-setup.md.
For mock customization, see external-api-mocks.md.