Skip to content
codexa

Websites · React

Family winery

Elegant winery site with the current releases and prices, the vineyard year, tastings, cellar door hours and bookings.

Family winery starter, as built from its own files
Starter screenshot captured from this template's own build at 1440×900. It shows the template as it ships, not output generated from a prompt.

What you get

A site for a vineyard or small winery: current wines with bottle prices, the story of the vineyard, a year in the vines, tasting experiences, cellar door hours and a tasting booking form. All content lives in src/site.ts.

Files

Exactly what is copied into a new project: 13 files, nothing generated.

Raw data: GET /api/v1/templates/site-winery

src/site.ts
src/site.ts
import type { Site } from "./types"; /** Everything this site shows. Edit freely. */export const site: Site = {  "brand": "Calder Ridge",  "nav": [    {      "label": "Wines",      "href": "#wines"    },    {      "label": "Vineyard",      "href": "#vineyard"    },    {      "label": "Tastings",      "href": "#tastings"    },    {      "label": "Cellar door",      "href": "#cellar-door"    }  ],  "navCta": {    "label": "Book a tasting",    "href": "#contact"  },  "sections": [    {      "kind": "hero",      "variant": "editorial",      "eyebrow": "Family vineyard · Willamette Valley, Oregon",      "title": "Pinot noir and chardonnay from one hillside, made by one family.",      "text": "Twenty-two acres of volcanic soil above Dundee, farmed without herbicides since 2006. About 3,000 cases a year, sold mostly from the cellar door.",      "primary": {        "label": "Book a tasting",        "href": "#contact"      },      "secondary": {        "label": "Current releases",        "href": "#wines"      },      "visual": {        "type": "tiles",        "tones": [          "#14532d",          "#d6d3c4",          "#7f1d1d",          "#3f3a2e"        ],        "caption": "Harvest on the upper block, September"      }    },    {      "kind": "menu",      "id": "wines",      "eyebrow": "Current releases",      "title": "The wines",      "text": "Club members save 15%. Shipping to 38 states.",      "groups": [        {          "name": "White & rosé",          "items": [            {              "name": "Estate Chardonnay 2023",              "text": "Pear, hazelnut, a little oak",              "price": "$38"            },            {              "name": "Pinot Gris 2024",              "text": "Bright, dry, white peach",              "price": "$26"            },            {              "name": "Rosé of Pinot Noir 2025",              "text": "Strawberry, sea salt",              "price": "$24"            }          ]        },        {          "name": "Red",          "items": [            {              "name": "Estate Pinot Noir 2022",              "text": "Cherry, forest floor, silky",              "price": "$48"            },            {              "name": "Upper Block Pinot Noir 2021",              "text": "Our oldest vines, 280 cases",              "price": "$72"            },            {              "name": "Hillside Gamay 2024",              "text": "Served lightly chilled",              "price": "$29"            }          ]        }      ]    },    {      "kind": "split",      "id": "vineyard",      "eyebrow": "The vineyard",      "title": "Two generations on the same slope",      "text": "Ellen and Rob Calder planted the first vines in 2004. Their daughter Nora makes the wine now, in a small winery built into the hill.",      "bullets": [        "Hand-picked and sorted at the vine",        "Native yeast fermentations",        "Sheep graze the rows from November to March"      ],      "visual": {        "type": "card",        "tone": "#14532d",        "title": "Harvest volunteer weekend",        "lines": [          "Pick grapes with the family",          "Lunch under the oaks",          "Mid-September, 20 places"        ]      }    },    {      "kind": "timeline",      "eyebrow": "The year",      "title": "A year in the vines",      "items": [        {          "period": "January – March",          "title": "Pruning",          "text": "Every vine pruned by hand, the cuttings mulched back into the rows."        },        {          "period": "April – June",          "title": "Budbreak & flowering",          "text": "Frost watch at night and shoot thinning for even ripening."        },        {          "period": "July – August",          "title": "Véraison",          "text": "Grapes change colour. We drop fruit to keep yields low."        },        {          "period": "September – October",          "title": "Harvest",          "text": "Six weeks of early mornings, then fermentation in open-top tanks."        }      ]    },    {      "kind": "pricing",      "id": "tastings",      "eyebrow": "Tastings",      "title": "Visit and taste",      "text": "Per person. Tasting fees are waived with a three-bottle purchase.",      "plans": [        {          "name": "Cellar door flight",          "price": "$25",          "text": "Five current releases at the tasting bar.",          "features": [            "About 45 minutes",            "Walk-ins welcome",            "Picnic lawn access"          ],          "cta": {            "label": "Book",            "href": "#contact"          }        },        {          "name": "Vineyard walk",          "price": "$55",          "text": "A walk through the blocks with one of the family, then a seated tasting.",          "features": [            "About 90 minutes",            "Library wines included",            "Saturdays at 11"          ],          "featured": true,          "cta": {            "label": "Book",            "href": "#contact"          }        },        {          "name": "Barrel room",          "price": "$85",          "text": "Taste from the barrel with our winemaker, Nora.",          "features": [            "About 2 hours",            "Local cheese board",            "Up to 8 guests"          ],          "cta": {            "label": "Book",            "href": "#contact"          }        }      ]    },    {      "kind": "hours",      "id": "cellar-door",      "eyebrow": "Cellar door",      "title": "Visit the cellar door",      "text": "Twenty minutes from Newberg. Well-behaved dogs welcome on the lawn.",      "rows": [        {          "day": "Thursday – Monday",          "time": "11:00 – 17:00"        },        {          "day": "Tuesday – Wednesday",          "time": "By appointment"        },        {          "day": "Last tasting",          "time": "16:15"        }      ],      "address": "18400 NE Calder Ridge Rd, Dundee, OR",      "phone": "(503) 555-0129",      "email": "visit@calderridge.com"    },    {      "kind": "contact",      "eyebrow": "Bookings",      "title": "Book a tasting",      "text": "Booking is recommended for groups of four or more and required for the vineyard walk and barrel room.",      "fields": [        "name",        "email",        "date",        "guests",        "message"      ],      "button": "Request booking"    }  ],  "footer": {    "text": "Estate pinot noir and chardonnay from the Dundee Hills.",    "columns": [      {        "title": "Visit",        "links": [          "18400 NE Calder Ridge Rd",          "Thursday to Monday"        ]      },      {        "title": "Wine",        "links": [          "Wine club",          "Shipping",          "Trade enquiries"        ]      },      {        "title": "Follow",        "links": [          "Instagram",          "Newsletter"        ]      }    ],    "legal": "© Calder Ridge. Sample content: replace it in src/site.ts. Please enjoy responsibly; 21+ only."  }};

Remix

Remix this template

Describe what to change and the agent starts from Family winery's files. The box is already started for you: finish “Start from Family winery and …”

Agent ready

Creates a free account first; your idea is carried over.

Dependencies

Documented from the template's package.json. The runtime has a prebuilt dependency set for Vite + React + TypeScript, so installs are fast.

  • react^19.1.0
  • react-dom^19.1.0
  • vite^6.3.0
  • @vitejs/plugin-react^4.4.0
  • tailwindcss^4.1.0
  • @tailwindcss/vite^4.1.0
  • typescript^5.8.0

How it runs

Framework
Vite + React + TypeScript
Dev command
npm run dev
Build command
npm run build
Output directory
dist
Port
5173
Entry route
/

Projects run in an isolated sandbox with a live preview. Read the projects documentation for settings, snapshots and deployment.

All templates

Build on Family winery

Create a free account, start from this template, and ask the AI agent to turn it into your app.