This guide explains how to extend your Contentful content model to support the new flavor profile visualizations, brewing parameters, and enhanced coffee data.
The coffee ratings site now includes:
Add the following fields to your existing pageBlogPost content type:
| Field Name | Field ID | Type | Description | Validation |
|---|---|---|---|---|
| Flavor: Acidity | flavorAcidity |
Number (Decimal) | Acidity level (0-10 scale) | Min: 0, Max: 10 |
| Flavor: Body | flavorBody |
Number (Decimal) | Body/mouthfeel level (0-10 scale) | Min: 0, Max: 10 |
| Flavor: Sweetness | flavorSweetness |
Number (Decimal) | Sweetness level (0-10 scale) | Min: 0, Max: 10 |
| Flavor: Bitterness | flavorBitterness |
Number (Decimal) | Bitterness level (0-10 scale) | Min: 0, Max: 10 |
| Flavor: Fruitiness | flavorFruitiness |
Number (Decimal) | Fruitiness level (0-10 scale) | Min: 0, Max: 10 |
| Flavor: Aftertaste | flavorAftertaste |
Number (Decimal) | Aftertaste quality (0-10 scale) | Min: 0, Max: 10 |
| Field Name | Field ID | Type | Description | Validation |
|---|---|---|---|---|
| Primary Tasting Notes | tastingNotesPrimary |
Short text (List) | Main flavor notes (e.g., "chocolate", "cherry", "caramel") | Required, 1-5 items |
| Secondary Tasting Notes | tastingNotesSecondary |
Short text (List) | Supporting flavor notes | Optional, 0-5 items |
| Tasting Notes Description | tastingNotesDescriptor |
Long text | Detailed flavor description | Optional |
| Field Name | Field ID | Type | Description | Example |
|---|---|---|---|---|
| Brew Temperature | brewTemp |
Short text | Brewing temperature | "93°C" or "200°F" |
| Brew Ratio | brewRatio |
Short text | Coffee to water ratio | "1:16" |
| Brew Time | brewTime |
Short text | Total brew time | "3:30" |
| Grind Size | grindSize |
Short text | Recommended grind size | "Medium-fine" |
Instead of adding brewing parameters to each coffee review, it's better to enhance your existing brew method content type:
| Field Name | Field ID | Type | Description | Example |
|---|---|---|---|---|
| Temperature | temperature |
Short text | Recommended brewing temperature | "93°C (200°F)" |
| Ratio | ratio |
Short text | Coffee to water ratio | "1:16 (15g:240ml)" |
| Brew Time | brewTime |
Short text | Total extraction time | "3:00-3:30" |
| Grind Size | grindSize |
Short text | Recommended grind size | "Medium-fine" |
| Equipment | equipment |
Short text | Required equipment | "Gooseneck kettle, timer" |
Log into your Contentful space: xe1b1r0s7mov
Navigate to Content model → pageBlogPost
Click Add field and create each flavor profile field:
flavorAcidity)Repeat for all flavor fields: acidity, body, sweetness, bitterness, fruitiness, aftertaste
Add tasting notes fields:
You have two options:
Go through each coffee review and add flavor profile scores based on your tasting experience.
The current implementation includes intelligent mock data generation that:
To use mock data temporarily, do nothing - the site will automatically generate reasonable flavor profiles until you add real Contentful data.
The code in _data/coffee.js is already set up to:
flavorAcidity)Once you add the fields to Contentful, simply populate them and rebuild the site.
| Score | Description | Examples |
|---|---|---|
| 9-10 | Exceptional | Vibrant, complex, remarkable |
| 7-8 | Very Good | Strong, pleasant, well-developed |
| 5-6 | Good | Present, balanced, noticeable |
| 3-4 | Mild | Subtle, light, understated |
| 1-2 | Very Light | Barely present, minimal |
| 0 | None | Absent |
Rating: 9.2/10
Origin: Ethiopia - Yirgacheffe
Process: Washed
Flavor Profile:
- Acidity: 9.0
- Body: 6.5
- Sweetness: 7.5
- Bitterness: 3.0
- Fruitiness: 9.5
- Aftertaste: 8.5
Primary Tasting Notes:
- Blueberry
- Jasmine
- Bergamot
Secondary Tasting Notes:
- Black tea
- Honey
- Silky
Tasting Notes Description:
"This exceptional Yirgacheffe showcases classic Ethiopian characteristics
with explosive blueberry notes, delicate jasmine florals, and a vibrant
bergamot-like acidity. The finish is clean, sweet, and remarkably persistent."
✅ Site now generates intelligent flavor profiles automatically ✅ All visualizations working with estimated data ✅ No Contentful changes required
Start with your highest-rated coffees (9+) and work down:
Use Contentful's bulk editing features or API to populate remaining entries.
After adding fields to Contentful:
npm run buildflavorAcidity not flavor_acidity)ratingStats data is availableConsider adding:
For questions about:
_data/coffee.js commentsCurrent Status: ✅ Mock data implementation complete Next Step: Add Contentful fields and populate with real data Estimated Time: 1-2 hours to set up fields, ongoing for data entry