Beanie is a Decent.app skin built around your beans.
Got a few bags open at once? Then you know the pain: every coffee dials in differently, and you're stuck remembering, or scribbling down, the grind, dose, ratio, temperature, and profile for each one.
Beanie remembers for you. It keeps a separate recipe per bag, so when you switch back to your Ethiopian, last time's grind, dose, yield, temperature, and profile snap right back. No notebook, no "wait, what did I use last time?"
Pick a bag, pull a shot, rate it, and keep your tasting notes tied to that bean. Over time, every bag builds up its own useful history, so dialing in gets easier instead of messier.
Beanie is still early, so feedback is very welcome.
- Opens on the last active bean and its current recipe.
- Pick another bean with one tap.
- Restore the saved setup for that bean: profile, dose, yield, temperature, grinder, and grind setting.
- Review previous shots for that bean with compact shot graphs.
- Adjust the recipe, pull another shot, and save what worked.
Open Decent.app's settings skin installer:
http://localhost:8080/api/v1/plugins/settings.reaplugin/ui
In the Web Interface settings, install from GitHub using:
giladger/Beanie
Decent.app will fetch the latest Beanie GitHub release and install the skin.
Beanie is a static WebUI skin:
- No UI framework runtime.
- Direct REST and WebSocket calls to the Decent.app gateway.
- Static files served by Decent.app on port 3000.
- Local storage only for skin-owned conveniences such as favorite profiles and the last selected bean.
npm install
npm run skin:devnpm run skin:dev writes a small development shim into Decent.app's Beanie skin
folder, then starts Vite on localhost:5173. Decent.app still opens the skin
from http://localhost:3000/, but the page loads the app modules from Vite, so
source changes hot reload without rebuilding or copying dist.
During development, Beanie resolves Decent.app API calls from the Decent-served
page. On the local machine this means the skin uses the gateway at
localhost:8080. Override with:
BEANIE_GATEWAY=http://192.168.1.42:8080 npm run skin:devIf no gateway is reachable, the skin falls back to realistic demo data so the UI remains inspectable.
Useful development commands:
npm run skin:shim # only install the Decent.app -> Vite shim
npm run skin:dev # install the shim and start Vite with hot reload
npm run skin:deploy # build and copy the static skin into Decent.app
npm run release # tag and push the next patch release
npm run release:zip # build the installable release zipThe default Decent skin folder is:
~/Library/Containers/net.tadel.reaprime/Data/Documents/web-ui/beanie
Override it with DECENT_SKIN_DIR=/path/to/beanie.
npm test
npm run release -- --dry-run
npm run release
npm run release:zipReleases are published from Git tags. npm run release fetches tags, finds the
highest vX.Y.Z tag, bumps the project and skin manifest versions, commits the
bump, creates the next patch tag, and pushes both the commit and tag. The GitHub
release workflow verifies the tag matches package.json, builds
beanie-vX.Y.Z.zip, and attaches it to the release.