iOS app that displays live sports events with real-time updates.
- Token-based authentication (login/logout)
- Headlines carousel with auto-scroll (5s interval)
- Live games list with elapsed time updated every second
- Automatic data polling every 10 seconds
- Odds display for headline events
- Offline detection with automatic retry
- Game phase status for non-live events
- UIKit with programmatic views (ViewCode)
- MVVM — ViewControllers bind to ViewModels via Combine
- Protocol-Oriented — abstractions for networking (
APIClient,APIRoute) and reachability (Reachable) - Dependency Injection — dependencies provided through initializers
- Combine — reactive state, timers, and connectivity monitoring
LiveBoard/
├── App/ # AppDelegate, SceneDelegate
├── Core/
│ ├── Extensions/
│ ├── Networking/ # API client, routes, error handling
│ ├── Protocols/ # ViewCodable, Reachable
│ └── Theme/ # Colors, layout, metrics
└── Scenes/
├── Login/ # Login screen (View, ViewController, ViewModel)
└── LiveGames/ # Main screen, cells, and models
- iOS 15.0+
- Xcode 15+
- Swift 5.9+