Local-first notes + workflows application built as a mobile-first Expo app with a Flask backend.
- Mobile + Web preview: React Native + Expo
- Local DB (mobile): expo-sqlite
- Cloud DB: Supabase (PostgreSQL + pgvector)
- Auth: Supabase Auth (email/password)
- Backend API: Flask
- AI workflow engine: Gemini 1.5 Flash
- Local STT target: Whisper Tiny (placeholder wired in Note Editor)
mobile/— primary client (native + web preview)backend/— Flask API, Gemini workflow generation, and static web servingfrontend/— legacy web package (CRACO removed from scripts)docs/— architecture and contribution docsscripts/— Python tooling for model manifests, dummy fixtures, and validation
cp .env.example .env
cd backend
pip3 install --user -r requirements.txt
python3 server.pyPreferred local setup:
- Use the repo-root
.envcreated from.env.example. backend/.envis still supported for legacy local setups..envandbackend/.envare gitignored and should never be committed.
Required for the root .env example:
superbase_apisuperbase_pub_keygemini_api
Optional for backend writes to Supabase:
superbase_secret_key
Set env vars in your shell:
export EXPO_PUBLIC_SUPABASE_URL="https://your-project.supabase.co"
export EXPO_PUBLIC_SUPABASE_ANON_KEY="your_anon_key"
export EXPO_PUBLIC_API_URL="http://127.0.0.1:8001"Run:
cd mobile
npm install
npm run webIf your phone is connected by USB and must use localhost:
adb devices
adb reverse tcp:8081 tcp:8081
adb reverse tcp:8001 tcp:8001On phone:
- Expo web preview:
http://127.0.0.1:8081 - Backend health:
http://127.0.0.1:8001/api/health
- Top navigation:
Notes,Workflows - Top-right profile icon: opens
Profile & Settings - Profile screen: Login / Registration with Supabase Auth
- Local data isolation: SQLite
notesandworkflowsare scoped byuser_id - Voice Note button in editor inserts a local STT placeholder block
userstable (local mirror)notes.user_idforeign key ->users.idworkflows.user_idforeign key ->users.id
Using EAS Build:
cd mobile
npm install -g eas-cli
eas login
eas build:configure
eas build -p android --profile previewAfter build finishes, download APK from the EAS build URL.
Store your local models under:
mobile/models/ttsmobile/models/sttmobile/models/vision
Bootstrap the edge-model workspace and dummy fixtures:
.venv/bin/python scripts/generate_edge_model_assets.pyValidate the backend and model workspace:
PYTEST_DISABLE_PLUGIN_AUTOLOAD=1 .venv/bin/python -m pytest tests/test_backend_server.py tests/test_edge_model_assets.pyCONTRIBUTING.mdCODE_OF_CONDUCT.mdSECURITY.mdRULES.mddocs/ARCHITECTURE.mddocs/UI_PARITY.mddocs/EDGE_MODEL_MATRIX.mddocs/NOTEBOOK_LLM_GUIDE.mddocs/PROFILING.md