ai cooking
0
fork

Configure Feed

Select the types of activity you want to include in your feed.

Go 87.2%
HTML 6.8%
JavaScript 0.5%
Shell 0.4%
CSS 0.3%
Dockerfile 0.1%
Other 4.7%
796 50 8

Clone this repository

https://tangled.org/northbriton.net/careme https://tangled.org/did:plc:qv4hafijvatyb773lcm6c6ru/careme
git@tangled.org:northbriton.net/careme git@tangled.org:did:plc:qv4hafijvatyb773lcm6c6ru/careme

For self-hosted knots, clone URLs may differ based on your setup.

Download tar.gz
README.md

Careme is your personal chef and sommilier. It will

  1. Take your favorite grocery store based on location
  2. Check the stores inventory for fresh meat and seasonal produce
  3. Generate a weekly meal plan from a variety of cuisines and cooking styles.

Configuration#

The application is configured via environment variables:

Mandatory#

  • KROGER_CLIENT_ID - Kroger API client ID (required)
  • KROGER_CLIENT_SECRET - Kroger API client secret (required)
  • AI_API_KEY - OpenAI API key for recipe generation and chat (required)

Optional#

  • GEMINI_API_KEY - Gemini API key for cached recipe critique generation
  • GEMINI_CRITIQUE_MODEL - Gemini model for recipe critique (defaults to gemini-2.5-flash)
  • CLARITY_PROJECT_ID - Microsoft Clarity project ID for web analytics (optional)
  • GOOGLE_TAG_ID - Google Ads/gtag ID for web analytics (optional)
  • GOOGLE_CONVERSION_LABEL - Google Ads conversion label used on /auth/establish?signup=true (optional)
  • OTEL_EXPORTER_OTLP_ENDPOINT - OTLP HTTP endpoint. For Grafana Cloud, use the endpoint from the OpenTelemetry connection tile.
  • OTEL_EXPORTER_OTLP_HEADERS - OTLP headers. For Grafana Cloud, use the generated Authorization=Basic ... header value from the OpenTelemetry connection tile.
  • SENDGRID_API_KEY - To allow sending weekly recipe lists via email
  • ALBERTSONS_SEARCH_SUBSCRIPTION_KEY - Albertsons-family pathway search subscription key
  • ALBERTSONS_SEARCH_REESE84 - fallback Albertsons-family reese84 cookie when cache is empty or stale
  • BRIGHTDATA_BROWSER_WS_ENDPOINT - Bright Data Browser API websocket endpoint for cmd/albertsonsreese84; may include embedded credentials
  • AZURE_STORAGE_ACCOUNT_NAME and AZURE_STORAGE_PRIMARY_ACCOUNT_KEY - enable Azure Blob-backed cache storage

For Grafana Cloud, the direct OTLP setup uses standard upstream OpenTelemetry env vars. Grafana's docs provide generated values for OTEL_EXPORTER_OTLP_ENDPOINT and OTEL_EXPORTER_OTLP_HEADERS.

if you're

  • ENABLE_MOCKS - For testing if you have none of the above

Development#

See agents.md for some more but go test ./... on any go change and

bash tailwind/generate.sh

if you change input css or any *.html

Cache Key Layout#

See docs/cache-layout.md for the authoritative cache key/prefix layout and backend notes.

Frontend Approach#

  • Prefer server-rendered HTML and HTMX for interactive behavior.
  • Avoid SPA-style architecture for routine page interactions.
  • Keep custom JavaScript minimal and focused on browser-only APIs.
  • Migration plan: docs/htmx-migration-plan.md

Live site#