How mulla759/speakez works
SpeakEz is a location-based anonymous voice-note app. A user records at a campus place; the app uploads the note, a queued worker transcribes and titles it, and the safety gate determines whether it can proceed to publication. Nearby listeners discover notes on the map, request a server-side distance unlock, and hear audio with a synchronized transcript; they can reply or react. The app also supports private journals, drafts, daily prompts, saved notes, and OTP sign-in. The graph follows documented capabilities; some unsampled wiring is represented only at its documented subsystem boundary.
Main entry points: api.ts API client · db.py Postgres and PostGIS · pipeline.py Transcription worker · main.py HTTP application
Components 24
Mobile app
- Map discovery
src/MapScreen.tsx - Record and review
app/record.tsx - Story playback
app/story/[id].tsx - Journal and prompts
app/journal.tsx - Saved notes
app/saved.tsx - Profile and sign-in
app/profile.tsx - API client
src/api.ts - Session management
src/session.ts
API and services
- HTTP application
api/app/main.py - Note endpoints
api/app/routes/notes.py - Map endpoints
api/app/routes/landmarks.py - Auth endpoints
api/app/routes/auth.py - Reaction endpoints
api/app/routes/reactions.py - Note and unlock rules
api/app/services/notes.py - Account auth
api/app/services/auth.py - Job queue
api/app/queue.py
Processing and publication
- Transcription worker
worker/pipeline.py - Safety review
api/app/services/safety.py - Scheduled publishing
api/app/services/publish.py
Data and media
- Postgres and PostGIS
api/app/db.py - Redis cache
api/app/cache.py - Audio storage
api/app/storage.py
Other components
- Campus user
- Email delivery
Connections 35
- Campus user → Map discovery: explores
- Campus user → Record and review: records
- Campus user → Journal and prompts: reviews privately
- Campus user → Story playback: listens nearby
- Campus user → Profile and sign-in: signs in
- Map discovery → API client: fetches map
- Record and review → API client: submits audio
- Story playback → API client: requests unlock
- Story playback → API client: saves reaction
- Journal and prompts → API client: loads journal
- Saved notes → API client: loads saved
- Profile and sign-in → Session management: manages session
- Session management → Auth endpoints: sends OTP requests
- API client → HTTP application: sends requests
- HTTP application → Note endpoints: dispatches notes
- HTTP application → Map endpoints: dispatches map
- HTTP application → Auth endpoints: dispatches auth
- HTTP application → Reaction endpoints: dispatches reactions
- Note endpoints → Note and unlock rules: applies note rules
- Note endpoints → Job queue: enqueues processing
- Map endpoints → Postgres and PostGIS: queries landmarks
- Map endpoints → Redis cache: caches map
- Note and unlock rules → Postgres and PostGIS: checks and stores notes
- Note and unlock rules → Audio storage: issues audio access
- Transcription worker → Job queue: consumes jobs
- Transcription worker → Audio storage: reads audio
- Transcription worker → Postgres and PostGIS: loads and updates notes
- Transcription worker → Safety review: checks transcript
- Safety review → Postgres and PostGIS: records verdict
- Scheduled publishing → Postgres and PostGIS: releases due notes
- Transcription worker → Scheduled publishing: schedules release
- Auth endpoints → Account auth: verifies account
- Account auth → Postgres and PostGIS: loads account
- Auth endpoints → Email delivery: sends OTP
- Reaction endpoints → Postgres and PostGIS: stores reactions