liquor.dev

Eight classic cocktails, as source files

// Each file below is one standard spec. A spec is a choice: most classics have two or three respectable versions, and these are the common ones, measured in US fluid ounces.
// Keywords: glass, method, ice and yields describe the serve. ingredients lists a name, a quantity and a unit. steps is the only imperative code. Anything after a double slash is a comment, which is where judgment lives.
// Fold a file to tidy the view, send it to the compiler to scale it, copy it to paste it into your notes. Strength figures are estimates from the compiler defaults.

Showing 8 of 8 recipes.

Old Fashionedold-fashioned.liq

  • glass: rocks
  • stirred
  • est. ~29.7% ABV
compile
recipe "Old Fashioned" {
glass = "rocks"
method = stir
ice = "one large cube"
yields = 1
ingredients {
whiskey 2 oz // bourbon is rounder, rye is spicier
simple_syrup 0.25 oz // or one sugar cube and a splash of water
bitters 2 dash
}
garnish = "orange peel"
steps {
1. Add the syrup and bitters to a rocks glass.
2. Add the whiskey and one large cube of ice.
3. Stir for about 20 seconds, until the glass is cold to hold.
4. Express an orange peel over the drink, rub the rim, drop it in.
}
}
// The oldest file in the repo and the one most often refactored into a fruit salad. The original spec is spirit, sugar, water and bitters. Muddled fruit is a later patch that nobody asked for.
// Syrup scales better than a sugar cube. One large cube melts slowly, so the drink holds its strength to the last sip instead of collapsing at the halfway mark.
// est. ABV ~29.7% (stir, 20% dilution, typical bottle strengths). An estimate, not a measurement.

Negroninegroni.liq

  • glass: rocks
  • stirred
  • est. ~22.5% ABV
compile
recipe "Negroni" {
glass = "rocks"
method = stir
ice = "one large cube"
yields = 1
ingredients {
gin 1 oz
sweet_vermouth 1 oz // fresh, refrigerated
bitter_red 1 oz // the bitter red aperitif
}
garnish = "orange peel"
steps {
1. Add all three to a mixing glass filled with ice.
2. Stir for 20 to 25 seconds.
3. Strain over one large cube in a rocks glass.
4. Express an orange peel over the drink and drop it in.
}
}
// Equal parts, which makes it the one recipe here you can scale by eye and still get right. The bitterness is a feature, not a bug.
// If it tastes sharp, the fix is fresher vermouth, not more sugar. Vermouth is wine, and wine goes off once opened.
// est. ABV ~22.5% (stir, 20% dilution, typical bottle strengths). An estimate, not a measurement.

Daiquiridaiquiri.liq

  • glass: coupe
  • shaken
  • est. ~17.1% ABV
compile
recipe "Daiquiri" {
glass = "coupe"
method = shake
ice = "none, served up"
yields = 1
ingredients {
white_rum 2 oz
lime_juice 1 oz // squeezed today
simple_syrup 0.75 oz // the tuning knob
}
garnish = "lime wheel" // optional
steps {
1. Chill a coupe with ice water or a few minutes in the freezer.
2. Add rum, lime juice and syrup to a shaker with ice.
3. Shake hard for 10 to 15 seconds.
4. Strain into the chilled coupe.
}
}
// Three ingredients and nowhere to hide. Juice the limes the same day and taste before you serve: limes vary, and the syrup is your only tuning knob.
// This is the template for every sour in the file: spirit, citrus, sugar, ice, effort.
// est. ABV ~17.1% (shake, 25% dilution, typical bottle strengths). An estimate, not a measurement.

Margaritamargarita.liq

  • glass: coupe or rocks
  • shaken
  • est. ~22.0% ABV
compile
recipe "Margarita" {
glass = "coupe or rocks"
method = shake
ice = "fresh ice if rocks"
yields = 1
ingredients {
blanco_tequila 2 oz
orange_liqueur 1 oz // dry style if you can
lime_juice 1 oz // squeezed today
}
garnish = "lime wheel" // optional
steps {
1. Optional: salt half of the outside rim of the glass.
2. Add everything to a shaker with ice.
3. Shake hard for 10 to 15 seconds.
4. Strain into the glass, over fresh ice if you chose a rocks glass.
}
}
// Equal parts liqueur and lime is a tart, firm spec. If your orange liqueur is sweeter, pull it back a little instead of adding more lime.
// Salt only the outside of the rim so it seasons the first sip rather than every sip. The salt is optional and not modelled by the compiler.
// est. ABV ~22.0% (shake, 25% dilution, typical bottle strengths). An estimate, not a measurement.

Manhattanmanhattan.liq

  • glass: coupe
  • stirred
  • est. ~26.8% ABV
