Building Coffee Journal: A Local-First iOS Coffee Tracker
As a coffee enthusiast, I found myself constantly tweaking grind settings, water temperatures, and brew times—but forgetting what worked and what didn’t. After trying various tracking solutions, I decided to build my own: Coffee Journal, a minimal, local-first iOS app for tracking coffee brewing from grind to cup.
The Problem
Most coffee tracking apps either require internet connectivity, send data to external servers, or have cluttered interfaces that make quick logging tedious. I wanted something different: a privacy-focused, offline-first app with a minimal aesthetic that mirrors the focused ritual of brewing coffee itself.
The Solution
Coffee Journal captures the full brewing process—equipment, beans, parameters, and tasting notes—all stored locally on your device with optional iCloud sync.
Key Philosophy
Remember and improve your coffee brewing by tracking what works. Every cup is a learning opportunity.
Features
Equipment Management
Track your grinders and brew methods (V60, Aeropress, espresso machines) with custom configurations and settings.
Comprehensive Brew Logging
Record the complete brewing process:
- Grind settings and dose measurements
- Water temperature and brew time
- Yield and extraction details
- Photo documentation of each brew
Structured Tasting Notes
Capture both quantitative and qualitative assessments:
- 1-5 scale ratings for acidity, body, and sweetness
- SCA flavor wheel tags for precise descriptors
- Custom flavor notes
- Freeform observations
Apple Intelligence Integration
On-device machine learning extracts patterns from your brewing history and suggests optimal parameters for different coffees and methods.
Monochrome Design Philosophy
The entire interface uses a black-and-white aesthetic, making it e-ink friendly and reducing visual distractions during the brewing process.
Technical Stack
- Language: Swift 6.0 with modern concurrency features
- UI Framework: SwiftUI for declarative, responsive UI
- Persistence: Core Data with SwiftData for type-safe data management
- Cloud Sync: CloudKit for seamless cross-device synchronization
- ML/AI: Apple Intelligence running entirely on-device
- Platform: iOS 17+
Architecture Decisions
Local-First Approach
The app is built on a local-first architecture, ensuring all data stays on your device. iCloud sync via CloudKit provides seamless synchronization across iPhone and iPad without compromising privacy—everything stays in your personal iCloud account.
Privacy by Design
- All data stored locally on your device
- iCloud sync uses your personal iCloud account
- No data sent to external servers
- Apple Intelligence runs on-device only
- No analytics or tracking
Offline-First
Full functionality works without an internet connection. Whether you’re brewing at home or at a cabin in the woods, your coffee tracking never stops.
Development Journey
This project has been a great opportunity to explore modern iOS development patterns:
- SwiftData adoption: Leveraging the new SwiftData framework for cleaner Core Data management
- CloudKit integration: Implementing container configuration and conflict resolution
- On-device ML: Integrating Apple Intelligence for pattern recognition
- Local-first sync: Building a robust offline-first architecture
What’s Next
Current (v1): Personal use with core logging features v2: Bean inventory management and enhanced insights v3: Bluetooth scale integration and App Store release
Try It Yourself
The project is open source and available on GitHub. The README includes detailed build instructions for anyone wanting to build from source and customize for their own use.
View the live demo or check out the source code.
Note: This app is not yet available on the App Store. To use it, you must build from source using the instructions in the repository.