Skip to main content
This page complements Development (clone, env, run). It is a high-level map of integrations as implemented under src/. For exact env variable names, search the repo or read .env.example if your team maintains one.

Application core

Build & developer tooling

These ship in package.json but are not “runtime product” integrations — they support type-checking, linting, and editor experience.

Supabase (auth, database, server patterns)

Packages: @supabase/ssr, @supabase/supabase-js.
Twilio in this repo: Twilio is the typical SMS backend when you enable phone auth in Supabase. Cora depends on Supabase’s phone APIs; configure Twilio (or another supported provider) in Supabase so OTP messages actually deliver.

Cloudflare

Turnstile (bot protection)

Env: NEXT_PUBLIC_TURNSTILE_SITE_KEY, TURNSTILE_SECRET_KEY. The widget is rendered from turnstile-field on sign-up and login pages. Server-side verification against https://challenges.cloudflare.com/turnstile/v0/siteverify runs in the signup server action (actions.tsx) before creating the account. The login action currently authenticates with Supabase only (no Turnstile token check in that action).

R2 (object storage for images)

Env: S3_ENDPOINT, S3_KEY_ID, S3_SECRET_KEY, bucket names passed as database in form data, plus optional NEXT_PUBLIC_R2_PUBLIC_AVATAR_URL for public avatar URLs. The route /api/cloudflare (src/app/api/cloudflare/route.ts) uses the AWS SDK for JavaScript v3 modules @aws-sdk/client-s3 and @aws-sdk/s3-request-presigner against an R2-compatible S3 endpoint (auto region in the client config). It uploads, lists/fetches, and deletes objects (report images and avatars). Client-side helpers live in cfhelpers.tsx (POST/GET/DELETE via fetch to that API).
The path is named cloudflare because storage is Cloudflare R2; implementation is S3-compatible, not the Cloudflare Images product.

Google

Env: NEXT_PUBLIC_GOOGLE_MAPS_API_KEY (and any keys your Places/autocomplete setup requires).

Vercel (hosting & observability)

Web Push & PWA

Other dependencies (lighter touch)

This documentation site (Mintlify)

The docs/ folder is a separate Mintlify site. Branding and navigation are controlled only by docs/docs.json. It does not change how the Next.js app runs.

Run the app locally

Install dependencies, configure .env.local, and npm run dev.