onContactClick is not defined — Added default empty function fallbacks to all Footer props@tailwindcss/vite plugin (correct for production).env (see below)localhost:5000 in dev (was using env var)() => {} values to prevent crashesgetProfile — Fixed to support both Clerk auth AND JWT auth.vercel.app support alongside .netlify.appreq → _req in health route handlers```bash cd frontend cp .env.example .env
npm install npm run dev
```
```bash cd backend cp .env.example .env.local
npm install npm run dev
```
backendnpm install && npm run buildnpm run startMONGO_URI → Your MongoDB Atlas connection stringJWT_SECRET → Any random 32+ character stringCLERK_SECRET_KEY → From Clerk Dashboard (production)CLERK_WEBHOOK_SECRET → From Clerk Dashboard → WebhooksGEMINI_API_KEY → From Google AI StudioFRONTEND_URL → Your Netlify URL (set after frontend deploy)https://trip-hawks-backend.onrender.com)frontendnpm run buildfrontend/distVITE_CLERK_PUBLISHABLE_KEY → Clerk production publishable key (pk_live_...)VITE_API_URL → Your Render backend URL (e.g. https://trip-hawks-backend.onrender.com)After Netlify deploys, go back to Render → Environment Variables:
FRONTEND_URL = https://your-site.netlify.apphttps://your-backend.onrender.com/api/webhooks/clerkVITE_CLERK_PUBLISHABLE_KEY — From Clerk DashboardVITE_API_URL — Backend URL (only for production)MONGO_URI — MongoDB Atlas connection stringJWT_SECRET — Random secret keyCLERK_SECRET_KEY — From Clerk DashboardCLERK_WEBHOOK_SECRET — From Clerk WebhooksGEMINI_API_KEY — From Google AI StudioFRONTEND_URL — Your frontend domain (for CORS)