mirror of
https://github.com/tiennm99/bsk.git
synced 2026-08-05 16:23:38 +00:00
- 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
23 lines
900 B
Bash
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=
|