Manizales de Pie is designed for Vercel deployment. TheDocumentation Index
Fetch the complete documentation index at: https://mintlify.com/astrxnomo/manizalesdepie/llms.txt
Use this file to discover all available pages before exploring further.
next.config.ts is Vercel-aware, proxy.ts runs in Node runtime rather than the edge runtime, and the build output is a standard Next.js application. There is no custom server, no external build step, and no container to manage — Vercel’s default Next.js preset handles everything.
Vercel deployment
Import the repository
In the Vercel dashboard, click Add New Project and import from GitHub. Use the
astrxnomo/manizalesdepie repository, or your own fork if you have made local changes. Vercel will detect the Next.js framework automatically — accept the defaults.Set environment variables
Before the first deploy, add all required environment variables under Project Settings → Environment Variables:
| Variable | Description |
|---|---|
NEXT_PUBLIC_SUPABASE_URL | Your Supabase project URL (from Project Settings → API) |
NEXT_PUBLIC_SUPABASE_PUBLISHABLE_KEY | The publishable (anon) key |
SUPABASE_SECRET_KEY | The secret (service role) key — server-only, never exposed to the browser |
NEXT_PUBLIC_SITE_URL | Your Vercel deployment URL, e.g. https://manizales-de-pie.vercel.app |
NEXT_PUBLIC_CURATOR_WHATSAPP | (Optional) The curator contact number, digits only with country code (e.g. 573001234567 for Colombia) |
lib/env.ts validates every variable at load time. A missing required variable fails the build with a clear message rather than surfacing as a runtime null.Deploy
Click Deploy. Vercel runs
npm run build, which validates environment variables, compiles the application, and runs the Next.js build pipeline. A successful build produces a standard Next.js output; no additional configuration is required.Update Supabase Auth redirect URLs
In your Supabase project, go to Authentication → URL Configuration and make two changes:
- Set Site URL to your production domain (e.g.
https://manizales-de-pie.vercel.app). - Add
https://<your-domain>/auth/callbackto the Redirect URLs allowlist.
Assign the first curator
The first user to sign in with Google will have the default The UUID is the user’s
viewer role. Promote them to curator by connecting to your Supabase database and running:id in the auth.users table, visible in Authentication → Users in the Supabase dashboard. A curator can approve, reject, and publish seed data rows from the /admin queue.Build commands
Frompackage.json, the available scripts are:
Content Security Policy
next.config.ts sets a strict Content-Security-Policy header applied to every route. The policy allows connections to these external origins:
- Supabase project URL —
https://*.supabase.coandwss://*.supabase.cofor PostgREST API calls and Realtime subscriptions. - CARTO basemap tiles —
https://basemaps.cartocdn.comandhttps://*.basemaps.cartocdn.comfor the map background layer. - Cloudflare Turnstile —
https://challenges.cloudflare.comfor bot protection on the public report form, when Turnstile keys are configured. - Geocoding and aftershock data —
https://nominatim.openstreetmap.org,https://overpass-api.de, andhttps://datos.sgc.gov.coare listed inconnect-src.
Custom domain
To serve the app from your own domain, add it in Vercel → Project → Domains, then update three places:NEXT_PUBLIC_SITE_URLenvironment variable in Vercel — change it tohttps://<your-domain>.- Supabase Auth → URL Configuration → Site URL — change to
https://<your-domain>. - Supabase Auth → URL Configuration → Redirect URLs — add
https://<your-domain>/auth/callback.
Known deployment gotchas
The following issues are documented inAGENTS.md and are easy to hit during a first deploy or after a refactor:
-
next.config.tsis only read at startup. ChangingremotePatterns(the list of allowed image hostnames fornext/image) requires a full redeploy to take effect — a hot reload is not enough. -
proxy.tsreplacesmiddleware.tsin Next.js 16. The session-refresh file is namedproxy.tsand exportsproxy, notmiddleware. Having bothproxy.tsandmiddleware.tspresent is a build error. Supabase’s own documentation still referencesmiddleware.ts— the pattern is correct, only the filename is outdated. -
Session refresh must happen before the response is committed. The Supabase SSR helper calls
supabase.auth.getClaims()early inproxy.ts, before any response headers are written. Calling it after the response is committed loses the refreshed cookie. -
.next/dev/can reference deleted routes after a refactor. If TypeScript reportsTS2307on a file that no longer exists, delete the.next/dev/directory and restart the dev server. The generated validator at.next/dev/types/validator.tssometimes holds stale references to route files that have been removed.
Supabase’s free tier supports two active projects per organization. If traffic spikes during an active emergency — which is exactly when it would — the free tier ceiling arrives at the worst possible moment. The documented escape route is upgrading to Supabase Pro. This is a known, accepted risk; plan for it before going live rather than during an incident.
