How sharko2025/note-voice works
Note Cá Mập is a voice-first Android task and notes app backed by a FastAPI service. The main workflow records speech, queues it for upload, and the backend transcribes and parses it into normalized tasks or notes; users can then manage those results and reminders. The graph also covers typed task/note APIs, local caching, offline upload support, and reminder scheduling. Edges follow excerpts, source-index references, or API endpoint declarations; unsampled implementations and undocumented links are not inferred.
Main entry points: voice.py Voice endpoint · AppContainer.kt App services · ApiService.kt API client · main.py API application
Components 26
Android app
- Activity entry
android/app/src/main/java/com/sitpro/notevoice/MainActivity.kt - App shell
android/app/src/main/java/com/sitpro/notevoice/ui/AppShell.kt - Screen state
android/app/src/main/java/com/sitpro/notevoice/ui/MainViewModel.kt - Recording controller
android/app/src/main/java/com/sitpro/notevoice/ui/RecordController.kt - Audio capture
android/app/src/main/java/com/sitpro/notevoice/audio/Recorder.kt - Speech detection
android/app/src/main/java/com/sitpro/notevoice/audio/SilenceDetector.kt - App services
android/app/src/main/java/com/sitpro/notevoice/AppContainer.kt
Sync and reminders
- API client
android/app/src/main/java/com/sitpro/notevoice/api/ApiService.kt - Upload processor
android/app/src/main/java/com/sitpro/notevoice/sync/UploadProcessor.kt - Result routing
android/app/src/main/java/com/sitpro/notevoice/sync/ResultRouter.kt - Reminder scheduling
android/app/src/main/java/com/sitpro/notevoice/reminder/ReminderScheduler.kt - Reminder notifications
android/app/src/main/java/com/sitpro/notevoice/notify/ReminderNotifier.kt
Backend API
- API application
backend/app/main.py - Token authentication
backend/app/auth.py - Voice endpoint
backend/app/routers/voice.py - Task endpoints
backend/app/routers/tasks.py - Note endpoints
backend/app/routers/notes.py
Voice processing
- Voice workflow
backend/app/services/voice.py - Speech transcription
backend/app/services/stt.py - Task and note parser
backend/app/services/parser.py - Result normalization
backend/app/services/normalize.py
Data storage
- Local cache and queue
android/app/src/main/java/com/sitpro/notevoice/data/AppDatabase.kt - Database connection
backend/app/db.py - Task and note records
backend/app/models.py
Other components
- User
- OpenAI services
Connections 37
- User → Activity entry: uses
- Activity entry → App shell: shows
android/app/src/main/java/com/sitpro/notevoice/MainActivity.kt - Activity entry → Screen state: creates
android/app/src/main/java/com/sitpro/notevoice/MainActivity.kt - Activity entry → Recording controller: starts
android/app/src/main/java/com/sitpro/notevoice/MainActivity.kt - App shell → Screen state: observes
android/app/src/main/java/com/sitpro/notevoice/ui/AppShell.kt - Recording controller → Audio capture: captures audio
android/app/src/main/java/com/sitpro/notevoice/ui/RecordController.kt - Recording controller → Speech detection: detects speech
android/app/src/main/java/com/sitpro/notevoice/ui/RecordController.kt - Recording controller → App services: submits recording
android/app/src/main/java/com/sitpro/notevoice/ui/RecordController.kt - App services → Local cache and queue: stores uploads
android/app/src/main/java/com/sitpro/notevoice/AppContainer.kt - App services → API client: creates client
android/app/src/main/java/com/sitpro/notevoice/AppContainer.kt - App services → Upload processor: configures
android/app/src/main/java/com/sitpro/notevoice/AppContainer.kt - App services → Result routing: configures
android/app/src/main/java/com/sitpro/notevoice/AppContainer.kt - App services → Reminder scheduling: configures
android/app/src/main/java/com/sitpro/notevoice/AppContainer.kt - Reminder scheduling → Local cache and queue: reads reminders
android/app/src/main/java/com/sitpro/notevoice/reminder/ReminderScheduler.kt - Reminder scheduling → Reminder notifications: notifies
android/app/src/main/java/com/sitpro/notevoice/reminder/ReminderScheduler.kt - Upload processor → API client: uploads recording
android/app/src/main/java/com/sitpro/notevoice/sync/UploadProcessor.kt - API client → Voice endpoint: posts voice
android/app/src/main/java/com/sitpro/notevoice/api/ApiService.kt - API client → Task endpoints: calls task APIs
android/app/src/main/java/com/sitpro/notevoice/api/ApiService.kt - API client → Note endpoints: calls note APIs
android/app/src/main/java/com/sitpro/notevoice/api/ApiService.kt - API application → Token authentication: protects routes
backend/app/main.py - API application → Voice endpoint: registers
backend/app/main.py - API application → Task endpoints: registers
backend/app/main.py - API application → Note endpoints: registers
backend/app/main.py - Voice endpoint → Voice workflow: delegates
backend/app/routers/voice.py - Voice endpoint → Database connection: uses session
backend/app/routers/voice.py - Voice endpoint → Task and note parser: uses parser
backend/app/routers/voice.py - Voice endpoint → Speech transcription: uses transcription
backend/app/routers/voice.py - Voice endpoint → Task and note records: persists records
backend/app/routers/voice.py - Task endpoints → Database connection: queries
backend/app/routers/tasks.py - Task endpoints → Task and note records: reads and writes
backend/app/routers/tasks.py - Note endpoints → Database connection: uses session
backend/app/routers/notes.py - Note endpoints → Task and note records: reads and writes
backend/app/routers/notes.py - Voice workflow → Speech transcription: transcribes
backend/app/services/voice.py - Voice workflow → Task and note parser: parses transcript
backend/app/services/voice.py - Voice workflow → Result normalization: normalizes results
backend/app/services/voice.py - Speech transcription → OpenAI services: requests transcription
backend/app/services/stt.py - Task and note parser → OpenAI services: requests structured parse
backend/app/services/parser.py