Nib
BuildingEspresso dosing companion app
The Problem
Pulling a good espresso shot is a ritual of precision. You weigh beans, grind them, tamp, and extract — but the one variable that's hardest to control consistently is dose weight. Most home baristas eyeball it or weigh manually between grinds, which is slow and inconsistent.
What It Does
Nib is an espresso dosing companion that listens to your grinder:
- Audio-based grind detection — uses the Web Audio API to detect when the grinder is running and automatically tracks grind time
- Target weight countdown — set your target dose, and Nib counts down based on your grinder's flow rate (which it learns over time)
- Dial-in logging — track your shots over time to find the sweet spot for each bean
No bluetooth scale needed. No hardware. Just your phone, your grinder, and better espresso.
How It's Built
Nib is a Progressive Web App built with the Web Audio API for grind detection. It runs entirely in the browser — no server needed for the core experience. Shot logs are stored locally with optional Supabase sync.
The audio detection uses frequency analysis to distinguish grinder noise from ambient sound. It's surprisingly accurate once calibrated.
What I Learned
Nib taught me about the Web Audio API in ways no tutorial could. Building real-time audio processing in the browser is a fascinating constraint — you're working with buffers, sample rates, and FFT analysis in JavaScript.
It also reminded me why I build side projects: this started as a genuine itch. I was tired of eyeballing my dose every morning. Now I don't have to.