All checks were successful
🚀 Deploy / 🧪 Test (pull_request) Successful in 3m32s
🚀 Deploy / ʦ🔍 Typecheck & Lint (pull_request) Successful in 1m23s
🚀 Deploy / 🐳 Build (pull_request) Has been skipped
🚀 Deploy / 🚀 Deploy (pull_request) Has been skipped
🚀 Deploy / 🧪 Test (push) Successful in 3m29s
🚀 Deploy / ʦ🔍 Typecheck & Lint (push) Successful in 1m30s
🚀 Deploy / 🐳 Build (push) Successful in 1m17s
🚀 Deploy / 🚀 Deploy (push) Successful in 11s
ESPN's IndyCar standings aggregate lags hours behind a race finish (Palou stuck at 374 an evening after Mid-Ohio, vs. his true 409/P1). Add an OcBlacktopIndyCarStandingsAdapter that reads the fresher OC Blacktop feed and delegates to the existing ESPN IndyCarStandingsAdapter on any failure (missing key, network error, empty payload, or schema drift) so a flaky third party never breaks the sync. Per-row validation throws on missing id/name or unparseable position/points to route to the fallback rather than overwriting real standings with zeros, while still keeping legitimate 0-point backmarkers. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
38 lines
1.4 KiB
Text
38 lines
1.4 KiB
Text
NODE_ENV="development"
|
|
DATABASE_URL=""
|
|
# PgBouncer support (Vultr managed PostgreSQL)
|
|
# Set PGBOUNCER=true when DATABASE_URL points to a PgBouncer endpoint (port 6432).
|
|
# This disables prepared statements, required for PgBouncer transaction mode.
|
|
# DATABASE_DIRECT_URL is used by migrations; it must be a direct connection (port 5432).
|
|
# Leave both unset for local development with plain PostgreSQL.
|
|
PGBOUNCER=
|
|
DATABASE_DIRECT_URL=
|
|
BETTER_AUTH_SECRET=""
|
|
# Canonical public app URL used by auth links, OAuth callbacks, and Cloudinary webhook callbacks.
|
|
# Examples: http://localhost:5173, https://brackt.com
|
|
APP_URL=""
|
|
GOOGLE_CLIENT_ID=""
|
|
GOOGLE_CLIENT_SECRET=""
|
|
DISCORD_CLIENT_ID=""
|
|
DISCORD_CLIENT_SECRET=""
|
|
CONTAINER_REGISTRY=""
|
|
SENTRY_AUTH_TOKEN=""
|
|
SQUIGGLE_CONTACT_EMAIL=""
|
|
RESEND_API_KEY=""
|
|
TURNSTILE_SITE_KEY=1x00000000000000000000AA
|
|
TURNSTILE_SECRET_KEY=1x0000000000000000000000000000000AA
|
|
|
|
# Cloudinary avatar uploads. API secret must stay server-only.
|
|
CLOUDINARY_CLOUD_NAME=""
|
|
CLOUDINARY_API_KEY=""
|
|
CLOUDINARY_API_SECRET=""
|
|
|
|
# Shared secret for cron job endpoints (POST /admin/jobs/*).
|
|
# Must match the CRON_SECRET repo secret in Forgejo.
|
|
# Generate with: openssl rand -hex 32
|
|
CRON_SECRET=""
|
|
|
|
# OC Blacktop motorsport API — used to sync IndyCar championship standings
|
|
# (fresher than ESPN's aggregate). Free tier at https://ocblacktop.com/api.
|
|
# If unset, IndyCar standings fall back to ESPN.
|
|
OCBLACKTOP_API_KEY=""
|