liquor.dev

liquor.dev

Cocktails as source code. Eight classic recipes written as readable files, a compiler that scales them and estimates strength, and a pantry cheat sheet. Dry humor, correct measurements.
A martini glass whose drink is made of colored lines of source code, with a blinking cursor at the end of the last line and an olive on a pick 1234567

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

sh
$ open recipes.liq # pick a drink and read the file
$ run compiler.js # scale it, estimate the strength
$ cat pantry.yaml # check bottles, swaps and technique
  1. Read a recipe in recipes.liq. Every ingredient has a quantity, a unit and a comment where judgment is allowed.
  2. 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.
  3. 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

WARNING You must be of legal drinking age where you are to make or drink anything on this site. The age varies by country and region; if you are not sure it applies to you, assume it does.
WARNING Never drive, ride, operate machinery or deploy to production after drinking. Plan your ride before the first pour.
NOTICE Strength numbers are estimates and people respond to alcohol differently. Eat something, drink water, measure your pours and tell guests what is in the glass. A free pour is how a quick one becomes an incident report.
NOTICE If you or someone you know needs help with alcohol, talk to a doctor or a local support service.

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.

<!-- end of file -->

liquor.dev

Cocktails as source code. An independent hobby project, not affiliated with any brand, bar or distillery. No brand names are used.

Contact

liquor@appl.dev

Everything on this site runs in your browser. Nothing is sent anywhere.

For adults of legal drinking age only. Never drive after drinking. ABV figures are estimates.

main 1 warning: legal age only, never drive Markdown UTF-8 offline