liquor.dev
What is this
liquor.dev treats the classic cocktail canon the way a good codebase treats its core modules: small, readable, and resistant to creative refactors at 11 p.m. Each drink is a short file that declares its glass, method, ice and ingredients, then lists the steps. There is no build system. The only dependency is ice.
The canon here is eight standards that have survived more rewrites than most frameworks: Old Fashioned, Negroni, Daiquiri, Margarita, Manhattan, Whiskey Sour, Moscow Mule and Martini. The specs are the common, defensible ones, written so you can read a recipe at a glance and taste the difference when you change a constant.
It is built for developers who make drinks at home: people who will happily argue about tabs and spaces but know that two ounces is two ounces. Adults of legal drinking age only. Read the responsible use section before you open a bottle.
Quick start
- Read a recipe in recipes.liq. Every ingredient has a quantity, a unit and a comment where judgment is allowed.
- Hand it to the compiler. Choose servings, ounces or milliliters, stir or shake. You get a scaled ingredient list and an estimated ABV, with the dilution assumption stated instead of hidden.
- Check pantry.yaml when your bottle is not the bottle in the file. It lists typical strengths, honest substitutions and the technique notes that the recipes assume you know.
File map
- README.md — this file. Start here, read the warnings.
- recipes.liq — eight classics with standard specs, foldable files and strength estimates.
- compiler.js — pick a recipe, set servings, units and method, copy the result as plain text.
- pantry.yaml — bottle strengths, substitutions, ratios and technique, with a filter box.
- contact.eml — corrections, questions and spec arguments, sent by your own email app.
Design notes
- Readable beats clever. A recipe should fit on one screen and survive being read aloud over the noise of a party.
- Deterministic, within reason. Same inputs, same drink. Your results will still vary with your ice, your jigger and your wrist, which is why the numbers are estimates.
- Honest numbers. Every ABV here is an estimate built from typical bottle strengths and a stated dilution. It is not a measurement, and it is not a breathalyzer.
- Categories, not brands. Recipes say bourbon, not a label. Use the bottle you trust and check its strength on the label.
- Local only. Everything runs in your browser from static files. Nothing is uploaded, tracked or sent.
Known issues
- Taste is not unit-tested. Taste the drink before you serve it, and adjust by a quarter ounce, not by vibes.
- The lime you juiced at noon is a different lime by dinner. Citrus fades, so juice close to serving.
- Ice is a dependency we cannot vendor. Use cold, dense ice, never reuse the ice you shook with, and expect a stirred drink to be stronger than a shaken one of similar size.
- Opened vermouth is wine. Keep it in the fridge, and if it smells tired, it is.
Responsible use
liquor.dev is an independent hobby project. It is not affiliated with, endorsed by or sponsored by any brand, bar or distillery, and it uses no brand names.