# AquaFlow now runs entirely as one Next.js app (frontend + API routes), # deployed as a single Vercel project. Every variable below is needed — # set them all in Vercel's Project Settings -> Environment Variables. # ---- MongoDB ---- MONGODB_URI=mongodb+srv://user:password@cluster0.mongodb.net/aquaflow?retryWrites=true&w=majority # ---- Auth / JWT ---- JWT_ACCESS_SECRET=replace_with_a_long_random_string JWT_REFRESH_SECRET=replace_with_a_different_long_random_string JWT_ACCESS_TTL=15m JWT_REFRESH_TTL=30d DELIVERY_MAX_DEVICES=2 # ---- Platform operator ---- # Comma-separated emails with cross-tenant access to /platform. The account # must also carry the platformAdmin flag, set only by `npm run seed` or # `npm run migrate:identity`. Removing an email here revokes access. # Public signup refuses these addresses. PLATFORM_ADMIN_EMAILS= # ---- Invite links ---- # Public base URL used in staff invite links. Optional: defaults to the # address the request came in on. APP_URL= # ---- M-Pesa (optional, off for the pilot) ---- # M-Pesa STK Push is out of scope for the pilot. While this is false every # /api/mpesa route returns 404 and the Daraja variables below are ignored. # If you turn it on in production, DARAJA_CALLBACK_IP_ALLOWLIST is required. FEATURE_MPESA=false # ---- Safaricom Daraja (only read when FEATURE_MPESA=true) ---- DARAJA_ENV=sandbox DARAJA_CONSUMER_KEY=xxxxxxxxxxxxxxxx DARAJA_CONSUMER_SECRET=xxxxxxxxxxxxxxxx DARAJA_SHORTCODE=174379 DARAJA_PASSKEY=bfb279f9aa9bdbcf158e97dd71a467cd2e0c893059b10f78e6b72ada1ed2c919 DARAJA_TRANSACTION_TYPE=CustomerPayBillOnline # Must be this deployment's own public URL + /api/mpesa/callback, set # AFTER your first deploy once you know the real domain, e.g. # https://your-app.vercel.app/api/mpesa/callback DARAJA_CALLBACK_URL=https://your-app.vercel.app/api/mpesa/callback DARAJA_CALLBACK_IP_ALLOWLIST= # ---- Seed / bootstrap ---- SEED_SUPER_ADMIN_EMAIL=admin@aquaflow.local SEED_SUPER_ADMIN_PASSWORD=change_me_immediately