Skip to content

wuersch/kraftli-timers

Repository files navigation

Kraftli Timers

Platform Swift TestFlight Build Release Tag Last Commit Issues LOC LOC LOC

A native iOS and watchOS app for high-intensity interval training. Minimalistic, distraction-free workout timers for focused fitness sessions.

Features

iPhone

  • EMOM Timer - Interval-based workouts with automatic rep pacing
  • AMRAP Timer - Time-based rounds, track as many rounds as possible
  • Preset Management - Save, edit, delete, and reorder timer configurations
  • Workout Stats - Dashboard with charts, muscle group breakdown, and history
  • Exercise Library - 21 curated bodyweight exercises with form tips
  • Audio Feedback - Warning beeps, interval sounds, and completion cheer
  • Settings - Audio preferences, confetti toggle, animated launch screen

Apple Watch

  • Standalone Timers - Run EMOM and AMRAP workouts directly on Watch
  • Preset Editor - Create and edit presets with Digital Crown input
  • CloudKit Sync - Presets sync automatically between iPhone and Watch
  • Haptic Feedback - Wrist taps for interval transitions and warnings
  • Auto-Launch - Timer appears on Watch when started from iPhone

Requirements

  • iOS 26+ / watchOS 26+
  • Xcode 17+
  • Swift 6.2

Getting Started

  1. Clone the repository
  2. Open Kraftli Timers.xcodeproj in Xcode
  3. Build and run on simulator or device

Documentation

  • Scope - Current features, details, and UI specification
  • Backlog - Future features and ideas
  • Architecture - Data models, patterns, and components
  • ADRs - Architecture Decision Records

Project Structure

Kraftli Timers/
├── App/                          # Entry point and root navigation
├── Features/                     # Feature modules (Timer/, Presets/, Stats/)
├── Models/                       # SwiftData persistence models
├── Services/                     # Protocols + implementations
├── Components/                   # Reusable UI components
├── Modifiers/                    # SwiftUI view modifiers
├── Extensions/                   # Type extensions
└── Audio/                        # Sound files

Kraftli Timers Watch App/
├── App/                          # Watch app entry point
├── Features/                     # Timer and preset modules
├── Services/                     # Watch-specific services
├── Components/                   # Watch UI components
└── Modifiers/                    # Watch view modifiers

CloudKit Schema Deployment

When making schema changes (adding fields, record types, etc.):

  1. Changes are automatically applied to the Development CloudKit environment during Xcode builds
  2. TestFlight and App Store builds use Production - schema must be manually deployed
  3. Go to CloudKit Dashboard → Your Container → Schema → Deploy Schema Changes...
  4. Failure to deploy results in silent sync failures in production builds

Contributing

This is a learning project where educational value matters as much as working code. When contributing:

  1. Read through the documentation to understand patterns and conventions
  2. Follow existing code style and SwiftUI idioms
  3. Keep UI minimalistic - native components, no unnecessary features
  4. Test on iOS Simulator (iPhone 17 Pro recommended)

License

MIT License - see LICENSE file.

Credits

See ACKNOWLEDGEMENTS file.

About

Kraftli Timers is a native iOS fitness app built with SwiftUI for high-intensity, minimalistic workouts.

Topics

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors

Languages