Are you an LLM? Read llms.txt for a summary of the docs, or llms-full.txt for the full context.
Skip to content

Cellar

demo of cellar

A simple, self-hosted wine collection app built in Go.

  • Single binary with embedded assets
  • Password authentication with session cookies
  • Add, edit, and delete wines from your collection
  • AI-powered tasting notes via Claude
  • Pentagon and bar visualizations for wine profiles
  • Image upload with automatic JPEG processing
  • Dark themed UI with Commit Mono font
  • SQLite for persistent storage

Configure

Environment Variables

VariableDescriptionDefault
CELLAR_PASSWORDPassword for login authenticationchangeme
CELLAR_DB_PATHSQLite database file pathcellar.sqlite
ANTHROPIC_API_KEYAnthropic API key for AI features
SITE_URLPublic URL for RSS feed and linkshttp://localhost:3000
SITE_TITLESite title for RSS feed and metadataCellar
SITE_DESCRIPTIONSite description for RSS feed and metadataPersonal wine tasting log
HOSTServer bind address127.0.0.1
PORTServer port3000
COOKIE_SECUREEnable HTTPS-only cookiesfalse

The ANTHROPIC_API_KEY is optional but required for AI-powered tasting notes and image analysis.

Deploy

Railway

The easiest way to deploy Cellar is with the one-click Railway template. See the Deploying with Railway guide for a walkthrough of the process. Cellar requires CELLAR_PASSWORD during the configure step, and optionally ANTHROPIC_API_KEY if you want AI-powered tasting notes and image analysis.

Deploy on Railway

Docker

git clone https://github.com/stevedylandev/cellar.git
cd cellar
cp .env.example .env
# Edit .env with your password and Anthropic API key
docker compose up -d

This will start Cellar on port 3000 with a persistent volume for the SQLite database.

Binary

Install with Homebrew:

brew install stevedylandev/tap/cellar

Or grab a prebuilt binary from the releases page.

You can also build from source:

cd apps/cellar && go build .

The resulting binary at ./cellar is self-contained with all assets embedded. Copy it to your server with a configured .env file and run it directly.

Use

Your wine collection is publicly viewable at / with individual wine pages at /wines/{short_id}. The /wishlist page lists wines you want to try but haven't tasted yet — no scores, no pentagon chart, just the basics. Promote a wishlist wine once you've tasted it to move it into the main cellar and fill in scores.

Admin

Log in at /admin/login with your configured password to access the admin pages.

PageDescription
/adminAdmin dashboard listing every wine in your collection
/admin/newAdd a new wine, optionally using AI image analysis to prefill details
/admin/edit/{short_id}Edit an existing wine
/wishlistWishlist view — shows inline edit/promote/delete actions when logged in
/admin/wishlist/newAdd a new wine to the wishlist (no scores)
/admin/wishlist/edit/{short_id}Edit a wishlist wine