┌───────────────────────┐
│                       │
│                       │
│                       │
│                       │
│                       │
│                       │
│                       │
│                       │
│                       │
│                       │
│                       │
│                       │
│                       │
│                       │
│                       │
└───────────────────────┘
ipa-template
~ Ian Mattas
--[ repository ]------------------------------------------------------------

    URL      : https://github.com/imattas/ipa-template
    Language : Swift
    Status   : active
    Stars    : 0
    Updated  : 2026-06-11

Learn, create, and build apps for Apple devices using templates and docs.

────────────────────────────────────────────────────────────────────────────────

--[ ipa-template — Apple Platform App Templates ]--
build
A collection of production-ready scaffolding for every major Apple-platform
toolchain. Each template is a full, opinionated skeleton — architecture,
networking layer, storage, navigation, tests, docs, and CI wiring — not a
"hello world." Pick the one that matches your target, copy it, and start
building a real app on top of it.

Every template shares the same conventions so moving between them is easy:

- Modern concurrency — Swift 6 language mode, async/await, actors, and
  @MainActor isolation where appropriate.
- `@Observable` view models (iOS 17 / macOS 14+) with an inline note on the
  pre-iOS-17 ObservableObject / @Published fallback.
- A stubbed async networking layerAPIClient + Endpoint with a typed
  error enum and a worked async fetch example, behind a protocol so it's
  mockable.
- Wired-up tests — at least two stubbed unit tests per template so the test
  target exists from day one.
- Per-template `docs/`ARCHITECTURE.md, SETUP.md, and (where relevant)
  CONTRIBUTING.md.

--[ Templates ]--

Template             Language             Platform              Pattern
CI
Swift-UIKit          Swift                iOS / iPadOS          MVVM + DI
!build
Swift-SwiftUI        Swift                iOS / iPadOS / macOS  MVVM +
NavigationStack ro...  !build
ObjectiveC-UIKit     Objective-C          iOS / iPadOS          MVC
!build
ObjectiveCpp-Mixed   Objective-C++ / C++  iOS                   Pimpl bridge
(C++ core)       !build
Metal                Swift + Metal        iOS                   Renderer
(MTKViewDelegate)    !build
visionOS-RealityKit  Swift + RealityKit   visionOS              MVVM +
dual-scene             !build
watchOS-SwiftUI      Swift + WatchKit     watchOS               MVVM
!build
macOS-AppKit         Swift + AppKit       macOS                 MVVM
!build
C-Library            C (C11)              cross-platform        Static library
!build
CPlusPlus-Framework  C++ (C++17)          cross-platform        Framework /
library           !build


All 10 templates currently build green on macos-latest. They're built
 by a single matrix workflow
 (.github/workflows/build.yml
https://github.com/imattas/ipa-template/blob/main/.github/workflows/build.yml)
with **one
 independent job per template**, so a failure in one never blocks the others.
 The shared badge above reflects that workflow's latest run on main. See
 docs/CI.md https://github.com/imattas/ipa-template/blob/main/docs/CI.md for
how the per-template jobs and logs work.

--[ 📚 Learn it — the "Build Your Own App" course ]--

New to the repo? The tutorials course
https://github.com/imattas/ipa-template/blob/main/docs/tutorials/ walks you from
cloning a template to shipping a finished app on the App Store, in 15 hands-on
modules grounded in this repo's real code. Start at the
course index
https://github.com/imattas/ipa-template/blob/main/docs/tutorials/README.md, or
jump in:

- Module 01 — Getting Started https://github.com/imattas/ipa-template/blob/main/
docs/tutorials/01-getting-started.md
- Module 03 — Building Your First Feature https://github.com/imattas/ipa-templat
e/blob/main/docs/tutorials/03-your-first-feature.md
- Module 04 — The Networking Layer https://github.com/imattas/ipa-template/blob/
main/docs/tutorials/04-the-networking-layer.md
- Module 12 — Platform Deep Dives https://github.com/imattas/ipa-template/blob/m
ain/docs/tutorials/12-platform-deep-dives.md
- Module 15 — Capstone: Build a Complete App https://github.com/imattas/ipa-temp
late/blob/main/docs/tutorials/15-capstone-project.md

--[ Quick start ]--
-- sh --
# 1. Clone
git clone https://github.com/imattas/ipa-template.git
cd ipa-template

# 2. Pick a template and copy it out as the seed of your new app
cp -R templates/Swift-SwiftUI ~/Developer/MyNewApp
cd ~/Developer/MyNewApp

# 3. Open in Xcode (create a new App project and drag in the source groups,
#    or add the sources to an SPM/Xcode target — see the template's docs/SETUP.md)
open -a Xcode .
The C / C++ templates build and test from the command line directly:
-- sh --
cd templates/C-Library           && make test
cd templates/CPlusPlus-Framework && make test   # or: cmake -B build && ctest --test-dir build
--[ Repository layout ]--
ipa-template/
├── templates/             One directory per template (the scaffolds)
├── docs/                  Cross-cutting docs
│   ├── TEMPLATES.md       Overview of every template + when to use each
│   ├── COMPARISON.md      Swift vs ObjC vs SwiftUI tradeoffs
│   ├── CI.md              How the GitHub Actions pipeline works
│   └── tutorials/         "Build Your Own App" course (15 modules)
├── scripts/
│   └── ci-build.sh        Per-template build dispatcher (used by CI + locally)
├── .github/workflows/
│   └── build.yml          Matrix CI: one job per template
├── .gitignore
├── .editorconfig
└── README.md
--[ Deep dive ]--

- Build an app step by step → docs/tutorials/
https://github.com/imattas/ipa-template/blob/main/docs/tutorials/ (the course)
- Which template should I use? → docs/TEMPLATES.md
https://github.com/imattas/ipa-template/blob/main/docs/TEMPLATES.md
- Swift vs Objective-C vs SwiftUI tradeoffs → docs/COMPARISON.md
https://github.com/imattas/ipa-template/blob/main/docs/COMPARISON.md
- How CI compiles each template → docs/CI.md
https://github.com/imattas/ipa-template/blob/main/docs/CI.md

Each template also carries its own README.md and docs/ describing its
architecture, setup, and contribution guidelines.

--[ License ]--

Released under the MIT License
https://github.com/imattas/ipa-template/blob/main/LICENSE. Use these templates
freely as the
starting point for your own apps, commercial or otherwise.