SpeakTrue

Monorepo Migration Inventory

Last updated: 2026-04-07

Status

Completed historical migration record. The repository now uses the target ios/, android/, web/, backend/, and docs/ structure described below. Current paths in README.md, AGENTS.md, and source-controlled workflows are authoritative when they differ from this pre-move inventory.

Objective

Record the source → destination map used for the completed structural move.

Implemented target structure

/ios
/android
/web
  /marketing
  /python-web-app
/backend
  /supabase
/docs

Source → Destination map

Current Path Target Path Notes
SpeakTrue/ ios/SpeakTrue/ iOS app source files
SpeakTrue.xcodeproj/ ios/SpeakTrue.xcodeproj/ update xcodebuild paths
SpeakTrueTests/ ios/SpeakTrueTests/ iOS test target
SpeakTrueUITests/ ios/SpeakTrueUITests/ iOS UI tests
Config/ ios/Config/ xcconfig files
SpeakTrueAndroid/ android/ active Android app
SpeakTrue_Android/ android/planning-archive/ Android planning docs only
web/ web/marketing/ static landing + callback pages
SpeakTrueWeb/ web/python-web-app/ legacy Flask app
supabase/ backend/supabase/ migrations/functions/config

Components that should stay at repo root

High-risk items

  1. Path-sensitive build commands
    • iOS commands currently assume SpeakTrue.xcodeproj at root.
    • Android scripts may assume SpeakTrueAndroid at root.
    • Supabase commands assume supabase/ at root.
  2. Legacy web secrets/artifacts
    • SpeakTrueWeb/e-dragon-425501-v6-0b33546cb1ae.json is a credential artifact pattern and must be treated as sensitive.
    • SpeakTrueWeb/__pycache__/, src/**/__pycache__/, and .DS_Store files should not be tracked.
  3. Dual Android directories
    • SpeakTrueAndroid (code) and SpeakTrue_Android (planning docs) can be confused during migration; keep explicit mapping.

Validation checklist after filesystem move

  1. iOS build path works:
    • xcodebuild -project ios/SpeakTrue.xcodeproj -scheme SpeakTrue -destination 'generic/platform=iOS Simulator' build
  2. Android unit tests path works:
    • ./android/gradlew -p android :app:testDebugUnitTest
  3. Legacy Python app import path works:
    • python -c "import sys; sys.path.append('web/python-web-app'); import src.app; print('ok')"
  4. Supabase function checks path works:
    • deno check backend/supabase/functions/waitlist-signup/index.ts

Known follow-up updates required

Migration telemetry contract (OBS-01)

Migration-critical edge paths emit structured key-value telemetry for operational dashboards and incident triage.

These keys intentionally align with provider telemetry conventions used during migration rollout and rollback diagnostics.

Execution rule

When executing migration, use git mv for all folder moves to preserve history and improve diffs.