Link Search Menu Expand Document (external link)

Agile Brewing

AppIcon

Agile Brewing is an iOS, iPadOS and Mac Catalyst application for recording and hopefully improving your espresso shots.

Written in Swift 5.7 and SwiftUI 4, this project has a minimum OS requirement of the following:

  • iOS/iPadOS 15.5
  • macOS Monterey 12.4

To utilize all of the features available, please use iOS/iPadOS 16 or higher and macOS Venture 13.0 or higher.

Getting Support

Please go to the GitHub Issues page to submit any potential issues you are experiencing.

JSON Format

Agile Brewing saves all bean profiles, shots and shot templates as JSON files. If you use iCloud Drive it will save under ~/Library/Mobile\ Documents/iCloud\~Agile-Brewing/Documents on macOS and on iOS/iPad OS under the Files app at the path Skye-Design.Agile-Brewing

Inside of the root path, there are three sub-folders to correspond with each JSON type.

  • Skye-Design.Agile-Brewing/beans
  • Skye-Design.Agile-Brewing/shot_templates
  • Skye-Design.Agile-Brewing/shots

Examples of the JSONs

The following are examples of the JSON structure

Bean
{
  "id" : "CAB6B075-9F2C-4F32-910D-ECAD2AD6518E",
  "name" : "Example Bean Name",
  "origin" : "Example Origin Country",
  "roastDate" : 676602960,
  "roastDateEpoch" : 1655947003.8767362,
  "roaster" : "Example Roaster",
  "roastProfile" : "Light"
}
Shot Templates
{
  "brewTemp" : 205,
  "desiredRatio" : 2,
  "doseWeight" : 18,
  "id" : "CB195692-68B9-45DC-B6E3-AC96BA8C849E",
  "selectedFilter" : "",
  "tampWeight" : 30,
  "templateName" : "Example Templates",
  "usedCoffeeDistributionTool" : true,
  "usedPuckScreen" : true,
  "usedRDT" : true,
  "usedWDT" : true
}
Shots
{
  "appearanceRating" : 5,
  "aromaRating" : 5,
  "brewTemp" : 205,
  "cremaRating" : 5,
  "desiredRatio" : 2,
  "doseWeight" : 18,
  "grindSize" : 19,
  "groupHeadPreHeated" : true,
  "hasChanneling" : false,
  "id" : "820B31FF-7BBF-40B3-B927-3D85A8E9292E",
  "notes" : "Example Notes",
  "overallRating" : 5,
  "portafilterPreHeated" : true,
  "preInfusionTime" : 7,
  "puckConsistency" : "Dry",
  "resultingDrink" : "Espresso",
  "selectedBeanProfile" : {
    "id" : "CAB6B075-9F2C-4F32-910D-ECAD2AD6518E",
    "name" : "Example Bean Name",
    "origin" : "Example Origin Country",
    "roastDate" : 676602960,
    "roastDateEpoch" : 1655947003.8767362,
    "roaster" : "Example Roaster",
    "roastProfile" : "Light"
  },
  "selectedFilter" : "",
  "selectedNote1" : "Balanced",
  "selectedNote2" : "",
  "selectedNote3" : "",
  "selectedNote4" : "",
  "selectedNote5" : "",
  "selectedNote6" : "",
  "shotDate" : 678128713.73826003,
  "shotDateEpoch" : 1656435913.73826,
  "shotTime" : 23,
  "tampWeight" : 30,
  "tasteRating" : 5,
  "totalDissolvedSolids" : 0,
  "usedCoffeeDistributionTool" : true,
  "usedPuckScreen" : true,
  "usedRDT" : true,
  "usedWDT" : true,
  "yieldExtraction" : 0,
  "yieldWeight" : 36.0
}

Screenshots

This is the current beta UI

WelcomeScreen

BeanProfile

ShotTemplates-1

ShotTemplates-2

EspressoShot-1

EspressoShot-2

EspressoShot-3

EspressoShot-4

EspressoShot-5

ShotHistory-1

ShotHistory-2

ShotHistory-3

Settings-1

Settings-2

Settings-3