Files
bsk/.env.example
tiennm99 9f6eb24fb4 feat(reminders): recheck reminders + nightly media sweep (Phase 7)
- in-app reminders page: patients with recheck_date due/overdue or within 7
  days (clinical-gated, VN-local); sidebar nav + vi/en
- nightly Vercel Cron (/api/cron/nightly, CRON_SECRET-gated) enforces the
  7-day image retention window: removes stale Storage objects + soft-deletes
  rows, keeping the free-tier storage budget bounded
- CRON_SECRET added to env schema + .env.example; vercel.json cron 01:00 VN
2026-07-25 13:23:24 +07:00

23 lines
900 B
Bash

# Application
NEXT_PUBLIC_APP_ENV=dev # dev | preview | prod — determines Redis key namespace
# Supabase (new key format — old supabase_key_* retires 2026-12-31)
NEXT_PUBLIC_SUPABASE_URL=
NEXT_PUBLIC_SUPABASE_PUBLISHABLE_KEY= # sb_publishable_* (browser, replaces anon key)
SUPABASE_SECRET_KEY= # sb_secret_* (server, replaces service role key)
# Upstash Redis (shared DB; bsk: prefix enforced by lib/upstash.ts)
UPSTASH_REDIS_REST_URL=
UPSTASH_REDIS_REST_TOKEN=
# QStash (background jobs; routes verify signatures via Receiver)
QSTASH_URL=https://qstash.upstash.io
QSTASH_TOKEN=
QSTASH_CURRENT_SIGNING_KEY=
QSTASH_NEXT_SIGNING_KEY=
# Vercel Cron secret — the nightly media-retention sweep (/api/cron/nightly)
# rejects requests without `Authorization: Bearer $CRON_SECRET`. Set the same
# value in the Vercel project so Cron can authenticate.
CRON_SECRET=