Exploring the architecture, development process, and engineering decisions behind Football Gather
Football Gather is built with a modular architecture leveraging Swift packages and modern iOS development practices. The app follows MVVM pattern with SwiftUI for a clean separation of concerns and maintainable codebase.
Contains the entry point and main WindowGroup. Handles app lifecycle and dependency injection at the composition root.
Independent feature modules implementing core functionality: Home, Gather, Team Selection, Player Management, and History.
Foundation modules with no dependencies: FoundationTools, UITools, and CoreModels providing shared utilities.
Natural integration with SwiftUI, providing reactive UI updates and clean business logic separation.
Chosen to gain practical experience with the framework in a production environment while leveraging its declarative nature.
Natural integration with SwiftUI's reactive programming model and data binding capabilities.
Modular architecture with clear dependency boundaries and reusable components across the app.
Strategic use of UIKit for complex drag & drop functionality in multi-sectioned lists where SwiftUI had limitations.
Comprehensive testing approach with unit tests, integration tests, and UI tests ensuring code quality and reliability.
Package | Coverage | Executable Lines |
---|---|---|
CoreModels | 100% | 23 |
FoundationTools | 100% | 278 |
Package | Coverage | Executable Lines |
---|---|---|
TeamSelection | 94.86% | 175 |
Gather | 99.18% | 486 |
History | 100% | 93 |
PlayerList | 100% | 149 |
PlayerDetails | 100% | 88 |
Home | 100% | 11 |
Note: Coverage metrics include only business logic files, excluding views.
Automated testing and deployment pipelines ensuring code quality on every commit.
Streamlined build, test, and distribution processes to TestFlight and App Store.
Comprehensive checklist including tests, accessibility, dark mode support, and zero known bugs.
Public Trello board for transparent project management and feature tracking.
All stories and the product backlog are managed publicly on our Trello board, providing full transparency into the development process:
# Running unit tests bundle exec fastlane ios ut # Running UI tests bundle exec fastlane ios ui # Taking screenshots bundle exec fastlane screenshots # Bumping versions bundle exec fastlane bump_versions
The development of Football Gather has been documented through a comprehensive blog series exploring different iOS architecture patterns and backend development techniques:
A complete series comparing different architectural approaches with practical implementations:
Articles covering server-side Swift development with Vapor framework:
Football Gather is completely open source. Dive into the code, contribute improvements, or use it as a learning resource for your own iOS projects.
View on GitHub