A modern, high-performance football fans application built using Swift and UIKit. Moving beyond Storyboards, this project implements a full Programmatic UI approach combined with the MVVM Architecture to ensure scalability, maintainability, and smooth user experience.
The project is structured using the MVVM (Model-View-ViewModel) pattern, separating business logic from UI components for cleaner code and better testability.
- Core (Controllers): Managing the lifecycle of views (
TeamsVC,PlayersVC,FavoritesVC). - ViewModels: Handling data preparation and business rules (The "Brain" of the app).
- Models: Defining data structures for
TeamandPlayerobjects. - Managers: Centralized services like
FavoritesManagerandNotificationCenterextensions. - Views: Reusable custom UI components and cells built entirely in code.
- Resources: Managing assets, colors, and localizations.
- Programmatic UI: 100% built with code using Auto Layout (No Storyboards/XIBs).
- Advanced CollectionViews: Utilizing
UICollectionViewDiffableDataSourcefor efficient, crash-free data management and native animations. - Optimized Image Caching: Integrated Kingfisher with
DownsamplingImageProcessorand shadow rasterization to maintain a buttery-smooth 60 FPS scrolling. - Local Persistence: Custom management for favorite players using lightweight local storage.
- Reactive UI Updates: Leveraging
NotificationCenterto synchronize state across multiple tabs (e.g., updating Favorites when a player is added). - Audio Integration: Seamlessly playing team chants using AVFoundation.
Browse through legendary football clubs and feel the stadium atmosphere with high-quality chants.
| Team List | Audio Player |
|---|---|
![]() |
![]() |
Modern grid layouts to view player details and manage your personal favorite squad.
| Player Squad | Favorite Players |
|---|---|
![]() |
![]() |
- Clone the repo:
git clone [https://github.com/hashimsaffarini/FootballChants.git](https://github.com/hashimsaffarini/FootballChants.git)



