The app is called Just Dough It; the open-source project is SourDough.
Bake better bread by listening to your kitchen, not a textbook.
SourDough takes the guesswork out of sourdough baking. It auto-detects your local temperature, water hardness, and location, then calculates your ideal final dough temperature (FDT), hydration targets, and fermentation timeline — all adjusted to your actual environment.
Most sourdough recipes assume a warm, standard kitchen and medium-hard water. But your kitchen might be chilly in winter, your tap water might be soft, and your flour might have different protein than what the recipe expects. SourDough adapts everything to where you really are:
- 🌡 Live ambient temperature via Open-Meteo weather data
- 💧 Regional water hardness from open water-quality datasets
- 🌾 Flour-specific protein data from a built-in catalogue of 60+ flours
- 📍 Location-aware — auto-detects your city via GPS or postcode lookup
Built with Expo SDK 56, React Native 0.85, and TypeScript. Runs on web, iOS, and Android from a single codebase. A landing page greets you with three cards — pick bread, yogurt, or lacto-fermentation — then dive into the full calculator.
- Auto-location — one-tap GPS → weather + water hardness for your exact spot
- Postcode refinement — enter a postcode for precise local conditions
- Manual mode — set temperature and postcode without granting location
- Flour picker — browse 60+ Shipton Mill flours by category, with protein %
- Multi-flour blends — mix flours at custom ratios; weighted protein and fermentation
- FDT calculation — computes your final dough temperature from the four inputs
- Dynamic fermentation — hour-by-hour model accounting for ambient drift, inoculation, hydration, and flour type
- Fermentation timeline — step-by-step schedule: autolyse → folds → bulk → shape → proof → bake
- Water hardness advice — tailored tips for soft, hard, and ideal water
- Feeding log — record each feeding by flour, water, and ratio
- Notifications — configurable feeding reminders via expo-notifications (coming soon)
- History — browse past bakes, search and filter saved recipes
- Private by design — no accounts, all data stored locally via AsyncStorage (weather and water-hardness detection need network; manual mode works offline)
- No tracking — no analytics, no telemetry, no cloud storage
- Location is transient — coordinates are sent only to fetch weather and geocode your city; never stored or shared
- Installable PWA — add to home screen; works offline once loaded
- Share-friendly — every page has Open Graph/Twitter card metadata and a generated share image
- Launch waitlist — landing page email capture for iOS/Android; set
EXPO_PUBLIC_WAITLIST_ENDPOINTto a form endpoint or it falls back to a pre-filled email. If you use a custom endpoint, add its origin toconnect-srcinSourDoughMobile/public/_headers - Optional cookieless analytics — set the
EXPO_PUBLIC_CF_BEACON_TOKENrepo variable in GitHub Actions to enable Cloudflare Web Analytics (privacy-respecting, no cookie banner needed)
- 10 starter cultures — thermophilic and mesophilic, each with its own incubation model
- Milk picker — cow, goat, sheep, and plant-based milks with adjusted yield
- Incubation timeline — target window, min/max range, and temperature cap
- Yield & nutrition — accounts for evaporation and straining losses
- Previous-batch starter — use yesterday's yogurt as today's inoculum
- 7+ ferment styles — dry salt, brine, and mash methods with volume conversion
- 25+ vegetables — density and water-release data for common ferments
- Salt calculator — converts between grams, percentage, and volume measures
- Day-by-day timeline — LAB succession from Leuconostoc to Lactobacillus
- Temperature-adjusted Q10 model — duration and pH timeline adapt to ambient temperature
cd SourDoughMobile
# Install dependencies
npm install
# Start the Expo dev server
npx expo start
# Run on a specific platform
npx expo start --ios
npx expo start --android
npx expo start --webRequirements: Node.js 22+, Expo SDK 56. Use the Expo Go app for quick testing on a physical device, or build a development client with EAS Build.
The web version is deployed on every push to main via GitHub Actions →
Cloudflare Pages.
┌─────────────┐ ┌──────────────┐ ┌──────────────────┐
│ GPS / │ ──▶ │ Open-Meteo │ ──▶ │ Ambient Temp │
│ Postcode │ │ Weather API │ │ + Forecast │
└─────────────┘ └──────────────┘ └──────────────────┘
│ │
▼ ▼
┌─────────────┐ ┌──────────────┐ ┌──────────────────┐
│ Nominatim │ │ Water │ │ FDT Calculator │
│ Geocoding │ │ Hardness DB │ │ + Hydration │
└─────────────┘ └──────────────┘ └──────────────────┘
│ │
▼ ▼
┌─────────────┐ ┌──────────────────────────────────────┐
│ City Name │ │ Final Recipe: │
│ + Region │ │ • Water temperature to use │
└─────────────┘ │ • Ingredient weights │
│ • Bulk ferment duration │
│ • Step-by-step timeline │
└──────────────────────────────────────┘
| Directory | What it is |
|---|---|
SourDoughMobile/ |
React Native (Expo) app — iOS, Android, and web |
Note: The original Python CLI/GUI (
optimizer.py) has been retired. The mobile/web app is the canonical SourDough experience. The baking science lives inSourDoughMobile/src/lib/calculations.ts.
Contributions are welcome! Whether it's a bug fix, a new flour profile, or a feature idea:
- Fork the repository
- Create a branch —
git checkout -b fix/somethingorgit checkout -b feature/your-idea - Make your changes — follow the existing TypeScript/React Native patterns
- Test — run
npx expo startand verify on web or device - Commit — use clear commit messages describing what changed and why
- Push and open a Pull Request
- New flours — add entries to
SourDoughMobile/src/data/flours.ts - Bug fixes — include steps to reproduce in your PR description
- New features — open an issue first to discuss the approach
- Docs — improvements to READMEs, comments, or error messages
- TypeScript: follow the existing Expo/React Native patterns
- Keep it readable — this is a baking tool, not a spaceship
This project is licensed under the MIT License — see LICENSE for the full text.
In short: you can use, modify, distribute, and even sell this code. Just keep the copyright notice and don't hold us liable.
SourDough takes your privacy seriously:
- ❌ No accounts required — no sign-up, no login
- ❌ No tracking — no analytics, no telemetry
- ❌ No cloud storage — your recipes stay on your device
- ✅ Location is transient — coordinates are sent only to fetch weather and geocode your city; never stored or shared
- 📬 Optional waitlist — if you join the iOS/Android launch list, only your email is used for launch updates; see the privacy policy
See SourDoughMobile/PRIVACY.md for details.
- Weather data: Open-Meteo — free, open-source weather API
- Geocoding: OpenStreetMap / Nominatim
- Flour data: Shipton Mill — amazing flour, amazing mill
- Built with Expo and React Native