Ship your SwiftUI app in days, not weeks

The Ultimate SwiftUI Starter: Everything you need to turbocharge your app development. Including seamless logins, payments, paywalls, and insightful telemetrics

ShipThatAppApp.swift
OnboardingView.swift
Paywall3View.swift
struct ShipThatAppApp: App {
// MARK: - Initialization
init() {
configureTelemetry()
configureRevenueCat()
}
...

Get Started

Getting started

ShipThatApp is a production-ready SwiftUI boilerplate that saves you 50+ hours of setup. Auth, in-app purchases, analytics, and a full suite of AI features — including a built-in on-device + secure-cloud scanner — are already wired up on a modern stack (Swift 6, iOS 17+, @Observable, async/await). Clone it, drop in your keys, and ship.

Introduction

What's in the box and why it's built this way — start here to get the lay of the land.

Rename Project

Follow our step-by-step guide to transform ShipThatApp into your project.

Authentication Flow

Understand the inner workings of the user authentication flow.

In-App Purchases

Implement and manage in-app purchases with our ready-to-use system.

Analytics Integration

Learn about implementing analytics for insightful user tracking and events.

AI Features

Wire up ChatGPT, DALL·E, and Vision through a secure backend proxy that keeps your OpenAI keys off-device.

Dex Scanner

Scan anything and identify it with the hybrid on-device Vision plus cloud scanner, saved to a SwiftData Dex.

Discover how to leverage the full potential of the ShipThatApp boilerplate. Explore our detailed guides on setting up, customizing, and extending the code base to fit your needs.


Quick Start

Drop your own keys into a gitignored Config.xcconfig (copy the provided Config.Example.xcconfig template). Values like TD_APP_ID, RC_API_KEY, SUPABASE_URL, and SUPABASE_KEY flow through Info.plist and are read at runtime via Bundle.main.infoDictionary — no secrets are ever hardcoded in source. See Configurations for the full key list.

Navigation flows through LandingView and AppRouter: LandingView watches AuthManager.shared.currentSession and swaps between the sign-in stack (SignIn.swift) and the authenticated tab bar — no manual screen pushing. From there, explore OnboardingView, SettingsView, and the feature views.

Mimic the authentication flow found in AuthManager.swift using SignInViewModel to manage user input and authenticate via email/password or social providers.

Explore the PurchaseManager.swift to learn about product fetching and transaction handling. Then check the provided Paywall views to understand the purchase flows.

Dive into the app's analytics integration, following the patterns used in TelemetryClient calls to track user actions and events throughout the app.

By following this documentation along with the codebase, ShipThatApp should serve as a solid starting block for your next iOS adventure.

Happy coding! 🚀📱

Installing Dependencies

Follow these simple steps to include ShipThatApp in your existing SwiftUI project or start a new one from scratch.

git clone https://github.com/matious89pl/ShipThatApp.git
cd ShipThatApp

Integrate critical dependencies necessary for your app's analytics, in-app purchases, and authentication services.

Secrets stay out of the binary

Keys live in a gitignored Config.xcconfig, never in checked-in source. Copy Config.Example.xcconfig, fill in your values, and you're running. Your OpenAI keys never ship at all — every AI call is HMAC-signed and proxied through your backend. See Authentication and AI Chat.

Configuring the Boilerplate

Customize ShipThatApp to cater to your specific app needs with modular design and pre-configured services.

// ShipThatAppApp.swift

init() {
    configureTelemetry()
    configureRevenueCat()
    // Add your custom configurations
}

With minimal setup, you can replace default values to personalize your app's splash screens, user authentication methods, and more.

Customization Tips

Take advantage of ShipThatApp's modular architecture by plugging in your views, models, and services as needed.


Core Features

Authentication

Email/password, passwordless Magic Link, and Sign in with Apple on top of Supabase — plus App Store-compliant account deletion, all behind one @Observable AuthManager. See Authentication.

In-App Purchases

Subscriptions and one-time purchases via RevenueCat, with ready-made paywalls. See In-App Purchases.

Analytics

Track user behavior and app events with TelemetryDeck. See Analytics.

AI Features

Multi-turn and one-off ChatGPT, DALL·E image generation, and Vision analysis — every call HMAC-signed and routed through your backend proxy so OpenAI keys never ship in the app. See AI Chat, AI Image Generation, and AI Vision.

Dex Scanner

The flagship feature: point the camera at anything and get a structured "Dex entry" back. A hybrid two-pass identifier — Apple's on-device Vision for an instant, private, offline guess, then a secure cloud pass for the rich result — collected into a SwiftData Dex. See Dex Scanner.

Splash Screen

Tweak the first impression of your app with a customizable, state-driven splash screen. See Splash Screen.

Going Live

When you're ready, follow Shipping to the App Store and keep Troubleshooting handy.


Getting Help

Need a hand or have questions? We're here to help you navigate the development waters.

Submit an Issue

If you encounter any obstacles, please submit an issue on our GitHub page, and we'll address it promptly.

Join the Community

Become part of our growing community. Connect with us and other developers on Discord to share tips, ideas, and get support.

Previous
Introduction