brewers-almanack 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +184 -0
- package/dist/data/adjuncts.d.ts +3 -0
- package/dist/data/adjuncts.js +168 -0
- package/dist/data/adjuncts.js.map +1 -0
- package/dist/data/hops.d.ts +3 -0
- package/dist/data/hops.js +1483 -0
- package/dist/data/hops.js.map +1 -0
- package/dist/data/malts.d.ts +3 -0
- package/dist/data/malts.js +378 -0
- package/dist/data/malts.js.map +1 -0
- package/dist/data/off-flavours.d.ts +3 -0
- package/dist/data/off-flavours.js +460 -0
- package/dist/data/off-flavours.js.map +1 -0
- package/dist/data/pairings.d.ts +3 -0
- package/dist/data/pairings.js +361 -0
- package/dist/data/pairings.js.map +1 -0
- package/dist/data/styles.d.ts +3 -0
- package/dist/data/styles.js +1536 -0
- package/dist/data/styles.js.map +1 -0
- package/dist/data/water-profiles.d.ts +3 -0
- package/dist/data/water-profiles.js +243 -0
- package/dist/data/water-profiles.js.map +1 -0
- package/dist/data/yeasts.d.ts +3 -0
- package/dist/data/yeasts.js +504 -0
- package/dist/data/yeasts.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.js +8 -0
- package/dist/index.js.map +1 -0
- package/dist/lib/search.d.ts +2 -0
- package/dist/lib/search.js +14 -0
- package/dist/lib/search.js.map +1 -0
- package/dist/register-tools.d.ts +3 -0
- package/dist/register-tools.js +15 -0
- package/dist/register-tools.js.map +1 -0
- package/dist/server.d.ts +3 -0
- package/dist/server.js +11 -0
- package/dist/server.js.map +1 -0
- package/dist/tools/diagnose-off-flavour.d.ts +3 -0
- package/dist/tools/diagnose-off-flavour.js +59 -0
- package/dist/tools/diagnose-off-flavour.js.map +1 -0
- package/dist/tools/match-water-profile.d.ts +3 -0
- package/dist/tools/match-water-profile.js +66 -0
- package/dist/tools/match-water-profile.js.map +1 -0
- package/dist/tools/pairing-guide.d.ts +3 -0
- package/dist/tools/pairing-guide.js +59 -0
- package/dist/tools/pairing-guide.js.map +1 -0
- package/dist/tools/search-ingredients.d.ts +3 -0
- package/dist/tools/search-ingredients.js +98 -0
- package/dist/tools/search-ingredients.js.map +1 -0
- package/dist/tools/search-styles.d.ts +3 -0
- package/dist/tools/search-styles.js +49 -0
- package/dist/tools/search-styles.js.map +1 -0
- package/dist/tools/suggest-recipe.d.ts +3 -0
- package/dist/tools/suggest-recipe.js +161 -0
- package/dist/tools/suggest-recipe.js.map +1 -0
- package/dist/types.d.ts +97 -0
- package/dist/types.js +2 -0
- package/dist/types.js.map +1 -0
- package/package.json +48 -0
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 gregario
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
package/README.md
ADDED
|
@@ -0,0 +1,184 @@
|
|
|
1
|
+
<p align="center">
|
|
2
|
+
<h1 align="center">Brewers Almanack</h1>
|
|
3
|
+
<p align="center">A brewing knowledge MCP server — beer styles, ingredients, off-flavour diagnosis, water chemistry, and recipe guidance for AI assistants.</p>
|
|
4
|
+
</p>
|
|
5
|
+
|
|
6
|
+
<p align="center">
|
|
7
|
+
<a href="https://www.npmjs.com/package/brewers-almanack"><img src="https://img.shields.io/npm/v/brewers-almanack.svg" alt="npm version"></a>
|
|
8
|
+
<a href="https://www.npmjs.com/package/brewers-almanack"><img src="https://img.shields.io/npm/dm/brewers-almanack.svg" alt="npm downloads"></a>
|
|
9
|
+
<a href="https://github.com/gregario/brewers-almanack/blob/main/LICENSE"><img src="https://img.shields.io/badge/license-MIT-blue.svg" alt="MIT Licence"></a>
|
|
10
|
+
<a href="https://nodejs.org"><img src="https://img.shields.io/badge/node-%3E%3D18-brightgreen.svg" alt="Node.js 18+"></a>
|
|
11
|
+
<a href="https://modelcontextprotocol.io"><img src="https://img.shields.io/badge/MCP-compatible-purple.svg" alt="MCP Compatible"></a>
|
|
12
|
+
</p>
|
|
13
|
+
|
|
14
|
+
---
|
|
15
|
+
|
|
16
|
+
Ask your AI assistant about beer styles, diagnose off-flavours, build recipes, match water profiles, and pair food — all backed by real brewing data, not hallucinations.
|
|
17
|
+
|
|
18
|
+
**6 tools. Zero config. Works with every MCP-compatible IDE.**
|
|
19
|
+
|
|
20
|
+
## Install
|
|
21
|
+
|
|
22
|
+
```bash
|
|
23
|
+
npx -y brewers-almanack
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
No API keys, no network dependencies. All brewing data is embedded.
|
|
27
|
+
|
|
28
|
+
### Add to your IDE
|
|
29
|
+
|
|
30
|
+
<details open>
|
|
31
|
+
<summary><strong>Claude Code</strong></summary>
|
|
32
|
+
|
|
33
|
+
```bash
|
|
34
|
+
claude mcp add brewers-almanack -- npx -y brewers-almanack
|
|
35
|
+
```
|
|
36
|
+
</details>
|
|
37
|
+
|
|
38
|
+
<details>
|
|
39
|
+
<summary><strong>Claude Desktop</strong></summary>
|
|
40
|
+
|
|
41
|
+
Add to `~/Library/Application Support/Claude/claude_desktop_config.json` (macOS) or `%APPDATA%/Claude/claude_desktop_config.json` (Windows):
|
|
42
|
+
```json
|
|
43
|
+
{
|
|
44
|
+
"mcpServers": {
|
|
45
|
+
"brewers-almanack": {
|
|
46
|
+
"command": "npx",
|
|
47
|
+
"args": ["-y", "brewers-almanack"]
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
```
|
|
52
|
+
</details>
|
|
53
|
+
|
|
54
|
+
<details>
|
|
55
|
+
<summary><strong>Cursor</strong></summary>
|
|
56
|
+
|
|
57
|
+
Add to `.cursor/mcp.json`:
|
|
58
|
+
```json
|
|
59
|
+
{
|
|
60
|
+
"mcpServers": {
|
|
61
|
+
"brewers-almanack": {
|
|
62
|
+
"command": "npx",
|
|
63
|
+
"args": ["-y", "brewers-almanack"]
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
```
|
|
68
|
+
</details>
|
|
69
|
+
|
|
70
|
+
<details>
|
|
71
|
+
<summary><strong>VS Code (Copilot)</strong></summary>
|
|
72
|
+
|
|
73
|
+
Add to `.vscode/mcp.json`:
|
|
74
|
+
```json
|
|
75
|
+
{
|
|
76
|
+
"servers": {
|
|
77
|
+
"brewers-almanack": {
|
|
78
|
+
"command": "npx",
|
|
79
|
+
"args": ["-y", "brewers-almanack"]
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
```
|
|
84
|
+
</details>
|
|
85
|
+
|
|
86
|
+
<details>
|
|
87
|
+
<summary><strong>Windsurf</strong></summary>
|
|
88
|
+
|
|
89
|
+
Add to `~/.codeium/windsurf/mcp_config.json`:
|
|
90
|
+
```json
|
|
91
|
+
{
|
|
92
|
+
"mcpServers": {
|
|
93
|
+
"brewers-almanack": {
|
|
94
|
+
"command": "npx",
|
|
95
|
+
"args": ["-y", "brewers-almanack"]
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
```
|
|
100
|
+
</details>
|
|
101
|
+
|
|
102
|
+
<details>
|
|
103
|
+
<summary><strong>Zed</strong></summary>
|
|
104
|
+
|
|
105
|
+
Add to `settings.json`:
|
|
106
|
+
```json
|
|
107
|
+
{
|
|
108
|
+
"context_servers": {
|
|
109
|
+
"brewers-almanack": {
|
|
110
|
+
"command": {
|
|
111
|
+
"path": "npx",
|
|
112
|
+
"args": ["-y", "brewers-almanack"]
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
```
|
|
118
|
+
</details>
|
|
119
|
+
|
|
120
|
+
## Tools
|
|
121
|
+
|
|
122
|
+
| Tool | Description |
|
|
123
|
+
|------|-------------|
|
|
124
|
+
| `search_styles` | Search 85 BJCP beer styles by name, category, or characteristics. Returns vital statistics, overall impression, ingredients, and commercial examples. |
|
|
125
|
+
| `search_ingredients` | Search hops, malts, yeasts, and adjuncts by name, type, or characteristic. Filter by category or search across all. |
|
|
126
|
+
| `diagnose_off_flavour` | Identify off-flavours from taste or aroma descriptions. Returns the likely compound, causes, prevention steps, and styles where it may be acceptable. |
|
|
127
|
+
| `match_water_profile` | Find brewing water profiles by city name or beer style. Returns mineral composition (Ca, Mg, Na, Cl, SO4, HCO3) and style recommendations. |
|
|
128
|
+
| `suggest_recipe` | Generate a recipe for a target beer style. Returns grain bill, hop schedule, yeast selection, water profile, and process parameters. |
|
|
129
|
+
| `pairing_guide` | Beer and food pairing suggestions. Search by beer style or dish name. Returns matches with complement, contrast, and cleanse principles. |
|
|
130
|
+
|
|
131
|
+
## Example Conversations
|
|
132
|
+
|
|
133
|
+
**"What hops work in a Belgian Dubbel?"**
|
|
134
|
+
> Searches ingredients for hops that complement Belgian styles — returns varieties like Styrian Goldings and Saaz with alpha acid ranges, aromas, and substitutes.
|
|
135
|
+
|
|
136
|
+
**"My beer tastes like butter — what went wrong?"**
|
|
137
|
+
> Diagnoses diacetyl: identifies the compound, explains causes (incomplete fermentation, premature racking), and gives prevention steps (diacetyl rest, healthy yeast pitch).
|
|
138
|
+
|
|
139
|
+
**"Suggest a recipe for a West Coast IPA"**
|
|
140
|
+
> Builds a complete recipe: pale malt base with crystal malt, Centennial/Cascade hop schedule with dry hop additions, American ale yeast, and a Burton-style water profile.
|
|
141
|
+
|
|
142
|
+
**"What food pairs well with a stout?"**
|
|
143
|
+
> Returns pairing suggestions — oysters, chocolate desserts, grilled meats — with principles explaining why each pairing works (complement, contrast, or cleanse).
|
|
144
|
+
|
|
145
|
+
## Data Sources
|
|
146
|
+
|
|
147
|
+
| Dataset | Records | Source | Licence / Basis |
|
|
148
|
+
|---------|---------|--------|-----------------|
|
|
149
|
+
| Beer styles | 85 | [BJCP 2021 Guidelines](https://www.bjcp.org/style/2021/beer/) via [beerjson/bjcp-json](https://github.com/beerjson/bjcp-json) | MIT; BJCP attribution |
|
|
150
|
+
| Hops | 113 | [kasperg3/HopDatabase](https://github.com/kasperg3/HopDatabase) | MIT |
|
|
151
|
+
| Malts | 38 | Compiled from published maltster spec sheets | Factual data |
|
|
152
|
+
| Yeasts | 33 | Compiled from published yeast lab spec sheets | Factual data |
|
|
153
|
+
| Adjuncts | 21 | Compiled from brewing literature | Factual data |
|
|
154
|
+
| Water profiles | 20 | Compiled from brewing literature | Factual data |
|
|
155
|
+
| Off-flavours | 25 | Compiled from brewing science literature | Factual data |
|
|
156
|
+
| Food pairings | 23 | Compiled from Cicerone curriculum and pairing guides | Factual data |
|
|
157
|
+
|
|
158
|
+
## Roadmap
|
|
159
|
+
|
|
160
|
+
See [ROADMAP.md](ROADMAP.md) for planned features: brewing calculators, recipe intelligence, BeerXML/BeerJSON integration, and a brewing journal.
|
|
161
|
+
|
|
162
|
+
## Contributing
|
|
163
|
+
|
|
164
|
+
Contributions are welcome — especially data contributions. More hop varieties, yeast strains, regional water profiles, and food pairings make the server more useful for everyone.
|
|
165
|
+
|
|
166
|
+
```bash
|
|
167
|
+
git clone https://github.com/gregario/brewers-almanack.git
|
|
168
|
+
cd brewers-almanack
|
|
169
|
+
npm install
|
|
170
|
+
npm run build
|
|
171
|
+
npm test # 73 tests
|
|
172
|
+
```
|
|
173
|
+
|
|
174
|
+
### Running locally
|
|
175
|
+
|
|
176
|
+
```bash
|
|
177
|
+
claude mcp add brewers-almanack-dev -- node /path/to/brewers-almanack/dist/index.js
|
|
178
|
+
```
|
|
179
|
+
|
|
180
|
+
See [ROADMAP.md](ROADMAP.md) for areas where contributions are most needed.
|
|
181
|
+
|
|
182
|
+
## Licence
|
|
183
|
+
|
|
184
|
+
[MIT](LICENSE)
|
|
@@ -0,0 +1,168 @@
|
|
|
1
|
+
// Common brewing adjuncts: sugars, finings, grains, spices, and flavourings.
|
|
2
|
+
export const ADJUNCTS = [
|
|
3
|
+
// ── Sugars ──────────────────────────────────────────────────────────
|
|
4
|
+
{
|
|
5
|
+
name: "Corn Sugar (Dextrose)",
|
|
6
|
+
type: "sugar",
|
|
7
|
+
fermentable: true,
|
|
8
|
+
usageRate: "5-20% of grist, or 120g per 19L for priming",
|
|
9
|
+
effect: "Raises ABV without adding body or flavour. Dries out the beer and lightens colour.",
|
|
10
|
+
description: "Pure glucose monosaccharide. The most common priming sugar and a popular adjunct for boosting gravity in Belgian and American styles.",
|
|
11
|
+
},
|
|
12
|
+
{
|
|
13
|
+
name: "Table Sugar (Sucrose)",
|
|
14
|
+
type: "sugar",
|
|
15
|
+
fermentable: true,
|
|
16
|
+
usageRate: "5-20% of grist, or 100g per 19L for priming",
|
|
17
|
+
effect: "Fully fermentable. Thins body and boosts ABV without adding flavour.",
|
|
18
|
+
description: "Common cane or beet sugar. Fully fermentable by brewing yeast. Used in Belgian brewing traditions and for bottle conditioning.",
|
|
19
|
+
},
|
|
20
|
+
{
|
|
21
|
+
name: "Belgian Candi Sugar (Light)",
|
|
22
|
+
type: "sugar",
|
|
23
|
+
fermentable: true,
|
|
24
|
+
usageRate: "5-20% of grist",
|
|
25
|
+
effect: "Increases ABV while keeping the beer light and dry. Adds subtle warmth.",
|
|
26
|
+
description: "Crystallised beet sugar used in Belgian tripels and golden strong ales. Lightens body while boosting alcohol content.",
|
|
27
|
+
},
|
|
28
|
+
{
|
|
29
|
+
name: "Belgian Candi Sugar (Dark)",
|
|
30
|
+
type: "sugar",
|
|
31
|
+
fermentable: true,
|
|
32
|
+
usageRate: "5-15% of grist",
|
|
33
|
+
effect: "Adds dark fruit, caramel, and toffee flavours. Deepens colour and raises ABV.",
|
|
34
|
+
description: "Caramelised beet sugar essential in Belgian dubbels and dark strong ales. Provides complex dark fruit and burnt sugar character.",
|
|
35
|
+
},
|
|
36
|
+
{
|
|
37
|
+
name: "Honey",
|
|
38
|
+
type: "sugar",
|
|
39
|
+
fermentable: true,
|
|
40
|
+
usageRate: "5-30% of grist by weight",
|
|
41
|
+
effect: "Adds delicate floral sweetness and dries out the finish. Flavour character varies by variety.",
|
|
42
|
+
description: "Natural honey added to braggots, honey ales, and Belgian styles. Most honey character ferments out; add at flameout to preserve aroma.",
|
|
43
|
+
},
|
|
44
|
+
{
|
|
45
|
+
name: "Molasses",
|
|
46
|
+
type: "sugar",
|
|
47
|
+
fermentable: true,
|
|
48
|
+
usageRate: "2-10% of grist",
|
|
49
|
+
effect: "Adds deep, earthy, slightly bitter sweetness and dark colour.",
|
|
50
|
+
description: "By-product of sugar refining. Used in old ales, strong dark ales, and some stouts. Adds a rustic, treacle-like complexity.",
|
|
51
|
+
},
|
|
52
|
+
{
|
|
53
|
+
name: "Lactose",
|
|
54
|
+
type: "sugar",
|
|
55
|
+
fermentable: false,
|
|
56
|
+
usageRate: "150-500g per 19L",
|
|
57
|
+
effect: "Adds residual sweetness and body. Not fermentable by Saccharomyces yeast.",
|
|
58
|
+
description: "Milk sugar used in milk stouts, pastry stouts, and milkshake IPAs. Provides a creamy, sweet body since brewing yeast cannot ferment it.",
|
|
59
|
+
},
|
|
60
|
+
// ── Finings ─────────────────────────────────────────────────────────
|
|
61
|
+
{
|
|
62
|
+
name: "Irish Moss",
|
|
63
|
+
type: "fining",
|
|
64
|
+
fermentable: false,
|
|
65
|
+
usageRate: "1 tsp (5g) per 19L, added 15 min before end of boil",
|
|
66
|
+
effect: "Clarifies wort by coagulating proteins. Reduces chill haze.",
|
|
67
|
+
description: "Dried red seaweed (Chondrus crispus). A traditional kettle fining that promotes hot break formation and protein coagulation.",
|
|
68
|
+
},
|
|
69
|
+
{
|
|
70
|
+
name: "Whirlfloc",
|
|
71
|
+
type: "fining",
|
|
72
|
+
fermentable: false,
|
|
73
|
+
usageRate: "1 tablet per 19L, added 5-10 min before end of boil",
|
|
74
|
+
effect: "Clarifies wort by attracting and settling proteins and tannins.",
|
|
75
|
+
description: "Concentrated tablet form of Irish moss blended with purified carrageenan. More convenient and consistent than raw Irish moss.",
|
|
76
|
+
},
|
|
77
|
+
{
|
|
78
|
+
name: "Gelatin",
|
|
79
|
+
type: "fining",
|
|
80
|
+
fermentable: false,
|
|
81
|
+
usageRate: "1-2 tsp dissolved in 150ml warm water per 19L",
|
|
82
|
+
effect: "Clarifies beer by binding to polyphenols and yeast. Used cold-side.",
|
|
83
|
+
description: "Animal-derived collagen protein. An effective cold-side fining agent that drops yeast and haze particles out of suspension rapidly.",
|
|
84
|
+
},
|
|
85
|
+
{
|
|
86
|
+
name: "Isinglass",
|
|
87
|
+
type: "fining",
|
|
88
|
+
fermentable: false,
|
|
89
|
+
usageRate: "Per manufacturer instructions, typically 1-2ml per litre",
|
|
90
|
+
effect: "Attracts yeast cells and clarifies cask-conditioned ales.",
|
|
91
|
+
description: "Collagen derived from fish swim bladders. The traditional cask ale fining, prized for producing brilliant clarity while preserving flavour.",
|
|
92
|
+
},
|
|
93
|
+
// ── Grains ──────────────────────────────────────────────────────────
|
|
94
|
+
{
|
|
95
|
+
name: "Flaked Rice",
|
|
96
|
+
type: "grain",
|
|
97
|
+
fermentable: true,
|
|
98
|
+
usageRate: "10-40% of grist",
|
|
99
|
+
effect: "Lightens body and colour. Produces a dry, crisp finish.",
|
|
100
|
+
description: "Pre-gelatinised rice flakes. Used in Japanese lagers and American light lagers to produce a clean, light, refreshing beer.",
|
|
101
|
+
},
|
|
102
|
+
{
|
|
103
|
+
name: "Flaked Maize",
|
|
104
|
+
type: "grain",
|
|
105
|
+
fermentable: true,
|
|
106
|
+
usageRate: "10-30% of grist",
|
|
107
|
+
effect: "Lightens body, adds subtle corn sweetness, smooths flavour.",
|
|
108
|
+
description: "Pre-gelatinised corn flakes. Traditional adjunct in American lagers and cream ales. Adds a subtle sweet corn character.",
|
|
109
|
+
},
|
|
110
|
+
{
|
|
111
|
+
name: "Torrified Wheat",
|
|
112
|
+
type: "grain",
|
|
113
|
+
fermentable: true,
|
|
114
|
+
usageRate: "5-15% of grist",
|
|
115
|
+
effect: "Improves head retention, adds body, increases haze.",
|
|
116
|
+
description: "Wheat kernels heated until puffed. Adds protein for head retention and a bready character. Common in English bitters.",
|
|
117
|
+
},
|
|
118
|
+
// ── Spices & Flavourings ────────────────────────────────────────────
|
|
119
|
+
{
|
|
120
|
+
name: "Coriander Seed",
|
|
121
|
+
type: "spice",
|
|
122
|
+
fermentable: false,
|
|
123
|
+
usageRate: "15-30g per 19L, added at flameout",
|
|
124
|
+
effect: "Adds citrusy, slightly spicy, lemony character.",
|
|
125
|
+
description: "Dried coriander seeds, lightly crushed before use. A defining ingredient in Belgian witbiers alongside orange peel.",
|
|
126
|
+
},
|
|
127
|
+
{
|
|
128
|
+
name: "Orange Peel (Bitter)",
|
|
129
|
+
type: "spice",
|
|
130
|
+
fermentable: false,
|
|
131
|
+
usageRate: "15-30g per 19L, added at flameout",
|
|
132
|
+
effect: "Adds bitter citrus aroma and a zesty, marmalade-like character.",
|
|
133
|
+
description: "Dried Curaçao or Seville orange peel. Essential in Belgian witbiers and many Belgian ales. Provides a complex bitter citrus note.",
|
|
134
|
+
},
|
|
135
|
+
{
|
|
136
|
+
name: "Vanilla Beans",
|
|
137
|
+
type: "spice",
|
|
138
|
+
fermentable: false,
|
|
139
|
+
usageRate: "1-3 beans per 19L, split and scraped, added to secondary",
|
|
140
|
+
effect: "Adds smooth vanilla flavour and aroma. Rounds out roasted and sweet flavours.",
|
|
141
|
+
description: "Whole vanilla pods added to secondary fermentation. Popular in porters, stouts, cream ales, and pastry-style beers.",
|
|
142
|
+
},
|
|
143
|
+
{
|
|
144
|
+
name: "Cacao Nibs",
|
|
145
|
+
type: "spice",
|
|
146
|
+
fermentable: false,
|
|
147
|
+
usageRate: "60-120g per 19L, added to secondary for 3-7 days",
|
|
148
|
+
effect: "Adds roasted chocolate character without sweetness. Enhances malt complexity.",
|
|
149
|
+
description: "Roasted, hulled cocoa beans. Adds genuine chocolate aroma and flavour to porters, stouts, and chocolate-themed beers.",
|
|
150
|
+
},
|
|
151
|
+
{
|
|
152
|
+
name: "Coffee",
|
|
153
|
+
type: "spice",
|
|
154
|
+
fermentable: false,
|
|
155
|
+
usageRate: "30-60g coarsely ground per 19L, cold-steeped or added to secondary",
|
|
156
|
+
effect: "Adds coffee aroma and flavour. Complements roasted malt character.",
|
|
157
|
+
description: "Coarsely ground coffee beans, often cold-steeped to avoid astringency. Popular in coffee stouts, porters, and breakfast-style beers.",
|
|
158
|
+
},
|
|
159
|
+
{
|
|
160
|
+
name: "Ginger",
|
|
161
|
+
type: "spice",
|
|
162
|
+
fermentable: false,
|
|
163
|
+
usageRate: "15-60g fresh grated per 19L, added at flameout",
|
|
164
|
+
effect: "Adds a warm, spicy, pungent heat and zesty aroma.",
|
|
165
|
+
description: "Fresh ginger root, peeled and grated. Used in ginger beers, saisons, wheat ales, and seasonal spiced ales.",
|
|
166
|
+
},
|
|
167
|
+
];
|
|
168
|
+
//# sourceMappingURL=adjuncts.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"adjuncts.js","sourceRoot":"","sources":["../../src/data/adjuncts.ts"],"names":[],"mappings":"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"}
|