Careme is your personal chef and sommilier. It will
- Take your favorite grocery store based on location
- Check the stores inventory for fresh meat and seasonal produce
- 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 generationGEMINI_CRITIQUE_MODEL- Gemini model for recipe critique (defaults togemini-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 generatedAuthorization=Basic ...header value from the OpenTelemetry connection tile.SENDGRID_API_KEY- To allow sending weekly recipe lists via emailALBERTSONS_SEARCH_SUBSCRIPTION_KEY- Albertsons-family pathway search subscription keyALBERTSONS_SEARCH_REESE84- fallback Albertsons-familyreese84cookie when cache is empty or staleBRIGHTDATA_BROWSER_WS_ENDPOINT- Bright Data Browser API websocket endpoint forcmd/albertsonsreese84; may include embedded credentialsAZURE_STORAGE_ACCOUNT_NAMEandAZURE_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#
- Uptime https://stats.uptimerobot.com/ehEFlvlNM9
- Cloudflare for dns and https proxying