Overview
LaunchSwift is split into three main areas:
- Core (
ios/SwiftLaunch/Core/): config, networking, analytics, auth helpers, localization, storage helpers - Features (
ios/SwiftLaunch/Features/): app features such as Auth, AI, Payments, Feedback, Onboarding, Settings, Explore, and Home - UI (
ios/SwiftLaunch/UI/): reusable components and brand styling
MV (Observable) pattern
Section titled “MV (Observable) pattern”State is held in @Observable classes (not MVVM ViewModels):
@Observablefinal class FeatureState { var isLoading = false var error: Error? func load() async { /* ... */ }}Views own state via @State:
struct FeatureView: View { @State private var state = FeatureState() var body: some View { /* ... */ }}Feature modules
Section titled “Feature modules”Feature modules are organized under:
ios/SwiftLaunch/Features/<Feature>/ <Feature>State.swift Views/ Models/ Services/Examples in the current codebase:
ios/SwiftLaunch/Features/AI/AIState.swiftios/SwiftLaunch/Features/Auth/AuthState.swiftios/SwiftLaunch/Features/Payments/PaymentState.swiftios/SwiftLaunch/Features/Feedback/FeedbackState.swift
App shell and routing
Section titled “App shell and routing”The root shell is in:
ios/SwiftLaunch/App/LaunchSwiftApp.swiftios/SwiftLaunch/App/AppRouter.swiftios/SwiftLaunch/App/AppState.swift
This controls auth/onboarding gates and tab navigation.
Networking + streaming
Section titled “Networking + streaming”APIClient (ios/SwiftLaunch/Core/Networking/APIClient.swift) supports:
- request/response JSON
- SSE streaming
AI chat calls the backend proxy endpoints (/api/chat and /api/ai/chat) so provider keys stay on the server.