Private AI-assisted property inspection MVP: FastAPI backend, Expo mobile field app, Vite admin frontend.
- Expo / React Native, React 19, FastAPI, SQLite, Vite, TypeScript, Verba AI, Cloudflare Tunnel
- AI provider code stays in
backend/app/services/ai; routes stay thin. - SQLite source of truth:
backend/data/workbase.db. - Mobile is the fast field tool; frontend is the admin/dashboard surface.
- Backend env: copy
backend/.env.exampletobackend/.env. - Mobile env: copy
mobile/.env.exampletomobile/.env.local. - Local AI default:
AI_PROVIDER=mock. - Live Verba needs:
AI_PROVIDER=verba,VERBA_API_KEY,VERBA_CAPTURE_CHARACTER,VERBA_REPORT_CHARACTER. - Tunnel script writes
PUBLIC_API_BASE_URL,WORKBASE_API_TOKEN,EXPO_PUBLIC_API_BASE_URL,EXPO_PUBLIC_WORKBASE_API_TOKEN.
.\scripts\start-cloudflare-tunnel.ps1| Stack | Command |
|---|---|
| Backend install | cd backend; .\.venv\Scripts\Activate.ps1; pip install -r requirements.txt |
| Backend run | cd backend; .\.venv\Scripts\Activate.ps1; python -m uvicorn app.main:app --reload --host 127.0.0.1 --port 8000 |
| Backend test | cd backend; .\.venv\Scripts\python.exe -m pytest -q |
| Frontend install | cd frontend; npm install |
| Frontend run | cd frontend; npm run dev |
| Frontend typecheck | cd frontend; npm run lint |
| Mobile install | cd mobile; npm install |
| Mobile run | cd mobile; npm run start -- --clear |
| Mobile typecheck | cd mobile; npm run typecheck |
| Mobile optimistic test | cd mobile; node scripts\test-optimistic-inspections.js |
| Tunnel start | .\scripts\start-cloudflare-tunnel.ps1 |
| Tunnel validate | .\scripts\validate-tunnel-syntax.ps1 |
cd backend
.\.venv\Scripts\python.exe reset_db.py --yes