A purpose-driven educational platform for boxers — delivering structured learning in financial literacy, personal development, and wellbeing. Endorsed by two-time world champion Billy Dib in partnership with the WBC.
Engineering
Technologies and frameworks used to build the iOS client.
Built with SwiftUI throughout, leveraging declarative views, state-driven updates, and native Apple design patterns. Developed and debugged entirely in Xcode.
Followed MVVM with Clean Architecture layering — separating Presentation, Domain, and Data concerns for long-term maintainability and testability.
API calls managed through Moya (built on Alamofire), providing a type-safe, protocol-oriented networking layer with clearly structured endpoint definitions.
Used Swift Combine for reactive data streams and state propagation. Adopted async/await for structured concurrency in network and data fetch operations.
Integrated AVKit / AVPlayer to stream and play in-app educational video content — course lessons and training material delivered as on-demand video.
Implemented Push Notifications via APNs to re-engage users with course reminders, content updates, and subscription alerts.
Applied Test-Driven Development (TDD) as a core practice. Unit tests written with XCTest, covering ViewModels, Use Cases, and Repository logic. The Clean Architecture layering made isolating units for testing straightforward and reliable.
Structure
The codebase is structured around Clean Architecture principles, ensuring each layer has a single responsibility and dependencies only point inward.
SwiftUI Views & ViewModels. Observes state, dispatches user events. No business logic.
Use Cases & Entities. Pure Swift — no framework dependencies. Fully unit-testable.
Repositories, Moya-backed API Services, local persistence. Maps DTOs to domain models.
Complete Stack
My Role
I was working at ICTechnology Pty Ltd as an iOS Engineer on the Boxwise project — responsible for building the native iOS app from the ground up using SwiftUI and Clean Architecture. Key responsibilities included implementing the video playback feature with AVPlayer, setting up the Moya networking layer, wiring Combine-based reactive state, writing unit tests following TDD, and integrating Push Notifications.