A workforce management iOS app for attendance tracking, clock in/out, leave requests, and HR services. I was working at ICTechnology Pty Ltd and contributed to TimeARK as an iOS Engineer.
Engineering
Technologies and frameworks used to build the iOS client.
Built entirely with SwiftUI, using declarative, state-driven UI components. All development and profiling done in Xcode.
Structured with MVVM on top of Clean Architecture, keeping Presentation, Domain, and Data layers cleanly separated and independently testable.
All API communication handled via Moya, providing a type-safe, enum-based abstraction over the network layer with clearly defined endpoint targets.
Combine for reactive data flow between ViewModels and views. async/await for structured concurrency in network requests and async operations.
Used CoreLocation to validate employee clock-in location against geofenced worksites — ensuring attendance is recorded only from authorised premises.
Integrated Push Notifications via APNs to alert employees of shift reminders, leave status updates, and HR announcements in real time.
Test-Driven Development (TDD) was the primary development approach. Unit tests written using XCTest, concentrated on the Data Layer (Repository and Data Source implementations) and ViewModels — achieving near 100% coverage on these layers. The layered architecture keeps each unit independently testable.
Structure
Clean Architecture principles — but streamlined. No dedicated Use Case layer; instead the Repository acts as the business logic boundary, keeping the architecture simple without sacrificing separation of concerns.
SwiftUI Views & ViewModels. Observes state from the Repository, handles UI events. No business logic.
Repository Protocol defines the contract. Local and Remote Repository concrete types implement it, delegating to their respective Data Sources.
Concrete implementations — Moya-backed remote API calls and local storage. Maps DTOs to domain models. Near 100% unit test coverage with XCTest.
Complete Stack
My Role
I was working at ICTechnology Pty Ltd as an iOS Engineer on the TimeARK project — responsible for building the native iOS client from the ground up. Key contributions included implementing the clock in/out flow, integrating CoreLocation for geofenced attendance validation, wiring the Moya networking layer, setting up Combine-based reactive state in ViewModels, integrating Push Notifications, and writing unit tests following TDD with XCTest — focused on Repository, Data Source, and ViewModel layers.
Distribution
The iOS app is published as an Unlisted App on the Apple App Store — not discoverable through search or browse, accessible only via a direct private link provided by the client organisation. This follows Apple's approved B2B distribution model.
TimeARK was developed with hands-on use of an AI coding agent throughout the process — not just for boilerplate, but as a genuine development companion.
CLAUDE.md files to guide the agent on project context — learning by doing.