A clean, testable SwiftUI base that lets you move.

    MVVM, CompositionRoot DI, protocol-oriented design, and async/await, with Supabase, RevenueCat, and OpenRouter ready on day one.

    Why developers pick it

    • Testable architecture with view models that have no UIKit dependencies
    • CompositionRoot dependency injection, no global singletons
    • Protocol-oriented, easy to mock and swap implementations
    • Design tokens and themes for consistent UI
    • Streaming AI via OpenRouter with typed clients

    Architecture and testing

    Every module follows MVVM with protocol-based dependencies. View models are testable without UIKit. The CompositionRoot handles wiring at startup. Networking, storage, and AI clients are swappable through protocols.

    Networking module

    protocol NetworkClient {
      func request<T>(...) async throws -> T
    }
    
    class ProductionNetworkClient: NetworkClient {
      // Real implementation
    }
    View full docs →

    Architecture overview

    // CompositionRoot.swift
    struct Dependencies {
      let networkClient: NetworkClient
      let authService: AuthService
      let storageManager: StorageManager
    }
    View full docs →

    Minutes to first run

    1

    Clone and open

    Git clone, open in Xcode, pods install if needed.

    2

    Add your keys

    Set Supabase, RevenueCat, and OpenRouter credentials in config.

    3

    Build and run

    Hit Cmd+R. Auth, chat, and subscriptions work immediately.

    Production-ready screens

    Clean home screen architecture

    MVVM structure

    AI streaming implementation

    Typed AI client

    Settings with dependency injection

    Protocol-based

    Ready to build on a solid foundation?

    Start with testable architecture, protocol-based design, and integrations that work.

    Get the boilerplate