Skip to content

Modernize the template: @Observable architecture, reusable toolkit, and CI/CD pipeline#1

Merged
hoppsen merged 2 commits into
mainfrom
marcel/modernize-template
Jul 6, 2026
Merged

Modernize the template: @Observable architecture, reusable toolkit, and CI/CD pipeline#1
hoppsen merged 2 commits into
mainfrom
marcel/modernize-template

Conversation

@hoppsen

@hoppsen hoppsen commented Jul 6, 2026

Copy link
Copy Markdown
Owner

Summary

Brings the template up to current conventions and adds a complete build & release pipeline.

App architecture

  • Modern @Observable + async/await SwiftUI throughout — @State-owned view models,
    @Environment injection, // MARK:-organised view bodies. Files start at import (no headers).
  • New Settings + Support screens rooted at SettingsView: language, contact-support mail
    (prefilled with version/build), legal links, share sheet, and a version footer.
  • Home Screen quick-action bridge (AppDelegate/SceneDelegate → an @Observable service);
    the "Send Feedback" action opens the Support screen.

Reusable toolkit

  • Shared Components/, Extensions/, Utilities/, Models/: mail & share representables,
    a Safari view, a loading indicator, a keyboard-height publisher, SwiftUI availability backports,
    alert/dialog types, a typed UserDefaults wrapper, a lightweight DI container, an os.Logger
    wrapper, and view modifiers.

Tooling & CI/CD

  • fastlane lanes: build, test, deploy, calendar updateVersion, upload_metadata, plus
    match signing and setup / code-signing helpers, with staging and production schemes.
  • GitHub Actions: linting, staging → TestFlight builds, a dispatchable release pipeline, and an
    App Store release monitor.
  • Git hooks (pbxproj sort + per-file SwiftFormat/SwiftLint, commit-message & branch-name checks),
    SwiftFormat/SwiftLint config, and a CLAUDE.md contributor guide.

Notes

  • Builds clean under Swift 6 (iOS 17+); SwiftFormat and SwiftLint pass.
  • Org-specific values (team id, App Store Connect ids, signing repo, CI secrets)
    are placeholders marked # <- CHANGE — fill these in per project.

Replace the legacy About screen with a Settings/Support pair rooted at
SettingsView, add the shared Components/Extensions/Utilities/Models toolkit and
a Home Screen quick-action bridge (Send Feedback opens Support), all in modern
@observable + async/await SwiftUI style with no file headers or previews.
@hoppsen hoppsen self-assigned this Jul 6, 2026
…ines

Bring fastlane build/test/deploy/updateVersion/upload_metadata lanes, the
GitHub Actions build/releasing/releaseMonitor workflows, Match/Deliver/Plugin
configs, a Template Staging scheme, SwiftFormat/SwiftLint/fastlane version bumps, and a
`--header strip` SwiftFormat rule so file headers stay off automatically.
@hoppsen hoppsen force-pushed the marcel/modernize-template branch from d3fbd39 to 4d9f13c Compare July 6, 2026 05:23
@hoppsen hoppsen merged commit 786af71 into main Jul 6, 2026
3 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant