Skip to content

jodli/CoffeeShotTimer

Repository files navigation

Coffee Shot Timer

Coffee Shot Timer Icon

Espresso timer with analytics for home baristas

Overview

Coffee Shot Timer is a precision Android app designed specifically for espresso machine enthusiasts who want to systematically improve their brewing skills. The app combines intelligent timing with detailed data capture to help you achieve consistent, dialed-in espresso extractions.

Features

  • Precision timer with clear visual feedback
  • Brew ratio tracking with intuitive sliders; supports single-shot baskets (down to 5 g)
  • Shot logging and analysis: times, grinder settings, tasting notes, and trends over time
  • Bean management with roast dates, freshness indicators, and attachable package photos
  • Grinder setup tailored to your equipment; record and compare grinder settings
  • Simple onboarding and streamlined navigation; About screen and in-app feedback
  • Built for daily use: 100% offline, autosave drafts, and a fast, stress-free UI

Screenshots

Main Screen Light Mode Shot History Shot Details

Shot Analysis Filter Shots Bean Management Grinder Settings Bean Package Photo

Perfect For

  • ☕ Espresso machine or manual espresso maker owners
  • 🎯 Coffee enthusiasts wanting reproducible results
  • 📚 Systematic learners who like data-driven improvement
  • 🔧 Baristas looking to refine their technique
  • 🏠 Home coffee enthusiasts serious about quality

☕ Support the Project

Love Coffee Shot Timer? Consider supporting its development!

Buy Me A Coffee

Every coffee fuels late-night coding sessions and exciting new features like pressure profiling and advanced analytics!

Technology Stack

This is an Android application built with:

  • Kotlin — primary programming language
  • Android Gradle Plugin — build system
  • Hilt — dependency injection
  • Room Database — local data storage
  • Detekt — static code analysis

Getting Started

Prerequisites

  • Android Studio
  • Android SDK
  • Gradle

Building the Project

  1. Clone the repository:
git clone https://github.com/jodli/CoffeeShotTimer.git
cd CoffeeShotTimer
  1. Open the project in Android Studio.

  2. Build the project:

./gradlew build
  1. Run on a device or emulator:
./gradlew installDevDebug

Code Quality & Static Analysis

The project uses Detekt for static code analysis to maintain code quality:

Running Detekt

# Run detekt analysis with Java 21
JAVA_HOME=/usr/lib/jvm/java-21-openjdk ./gradlew detekt

# Or with default Java (requires Java 21+)
./gradlew detekt

Detekt Reports

Detekt generates multiple report formats:

  • HTML Report: app/build/reports/detekt/detekt.html - Human-readable report for local development
  • XML Report: app/build/reports/detekt/detekt.xml - For CI/CD integration
  • SARIF Report: app/build/reports/detekt/detekt.sarif - GitHub Security integration

Baseline Management

The project uses a baseline file to track existing issues and prevent regressions:

# Update the baseline (suppresses existing issues)
./gradlew detektBaseline

Note: Only regenerate the baseline when necessary, as it suppresses existing issues. New code should meet quality standards without baseline suppression.

Release Build

The project includes configuration for release builds. A pre-built release is available in app/release/app-release.aab.

Project Structure

app/src/main/           # Main application source code
app/src/test/           # Unit tests
app/src/androidTest/    # Instrumentation tests
docs/                   # Documentation and screenshots
gradle/                 # Gradle configuration

Development Workflow

This project uses an automated CI/CD pipeline with three deployment tracks and integrated code quality checks:

🛠️ Code Quality Pipeline

Every pull request and push triggers:

  1. Build & Test: Compilation and unit tests
  2. Android Lint: Built-in Android code analysis
  3. Detekt Analysis: Kotlin static code analysis with SARIF upload to GitHub Security

Code quality reports are available as:

  • GitHub Actions artifacts (HTML reports)
  • GitHub Security tab (vulnerabilities and code quality issues)
  • PR checks (blocking on failure)

🎯 Deployment Tracks

Trigger Track Audience Purpose
Manual dispatch (any branch) Internal Development team Test risky changes
Push to main (app changes) Beta (Open Testing) Public beta users Public testing
Version tag (v*) Production All users Live releases

Contributing

Contributions are welcome! Please follow the development workflow above. For major changes, please open an issue first to discuss what you would like to change.

License

This project is licensed under the terms found in the LICENSE file.

Philosophy

Coffee Shot Timer transforms espresso making from guesswork into precise craftsmanship—without any stress. The app supports you in achieving consistent espresso quality and developing your personal taste preferences through a structured, data-driven approach.


Made with ☕ for the home barista community