Clickholes

A focused workspace for vineyards, appellations, and producers.

All of your wine data in one place.

Use Clickholes as the single source of truth for your vineyards, appellations, and producers. Start from a high-level view, then drill down into the details for each record.

  • 1 Browse vineyards grouped by appellation and org.
  • 2 Capture parent/child structure for complex sites.
  • 3 Keep producers and regions in sync across the app.

Jump into the catalog

Built around how you actually work.

Use simple forms to add new data, then move smoothly between related records without losing context.

Create vineyards fast

Start from a new vineyard and link it to an appellation, producer, and optional parent — all from a single screen.

Stay in the graph

Jump from a vineyard to its org or appellation, then back again with a single click.

Make changes with confidence

Model-level tests keep your relationships, columns, and indexes in sync as the schema evolves.

A small, well-factored schema.

Clickholes keeps the core tables intentionally minimal: vineyards, appellations, orgs, and a join model. That makes it easy to extend without losing clarity.

  • Vineyards belong to an appellation, an optional org, and an optional parent vineyard.
  • Orgs can be nested, so you can model portfolios and groups.
  • Appellations stay focused on name and description.

Active Record snapshot

Vineyard
  belongs_to :appellation
  belongs_to :org, optional: true
  belongs_to :parent, class_name: "Vineyard", optional: true

Org
  belongs_to :parent, class_name: "Org", optional: true

AppellationsVineyard
  belongs_to :appellation
  belongs_to :vineyard
      

Designed for experimentation.

This app is a playground for vineyard data and Rails 8 conventions. The UI is inspired by Tailwind's Primer template, adapted for a simpler domain.

Running locally? Try seeding a few orgs, appellations, and vineyards, then explore how the relationships behave through the UI and the shoulda-powered tests.