A free, login-required platform mapping and connecting Australia's creative industries — built with Vite, React, TypeScript, Supabase, and Mapbox.
# Install dependencies
npm install
# Copy environment template and fill in values
cp .env.example .env
# Start dev server (http://localhost:8080)
npm run devSee .env.example for all frontend variables. Required:
| Variable | Description |
|---|---|
VITE_SUPABASE_URL |
Supabase project URL |
VITE_SUPABASE_PUBLISHABLE_KEY |
Supabase anon/public key |
VITE_MAPBOX_TOKEN |
Optional; falls back to get-mapbox-token edge function |
Edge function secrets (Resend, Google Places, etc.) are configured in the Supabase dashboard under Project Settings → Edge Functions → Secrets. If you previously used Stripe, remove STRIPE_SECRET_KEY and related secrets from the dashboard.
| Command | Description |
|---|---|
npm run dev |
Start Vite dev server |
npm run build |
Production build |
npm run lint |
ESLint |
npm run typecheck |
TypeScript check (tsc -b --noEmit) |
npm run test |
Vitest unit tests |
npm run test:e2e |
Playwright smoke tests (starts dev server) |
npm run validate |
lint + typecheck + test + build |
- Frontend: React 18, React Router, TanStack Query, shadcn/ui, Tailwind CSS
- Backend: Supabase (Auth, Postgres, RLS, Storage, Edge Functions)
- Map: Mapbox GL via
get-locationsedge function (full contacts for signed-in users) - Access: Free accounts — login required for map and main app features
| Route | Access |
|---|---|
/ |
Public landing |
/map |
Free account (login required) |
/auth |
Sign in / sign up |
/blog, /events, /opportunities, etc. |
Free account (login required) |
/collaborator |
Collaborator/admin role |
/entity-dashboard |
Creative business accounts (account_type) |
# Migrations live in supabase/migrations/
# Edge functions in supabase/functions/
# Deno tests for get-locations helpers
cd supabase/functions/get-locations && deno test helpers.test.tsGitHub Actions runs on push/PR to main: npm ci → lint → typecheck → test → build.
Deploy via Lovable or any static host serving the Vite dist/ output. Set environment variables in your hosting provider. Configure Supabase edge function secrets separately.
Set VITE_MAINTENANCE_MODE=true to show the maintenance page on all routes.