compile
recipe "Manhattan" {
glass = "coupe"
method = stir
ice = "none, served up"
yields = 1
ingredients {
rye 2 oz // bourbon is a valid fork
sweet_vermouth 1 oz // fresh, refrigerated
bitters 2 dash
}
garnish = "cocktail cherry"
steps {
1. Chill a coupe.
2. Add whiskey, vermouth and bitters to a mixing glass with ice.
3. Stir for 20 to 30 seconds.
4. Strain into the coupe and add the cherry.
}
}
// Two to one, the ratio that the whole stirred-and-boozy family inherits. Rye gives it spine; bourbon makes a softer, sweeter drink and is a legitimate fork.
// Use a proper cocktail cherry, not the neon kind. It is the only part of this file you eat.
// est. ABV ~26.8% (stir, 20% dilution, typical bottle strengths). An estimate, not a measurement.

Whiskey Sourwhiskey-sour.liq

  • glass: rocks
  • shaken
  • est. ~18.3% ABV
compile
recipe "Whiskey Sour" {
glass = "rocks"
method = shake
ice = "fresh ice"
yields = 1
ingredients {
bourbon 2 oz
lemon_juice 0.75 oz // squeezed today
simple_syrup 0.75 oz
}
garnish = "lemon wheel" // optional
steps {
1. Add whiskey, lemon juice and syrup to a shaker with ice.
2. Shake hard for 10 to 15 seconds.
3. Strain over fresh ice in a rocks glass.
4. Optional: one egg white, dry-shaken first, for texture. Not modelled.
}
}
// The sour template again, with whiskey and lemon. Lemon is gentler than lime, so three-quarters of an ounce of juice and three-quarters of syrup balance.
// Egg white adds texture, not flavor. Raw egg carries a small food-safety risk, so skip it if that matters to you or your guests.
// est. ABV ~18.3% (shake, 25% dilution, typical bottle strengths). An estimate, not a measurement.

Moscow Mulemoscow-mule.liq

  • glass: mug or highball
  • built
  • est. ~11.4% ABV
compile
recipe "Moscow Mule" {
glass = "mug or highball"
method = build // modelled as a gentle stir
ice = "cubed or crushed"
yields = 1
ingredients {
vodka 2 oz
lime_juice 0.5 oz // squeezed today
ginger_beer 4 oz // topper, added after the chill
}
garnish = "lime wedge"
steps {
1. Fill a mug or highball glass with ice.
2. Add the vodka and lime juice.
3. Top with cold ginger beer, pouring down the side of the glass.
4. Stir once, gently. Add the lime wedge.
}
}
// A highball in a nicer mug. The bubbles are the dependency: add the ginger beer last, pour gently, and stir once. Over-stirring is how a carbonated drink becomes a flat one.
// The compiler applies chill and dilution to the vodka and lime only. The ginger beer goes in after, as it would at the bar. Build is modelled as a gentle stir.
// est. ABV ~11.4% (stir, 20% dilution, typical bottle strengths). An estimate, not a measurement.

Martinimartini.liq

  • glass: coupe
  • stirred
  • est. ~30.1% ABV
compile
recipe "Martini" {
glass = "coupe"
method = stir
ice = "none, served up"
yields = 1
ingredients {
gin 2.5 oz
dry_vermouth 0.5 oz // fresh, refrigerated
}
garnish = "lemon twist"
steps {
1. Chill the glass in the freezer, or fill it with ice water.
2. Add gin and vermouth to a mixing glass with ice.
3. Stir for 25 to 30 seconds.
4. Strain into the chilled glass. Express a lemon peel over it, or add an olive.
}
}
// Five to one is the spec here. Drier and wetter versions are argued about forever and both are valid forks. The real mistakes are stale vermouth, a warm glass and too little stirring.
// It should arrive cold enough to hurt slightly. Shaken is not wrong, merely cloudier.
// est. ABV ~30.1% (stir, 20% dilution, typical bottle strengths). An estimate, not a measurement.

How to read a recipe file

Every file follows the same grammar, so once you can read one you can read all eight. The units are deliberately few.

  • oz is a US fluid ounce, about 29.57 milliliters. Every quantity in a file is written in ounces; the compiler converts on request.
  • dash is the amount a bitters bottle delivers in one firm shake, treated here as 0.03 oz, about 0.9 milliliters. It is the least precise unit in the file and the least harmful to get wrong.
  • stir means stirring with ice in a mixing glass until the glass is cold and frosty, usually 20 to 30 seconds. Use it for drinks made only of spirits, vermouth and bitters.
  • shake means shaking hard with ice for 10 to 15 seconds. Use it for anything with citrus or juice. Strain off the ice you shook with.
  • build means assembling in the serving glass, topping with the fizzy ingredient last and stirring once.
  • served up means no ice in the glass, which should be chilled. rocks means over ice, ideally one large cube.
  • express means squeezing a citrus peel, skin side down, over the drink so its oils land on the surface.

If your version of a classic differs, good: that is what forks are for. Send corrections, not brand loyalty, through contact.eml. Adults of legal drinking age only; never drive after drinking.

liquor.dev

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

Contact

hello@liquor.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 liq UTF-8 offline