TimeTracker iOS App
Setup Instructions
Prerequisites
-
XcodeGen - Required to generate the Xcode project
# On macOS: brew install xcodegen # Or via npm: npm install -g xcodegen -
Xcode - For building the iOS app (macOS only)
Project Generation
After installing XcodeGen, generate the project:
cd ios/TimeTracker
xcodegen generate
This will create TimeTracker.xcodeproj in the ios/TimeTracker directory.
Configuration
Before building, configure the API base URL:
- Open
TimeTracker.xcodeprojin Xcode - Select the TimeTracker target
- Go to Info.plist
- Add or modify
API_BASE_URLwith your backend URL:- For development:
http://localhost:3001 - For production: Your actual API URL
- For development:
Building
Open the project in Xcode and build:
open ios/TimeTracker/TimeTracker.xcodeproj
Then select your target device/simulator and press Cmd+B to build.
Authentication Setup
- Configure your OIDC provider settings in the backend
- The iOS app uses ASWebAuthenticationSession for OAuth
- The callback URL scheme is
timetracker://oauth/callback
App Groups
For the widget to work with the main app, configure the App Group:
- Identifier:
group.com.timetracker.app - This is already configured in the project.yml
Dependencies
The project uses Swift Package Manager for dependencies:
- SQLite.swift - Local database
- KeychainAccess - Secure storage
Project Structure
TimeTracker/
├── TimeTrackerApp/ # App entry point
├── Core/
│ ├── Network/ # API client
│ ├── Auth/ # Authentication
│ └── Persistence/ # SQLite + sync
├── Features/
│ ├── Auth/ # Login
│ ├── Timer/ # Timer (core feature)
│ ├── TimeEntries/ # Time entries CRUD
│ ├── Projects/ # Projects CRUD
│ ├── Clients/ # Clients CRUD
│ └── Dashboard/ # Dashboard
├── Models/ # Data models
├── Shared/ # Extensions & components
└── Resources/ # Assets
TimeTrackerWidget/ # iOS Widget Extension