Skip to content

radude89/footballgather-prod

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

268 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

📱 Football Gather App

FootballGather App Icon

Swift 6 Xcode 26.3

⬇️ Download

Download on the App Store

Get it on Google Play

Official Website

Visit our website at footballgather.app for more information.

🛠️ Requirements

  • minimum iOS 26.0

🔧 Tools

📖 Usage

Clone the repository and ensure you have the correct Xcode version installed:
git clone https://github.com/radude89/footballgather-prod.git

🚀 Running the App

  1. Open the project in Xcode:
    open FootballGather.xcodeproj
    
  2. Select a simulator or connected device from the scheme menu in Xcode's toolbar
  3. Select the FootballGather scheme
  4. Click the Run button (▶️) or press Cmd + R to build and run the app

🧪 Running Tests

To run the project or unit tests, use the FootballGather scheme:

  1. Select Product > Test from the menu bar, or
  2. Press Cmd + U to run the tests

To run the UI tests, use the UITests scheme:

  1. Select the UITests scheme from the scheme menu
  2. Select Product > Test from the menu bar, or
  3. Press Cmd + U to run the UI tests

🤖 Using Fastlane

For fastlane usage, please refer to this guide. Available commands:

# Running unit tests
bundle exec fastlane ut

# Running UI tests
bundle exec fastlane ui

# Taking snapshots
bundle exec fastlane screenshots

# Bumping versions
bundle exec fastlane bump_versions

📱 Screens

All screens

🎮 Demo

Demo

📝 Application Summary

Football Gather helps you record and track matches that you play with your friends.

Key features:

  • Player management
  • Customizable match countdown timer
  • Score tracking
  • Match history

📚 Blog Articles

Article series - Battle of the iOS Architecture Patterns:

Other connected articles:

✅ Definition of Done

  • Acceptance Tests created.
  • Unit Tests created - aiming for 100% code coverage.
  • Integration Tests created where needed.
  • UI tests for core journeys.
  • Accessibility support.
  • Dark mode support.
  • All tests are green locally.
  • Code integrated with main.
  • All tests are green on the CI tool.
  • No known bugs are introduced into the product.
  • No design / UI issues are introduced into the product.

📋 Kanban Board

All stories and the product backlog can be seen publicly here: https://trello.com/b/UTfCqxBK/football-gather.

Product Kanban

📘 Technical Notes

The architecture is modular and leverages Swift packages. The UI implementation uses MVVM architecture pattern with SwiftUI.
We adhere to the following engineering principles and best practices:

🏗️ App Structure

The app consists of the following components:

  • App - Contains the entry point of Football Gather and the WindowGroup that houses the MainView. It depends on the Home module.
  • Core Packages - Foundation modules with no dependencies: FoundationTools, UITools, and CoreModels.
  • Use Cases - Independent feature modules that implement the application's functionality.

Below, we present the high-level diagram of the project's packages:

Packages structure

Notes:

  • Composition root: app launch logic and the place where the dependencies are created.
    • AppLauncher: main function of the app, checks if the app has been ran from the test target or from the app target and initializes the App object.
    • FootballGatherApp: the app structure, that is implementing the SwiftUI protocol App. This is a type that represents the structure and behavior of the app.'
    • TestApp: a simplified version of the UI that is used when running test targets.
  • Home Use Case: contains the Home screen logic.
  • Gather Use Case: the main package of the application, that has the timer and score handling.
  • TeamSelection Use Case: this is the place where we select players and assign them teams.
  • PlayerDetails Use Case: we have here the information about the player, such as name, age or position.
  • PlayerList Use Case: represents the list of players.
  • History Use Case: your previous played gathers.
  • Core Packages: the tools for the project, having a lot of packages that depend on them.
    • FoundationTools: contains the core utils, helpers, extensions files.
    • UITools: is the package containing the helper files related to the application's UI.
    • CoreModels: this package contains the domain models of the app.

🔑 Key Technical Decisions

  1. SwiftUI for user interface implementation
  • Chosen to gain practical experience with the framework in a production environment
  1. MVVM architecture pattern for UI implementation
  • Natural integration with SwiftUI
  1. UIKit implementation for player selection
  • Implemented due to SwiftUI limitations with drag & drop functionality in multi-sectioned Lists

🧪 Testing approach

We use unit tests, integration tests and UI tests.

Snippets from April, 2022:

Test Distribution

Test Type Count
Unit Tests 301
Integration Tests 51
UI Tests 26
Total 378

Code Coverage

Package Coverage Executable Lines
Core Packages
CoreModels 100% 23
FoundationTools 100% 278
Use Cases
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.

🤝 Contributions & Support

Football Gather is developed as an open source project. I encourage everyone to contribute.
Please do make pull requests if you have suggestions or ideas of improvement.
Thanks!

👨‍💻 About the Author

Hi! I'm Radu Dan, a Staff iOS Engineer with over 13 years of experience in mobile development. I'm passionate about crafting high-quality iOS applications and sharing knowledge with the developer community.

🎯 Professional Background

  • Currently Staff iOS Engineer at Qonto
  • Previously Mobile Lead at Deloitte Digital Romania
  • Over 6 years of experience in fintech projects

🚀 Other Apps

Besides Football Gather, I've developed several other indie apps:

  • CarChum - Your friendly vehicle helper
  • n0chanc3 - A visually engaging word puzzle game

📱 Connect With Me

📄 License

Football Gather source code is released under the MIT license. See LICENSE for details.

About

This repo contains the source code for the Football Gather App

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors