A cross-platform brewing helper app for homebrewers. Plan your brew with live calculations for OG, IBU, and EBC, then log your brewing process with notes and photos.
Note: The app UI is in Danish, as it's primarily built for Danish homebrewers.
- Beer Style Selection — Choose beer styles with typical parameter ranges
- Malt Management — Autocomplete with predefined malts, EBC suggestions, percentage calculations
- Hop Management — Autocomplete with predefined hops, alpha acid suggestions, per-hop IBU contribution
- Miscellaneous Ingredients — predefined items (Irish Moss, lactose, spices, etc.) with usage info
- Yeast Configuration — Top/bottom fermenting selection, package count, fermentation temperature
- Live Calculations:
- Original Gravity (OG) from grain bill and volume
- IBU using the Tinseth formula
- Beer color (EBC) using the Morey equation with visual color swatch
- Beer Naming — Name and describe your brew
- Final Gravity Input — With calculated ABV and attenuation percentage
- Brewing Log Entries — Timestamped notes with optional measurements (temperature, SG, pH)
- Photo Documentation — Add photos from camera or gallery
- PDF Export — Generate a complete brewing report
- Session state automatically saved to device storage
- Resume your brewing session after closing the app
- Framework: Expo SDK 54 with React Native 0.81
- Language: TypeScript 5.9
- Routing: Expo Router 6
- Styling: NativeWind 4 (Tailwind CSS for React Native)
- State Management: Zustand 5 with AsyncStorage persistence
- Package Manager: Bun
- Bun (v1.0 or later)
- Node.js (v18 or later, for Expo CLI)
- For Android development: Android SDK with an emulator or physical device
- For iOS development: Xcode (macOS only)
# Clone the repository
git clone <repository-url>
cd bryg-hjaelperen
# Install dependencies
bun install# Start for web (primary development target)
bun run web
# Start for Android
bun run android
# Start for iOS (macOS only)
bun run ios
# Start Expo dev server (choose platform interactively)
bun run startbryg-hjaelperen/
├── app/ # Expo Router pages
│ ├── _layout.tsx # Root layout (Stack navigator)
│ ├── (tabs)/ # Tab navigator group
│ │ ├── _layout.tsx # Tab layout
│ │ ├── index.tsx # Setup tab (Opsætning)
│ │ └── log.tsx # Log tab
│ └── modal/
│ └── ingredient-info.tsx # Ingredient info modal
├── src/
│ ├── components/
│ │ ├── common/ # Shared components
│ │ ├── setup/ # Setup tab components
│ │ └── log/ # Log tab components
│ ├── data/ # Predefined ingredient data (JSON)
│ ├── store/ # Zustand stores
│ ├── types/ # TypeScript type definitions
│ └── utils/ # Utility functions & calculations
├── assets/ # Static assets
└── package.json
| Script | Description |
|---|---|
bun run start |
Start Expo development server |
bun run web |
Start for web browser |
bun run android |
Start for Android |
bun run ios |
Start for iOS |
bun run check |
Run all checks (typecheck + lint + format) |
bun run typecheck |
TypeScript type checking |
bun run lint |
ESLint checking |
bun run lint:fix |
ESLint with auto-fix |
bun run format |
Prettier format checking |
bun run format:fix |
Prettier with auto-fix |
The app uses industry-standard formulas:
- OG (Original Gravity): Calculated from malt extract potential, amount, and batch volume with configurable mash efficiency
- IBU (International Bitterness Units): Tinseth formula accounting for boil time, alpha acids, and wort gravity
- EBC (European Brewery Convention color): Morey equation converting MCU to SRM, then to EBC
- ABV (Alcohol By Volume): Standard formula:
(OG - FG) × 131.25 - Attenuation: Percentage of sugars converted:
((OG - FG) / (OG - 1)) × 100