- Google Gemini API: 15 requests/minute free tier
- Supabase: 500MB DB + 50MB storage + pgvector
- Expo: Free tier for development
- Rate Limiting: Built-in protection to stay within free limits
# Copy the environment template
cp apps/api/.env.example apps/api/.env
# Add your free API keys:
# - Google Gemini: https://makersuite.google.com/app/apikey
# - Supabase: https://supabase.com (create new project)# From project root
npm install
# Install mobile dependencies
cd apps/mobile && npm install
# Install API dependencies
cd ../api && npm install- Create Supabase project (free tier)
- Run the SQL from
apps/api/database/schema.sqlin Supabase SQL Editor - Enable Row Level Security (included in schema)
- Create storage bucket "mission-files"
# Terminal 1: Start API server
cd apps/api
npm run dev
# Terminal 2: Start Expo mobile app
cd apps/mobile
npx expo start- Intel Overlay - Camera → Real-time field extraction + confidence scoring
- Briefing Generation - 40-second cinematic briefings with priorities
- Meeting Debrief - Audio analysis → decisions + follow-ups + drafts
- Smart Actions - One-tap task/event creation from extracted intel
- Rate Limiting: 100 req/min with automatic retries
- Offline Queue: Actions saved when offline, synced when online
- Image Compression: Auto-resize to 1024px for faster processing
- Smart Caching: Briefings cached for 24 hours
- Fallback UI: Works even when APIs are down
mission-control/
├── apps/
│ ├── mobile/ # Expo React Native app
│ │ ├── src/features/ # Camera, Intel, Briefing, Debrief
│ │ ├── src/store/ # Zustand state management
│ │ └── app.json # Expo configuration
│ └── api/ # Node.js Fastify backend
│ ├── src/services/ # Gemini AI, Supabase DB
│ └── database/ # PostgreSQL schema
├── packages/
│ ├── shared-types/ # TypeScript interfaces
│ └── client-sdk/ # API client with offline support
└── package.json # Monorepo configuration
CameraCapturetakes photo- Image compressed and uploaded to Supabase storage
- Gemini Vision API extracts fields, risks, entities
IntelOverlayshows results with confidence scores- User selects actions → creates tasks/events
- User requests briefing from calendar/tasks
- Gemini Pro analyzes priorities + time windows
BriefingScreenshows cinematic 40s presentation- User accepts actions → synced to mission system
- Audio recorded and uploaded
- Gemini Pro analyzes transcript for decisions
MeetingDebriefshows decisions + follow-ups- One-tap create emails/tasks from analysis
- Color: Matrix green (#00FF88) on black background
- Typography: SF Pro Display + monospace for mission IDs
- Micro-interactions: Haptic feedback, scan lines, pulse animations
- Cinematic effects: Fade-ins, spring animations, progress rings
- Command Center: Active missions + quick actions
- Intel Capture: Camera with scanning overlay
- Briefing: Countdown timer + priority badges
- Debrief: Audio player + decision cards
- Dossier: Saved intelligence search
- 15 requests/minute → Built-in rate limiting
- 15 requests/day for Pro Vision → Smart fallback to text-only
- 30 characters/second for streaming → Progressive rendering
- 500MB database → Optimized schema + regular cleanup
- 50MB file storage → Image compression + size limits
- 2GB bandwidth/month → Caching + offline mode
- Unlimited development → No cost during build
- 100MB app size → Optimized assets + lazy loading
- API runs on
http://localhost:3001 - Expo app connects via local IP (update
EXPO_PUBLIC_API_URL) - Supabase handles remote data persistence
- Backend: Railway.app (free tier) or Vercel
- Mobile: TestFlight/Play Store (free publishing)
- Database: Supabase free tier (production ready)
- Open app → Grant camera permission
- Take photo of document → See Intel overlay
- Create actions → Check they appear in mission
- Generate briefing → Review 40s presentation
- Record meeting → Analyze for decisions
# Health check
curl http://localhost:3001/health
# Test briefing generation
curl -X POST http://localhost:3001/api/briefing \
-H "Content-Type: application/json" \
-d '{"priorities": ["urgent", "meetings"]}'- Camera permission: Clear app data or reset permissions
- API rate limits: Wait 60 seconds after hitting limits
- Image upload failures: Check image size <50MB
- Supabase connection: Verify URL and keys in .env
- Expo build errors: Clear node_modules and reinstall
- Images auto-compressed to stay under storage limits
- Requests queued when rate limited
- Offline mode when network unavailable
- Cached results reduce API calls
- WOW Rate: % users triggering 2+ WOW moments in 24h
- Activation: % completing first mission
- Retention: % returning within 7 days
- API Response Time: <3s for extractions
- Offline Recovery: % queued actions synced
- Error Rate: <5% failed requests
This gives you a fully functional MISSION CONTROL app that works entirely with free services. The core WOW moments are implemented with proper rate limiting, offline support, and fallbacks to ensure smooth operation within free tier constraints.