๐Ÿ› ๏ธ Technical Deep Dive

Exploring the architecture, development process, and engineering decisions behind Football Gather

Swift 6.1 SwiftUI MVVM iOS 18.0+ Open Source 378 Tests

๐Ÿ—๏ธ Architecture Overview

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.

๐Ÿ“ฑ App Layer

Contains the entry point and main WindowGroup. Handles app lifecycle and dependency injection at the composition root.

๐Ÿ  Use Cases

Independent feature modules implementing core functionality: Home, Gather, Team Selection, Player Management, and History.

๐Ÿ”ง Core Packages

Foundation modules with no dependencies: FoundationTools, UITools, and CoreModels providing shared utilities.

๐ŸŽฏ MVVM Pattern

Natural integration with SwiftUI, providing reactive UI updates and clean business logic separation.

Football Gather High-Level Architecture Diagram
High-level architecture diagram showing the modular package structure and dependencies

โšก Key Technical Decisions

SwiftUI for UI Implementation

Chosen to gain practical experience with the framework in a production environment while leveraging its declarative nature.

MVVM Architecture Pattern

Natural integration with SwiftUI's reactive programming model and data binding capabilities.

Swift Package Manager

Modular architecture with clear dependency boundaries and reusable components across the app.

UIKit for Player Selection

Strategic use of UIKit for complex drag & drop functionality in multi-sectioned lists where SwiftUI had limitations.

๐Ÿงช Testing Strategy

Comprehensive testing approach with unit tests, integration tests, and UI tests ensuring code quality and reliability.

378
Total Tests
301
Unit Tests
51
Integration Tests
26
UI Tests

๐Ÿ“Š Code Coverage

Core Packages

Package Coverage Executable Lines
CoreModels 100% 23
FoundationTools 100% 278

Use Cases

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.

๐Ÿ”„ Development Workflow

GitHub Actions CI/CD

Automated testing and deployment pipelines ensuring code quality on every commit.

Fastlane Automation

Streamlined build, test, and distribution processes to TestFlight and App Store.

Definition of Done

Comprehensive checklist including tests, accessibility, dark mode support, and zero known bugs.

Kanban Board

Public Trello board for transparent project management and feature tracking.

๐Ÿ“‹ Project Management Board

All stories and the product backlog are managed publicly on our Trello board, providing full transparency into the development process:

Football Gather Trello Kanban Board
Live view of our development board showing current sprint progress and backlog items
View Live Board on Trello

๐Ÿš€ Available Fastlane Commands

# 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

๐Ÿ“š Blog Articles

The development of Football Gather has been documented through a comprehensive blog series exploring different iOS architecture patterns and backend development techniques:

๐Ÿ›๏ธ Battle of the iOS Architecture Patterns

A complete series comparing different architectural approaches with practical implementations:

Model View Controller (MVC)

๐Ÿ“– Medium Article โ€ข ๐ŸŒ Personal Blog

Model-View-ViewModel (MVVM)

๐Ÿ“– Medium Article โ€ข ๐ŸŒ Personal Blog

Model View Presenter (MVP)

๐Ÿ“– Medium Article โ€ข ๐ŸŒ Personal Blog

Model View Presenter with Coordinators (MVP-C)

๐Ÿ“– Medium Article โ€ข ๐ŸŒ Personal Blog

View Interactor Presenter Entity Router (VIPER)

๐Ÿ“– Medium Article โ€ข ๐ŸŒ Personal Blog

View Interactor Presenter (VIP)

๐Ÿ“– Medium Article โ€ข ๐ŸŒ Personal Blog

โš™๏ธ Backend Development

Articles covering server-side Swift development with Vapor framework:

Using Vapor 3 and Fluent to create a REST API

๐Ÿ“– Medium Article โ€ข ๐ŸŒ Personal Blog

Migrating to Vapor 4

๐Ÿ“– Medium Article โ€ข ๐ŸŒ Personal Blog

๐Ÿ” Explore the Source Code

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