Bonfire VOD + events portal built with Next.js App Router.
- Next.js 16
- React 19 + TypeScript
- Tailwind CSS 4
- Redux Toolkit + TanStack React Query
next-intl- Neon Postgres
- Bun
- Pages are pre-rendered in English at build time.
- Non-English localization is applied on the client after hydration.
bun install
bun run devOpen http://localhost:3000.
bun run dev- Start local dev serverbun run build- Production buildbun run start- Run production buildbun run typecheck- TypeScript onlybun run check- Lint + format check + typecheckbun run fix- Auto-fix lint + format
Copy from .env.example and fill required values.
Core:
BNF_NEON_DATABASE_URLBNF_HEARTS_SALT
Auth:
BNF_OTP_SECRETBNF_JWT_PRIVATE_KEYBNF_JWT_PUBLIC_KEYBNF_JWT_ISSUERBNF_JWT_AUDIENCE
Forms / bot protection:
BNF_TURNSTILE_SECRET_KEYNEXT_PUBLIC_BNF_TURNSTILE_SITE_KEY
Check-ins:
BNF_CHECKIN_SECRET
Email:
BNF_RESEND_API_KEYBNF_RESEND_FROM
Optional:
BNF_LOG_SALT
- Auth:
/api/v1/auth/* - Library/filtering:
/api/v1/library - Video engagement:
/api/v1/videos/[id]/likes,/api/v1/videos/[id]/boosts - Event RSVPs:
/api/v1/events/[eventId]/rsvps - CSRF:
/api/v1/csrf
app/- App Router pages, API routes, UI, business logicdb/- SQL schema and drizzle migrationspublic/- Static assets
- JWT auth (Ed25519)
- CSRF protection for forms
- Cloudflare Turnstile + botid
- Rate limiting on sensitive endpoints