Multi-user supermarket flyer watcher for Vancouver BC. The web app renders Postgres-cached flyer data only; the worker owns scraping, cache warming, vision extraction, and SMTP email digests.
corepack enable
pnpm install
pnpm buildFor local development with Postgres:
docker compose -f compose.yaml -f compose.local.yaml up --buildThe web app runs on port 3000; the worker listens for warm jobs and runs a
periodic sweep.
DATABASE_URLPUBLIC_BASE_URLSESSION_SECRETCONSENTKEYS_ISSUER_URLCONSENTKEYS_CLIENT_IDCONSENTKEYS_CLIENT_SECRETMAIL_FROMSMTP_HOSTSMTP_PORTSMTP_USERSMTP_PASSWORD
Optional SMTP environment:
SMTP_SECURE
Optional vision environment for Sungiven:
VISION_BASE_URLVISION_MODELOPENAI_API_KEY
Production uses Defang's x-defang-llm model provider, which deploys an
OpenAI-compatible gateway to Bedrock. The default production model is
qwen.qwen3-vl-235b-a22b; OPENAI_API_KEY defaults to the gateway token and
does not need to be a Bedrock API key.
Flipp support uses an unofficial endpoint. It is isolated behind the shared
FlyerSource interface, cached, and treated as best-effort because it may change
or stop working without notice.