iOS Swift 🔒 Unlisted App

TimeARK

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.

⚠️ Unlisted iOS App — Not searchable on the App Store. TimeARK iOS is distributed via a private Apple Unlisted App link, following Apple's B2B enterprise distribution model. Employees receive the install link directly from their organisation.
TimeArk
iOS & Android

Engineering

Tech Stack

Technologies and frameworks used to build the iOS client.

🎨
UI & Presentation

Built entirely with SwiftUI, using declarative, state-driven UI components. All development and profiling done in Xcode.

SwiftUI Xcode
🏛️
Architecture

Structured with MVVM on top of Clean Architecture, keeping Presentation, Domain, and Data layers cleanly separated and independently testable.

MVVM Clean Architecture
🌐
Networking

All API communication handled via Moya, providing a type-safe, enum-based abstraction over the network layer with clearly defined endpoint targets.

Moya REST API
Concurrency & Reactivity

Combine for reactive data flow between ViewModels and views. async/await for structured concurrency in network requests and async operations.

Combine async / await
📍
Location Services — CoreLocation

Used CoreLocation to validate employee clock-in location against geofenced worksites — ensuring attendance is recorded only from authorised premises.

CoreLocation Geofencing
🔔
Push Notifications

Integrated Push Notifications via APNs to alert employees of shift reminders, leave status updates, and HR announcements in real time.

Push Notifications APNs
🧪
Testing — TDD & Unit Tests

Test-Driven Development (TDD) was the primary development approach. Unit tests written using XCTest covering ViewModels, Use Cases, and Repository implementations. The Clean Architecture layering ensured each unit could be tested in full isolation.

XCTest TDD Unit Testing

Structure

Clean Architecture Layers

Dependencies only flow inward — the Domain layer has zero external dependencies, making it the most stable and fully unit-testable layer.

Presentation Layer

SwiftUI Views & ViewModels. Observes state from Domain, handles UI events. No business logic.

Domain Layer

Use Cases & Entities. Pure Swift — framework-independent. Fully covered by XCTest unit tests.

Data Layer

Repository implementations, Moya API services, CoreLocation integration. Maps DTOs to domain models.

Complete Stack

All Technologies

SwiftUI Xcode MVVM Clean Architecture Moya Combine async / await CoreLocation Geofencing Push Notifications XCTest TDD Unit Testing APNs REST API Unlisted App Distribution

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.

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.