For a first-time software engineer inheriting this repository
Last updated: 2026-06-29
This file is the one-stop reading path for understanding the entire repository and making safe edits.
If you need exhaustive file-by-file ownership, use the inventories in section 2. If you need exact backend endpoint behavior, use section 4 and section 5.
Read in this exact order:
README.mdAGENTS.mddocs/reference/repository-ultimate-engineering-bible.mddocs/contracts/native-speech-parity-anchor.mddocs/contracts/speech-workflow-contract.mddocs/reference/ios-file-inventory.mddocs/reference/android-file-inventory.mddocs/reference/web-file-inventory.mdThen open the files that match your target surface and feature (sections 2–4).
The following files are your canonical file-level indices. Use these when you need to know what any file owns:
docs/reference/ios-file-inventory.mddocs/reference/android-file-inventory.mddocs/reference/web-file-inventory.mdImportant: these inventories are complete by design and include generated artifacts, support scripts, tests, and resources. Do not edit generated artifacts manually (coverage outputs, build artifacts); regenerate instead.
ios/)Responsibility:
AIProxyServicePrimary subsystems:
SpeakTrueApp.swift, ContentView.swift, AuthGateView.swift, MainTabView.swiftTTSViewModel.swift, TextToSpeechView.swift, TTSCatSelectView.swift, VoiceModelSelectionView.swiftSTTViewModel.swift, SpeechToTextView.swiftSTSViewModel.swift, SpeechToSpeechView.swift, LiveVoiceSTSService.swift, RealtimeSTTService.swiftSoundboardView.swift, SoundboardViewModel.swift, SoundboardCacheManager.swift, SoundboardCacheIndex.swiftVoiceCloneViewModel.swift, VoiceCloneTabView.swift, PronunciationGlossary*SettingsView.swift, SettingsTabView.swift, UserSettings.swift, UserSettingsSyncService.swift, AIDataSharingAgreementService.swiftAuthService.swift, SupabaseClientProvider.swift, CloudStorageService.swift, StorageManager.swift, AudioPlayerService.swift, AudioRecorderService.swiftandroid/)Responsibility:
features/* with strict boundaries (ui, presentation, data)core/*core/network and repository layersPrimary subsystems:
app/SpeakTrueApp.kt, app/MainActivity.kt, ui/navigation/AppNavGraph.ktfeatures/tts/*features/stt/*features/sts/data/*, features/sts/presentation/STSViewModel.kt, features/sts/ui/STSScreen.ktfeatures/soundboard/*features/voiceclone/*features/settings/*, features/agreement/*core/audio, core/auth, core/network, core/storage, core/config, core/reliabilityweb/)Responsibility:
Primary subsystems:
web/marketing/index.html, web/marketing/scripts/*, web/marketing/styles/*, deployment metadata (_headers, _redirects, site.webmanifest)web/python-web-app/src/app.py, src/config.py, src/legacy_runtime.py, src/legacy_runtime_adapter.py, wsgi.pyweb/python-web-app/src/routes/*.py, web/python-web-app/src/services/*.pyweb/python-web-app/templates, static, testsAll edge endpoints are under backend/supabase/functions.
account-delete: delete user and user-owned resources in controlled server-side flow.billing-apple-syncbilling-apple-notificationsbilling-google-play-syncbilling-stripe-webhookShared billing policy logic: _shared/entitlements.ts, _shared/billing-entitlement-policy.ts, _shared/subscription-gating-config.ts, _shared/quotas.ts.
quota-status: read quota/usage envelope.user-settings-get: fetch settings + compatibility defaults.user-settings-update: patch-write settings.byok-resolve: fetch BYOK state.byok-upsert: persist BYOK state.tts-generate: core TTS contract validation, policy, provider execution, artifact return.voices-list: voice catalog with private/public filtering.models-list: model catalog and provider mapping.style-presets: style preset CRUD/read.pronunciation-dictionary: pronunciation rule CRUD.language-recommend: language recommendation payload.stt-transcribe: non-streaming STT endpoint.sts-near-realtime-session: opens near-realtime session.sts-realtime-session: opens real-time STS session.sts-live-voice-tts-session: live voice-to-speech STS session.sts-realtime-finalize: finalizes active or near-real-time STS session and returns final artifact.sts-live-interpreter-session: scaffold only.sts-live-interpreter-tts-session: scaffold only.soundboard-save-generated: persist generated clip metadata and storage links.soundboard-delete: delete clips + storage cleanup.clip-order-batch: persist drag/drop ordering and category placement.soundboard-clip-ingest: scaffold only.voice-clone-preflight: readiness validation before create.voice-clone-create: creates clone + provider metadata persistence.voice-clone-delete: delete clone + provider cleanup.bug-report-submit: ingest bug report payload.waitlist-signup: write-only waitlist capture with dedupe.For a machine-dense map of all files per function and test expectations, open:
docs/reference/backend-functions-deep-dive.mddocs/reference/backend-functions-detailed-map.mdUse this before any pull request.
Change these files:
backend/supabase/functions/tts-generate/*backend/supabase/functions/voices-list/*backend/supabase/functions/models-list/*backend/supabase/functions/style-presets/* if style defaults changedios/SpeakTrue/{TTSViewModel.swift,TextToSpeechView.swift,AIProxyService.swift,TTSCatSelectView.swift,VoiceModelSelectionView.swift}android/app/src/main/java/com/speaktrue/features/tts/{data,presentation,ui}/*web/python-web-app/src/services/tts_service.py, src/routes/tts.py, web templates if used in parity modebackend/supabase/functions/stt-transcribe/*backend/supabase/functions/sts-near-realtime-session/*backend/supabase/functions/sts-realtime-session/*backend/supabase/functions/sts-live-voice-tts-session/*backend/supabase/functions/sts-realtime-finalize/*ios/SpeakTrue/{STTViewModel.swift,STSViewModel.swift,SpeechToSpeechView.swift,SpeechToTextView.swift,RealtimeSTTService.swift,LiveVoiceSTSService.swift,AIProxyService.swift}android/app/src/main/java/com/speaktrue/features/stt/*android/app/src/main/java/com/speaktrue/features/sts/data/*android/app/src/main/java/com/speaktrue/features/sts/presentation/STSViewModel.ktweb/python-web-app/src/routes/stt.pyweb/python-web-app/src/services/speech_service.pyweb/python-web-app/static/js/index_stt.jsweb/python-web-app/static/js/index_sts_live_voice.jsbackend/supabase/functions/soundboard-save-generated/*backend/supabase/functions/soundboard-delete/*backend/supabase/functions/clip-order-batch/*ios/SpeakTrue/{SoundboardView.swift,SoundboardViewModel.swift,SoundboardCacheManager.swift,SoundboardCacheIndex.swift,AIProxyService.swift}android/app/src/main/java/com/speaktrue/features/soundboard/*web/python-web-app/src/routes/soundboard.pyweb/python-web-app/src/services/soundboard_service.pyweb/python-web-app/static/js/index_soundboard.jsbackend/supabase/functions/voice-clone-preflight/*backend/supabase/functions/voice-clone-create/*backend/supabase/functions/voice-clone-delete/*backend/supabase/functions/byok-* if BYOK influences gatingios/SpeakTrue/{VoiceCloneTabView.swift,VoiceCloneViewModel.swift,AIDataSharingAgreementService.swift,AIDataSharingConsent*}android/app/src/main/java/com/speaktrue/features/voiceclone/*web/python-web-app/src/routes/voice_clone.pyweb/python-web-app/src/services/voice_clone_service.pybackend/supabase/functions/user-settings-get/*backend/supabase/functions/user-settings-update/*backend/supabase/functions/quota-status/*backend/supabase/migrations/* if schema or default changesios/SpeakTrue/{UserSettings.swift,UserSettingsSyncService.swift,SettingsView.swift,SettingsTabView.swift,AIDataSharing*}android/app/src/main/java/com/speaktrue/features/settings/*web/python-web-app/src/routes/settings.pyweb/python-web-app/src/services/user_settings_service.pybackend/supabase/functions/<new_name>/.index.tshandler.tshandler_test.ts, validation tests where applicable)backend/supabase/migrations.bash scripts/coverage_backend_contracts.shbash scripts/regression_migration_paths.shdocs/ops/*.ios/SpeakTrueTests.ios/Config/App.Debug.xcconfigios/Config/App.Release.xcconfigios/SpeakTrue.entitlementsios/SpeakTrue/Info.plist./gradlew -p android :app:compileDebugKotlin./gradlew -p android :app:testDebugUnitTest./gradlew -p android :app:lintDebug./gradlew -p android :app:bundleReleasedocs/ops/ANDROID_PLAY_RELEASE_CHECKLIST.md.docs/ops/CLOUDFLARE_PAGES_DEPLOY.md.python3 -m pytest web/python-web-app/testspython-web-app entrypoint (wsgi:app / gunicorn)web/python-web-app/src/legacy_runtime_adapter.py and impacted src/routes/*, src/services/*.When a bug report arrives:
docs/reference/backend-functions-deep-dive.md + function handler + tests)backend/supabase/migrations.When editing behavior:
You do not need to open every file manually if you stay in these ordered links:
docs/reference/repository-extreme-technical-atlas.mddocs/reference/repository-ultimate-engineering-bible.mddocs/reference/repository-full-deep-reference.mddocs/reference/repository-onboarding-reference.mddocs/reference/repository-operator-manual.mddocs/reference/ios-file-inventory.mddocs/reference/android-file-inventory.mddocs/reference/web-file-inventory.mddocs/reference/backend-functions-detailed-map.mddocs/reference/backend-functions-deep-dive.md