A scheduling web app built for the Needle Search DJ collective, used to manage open deck event sign-ups and availability. Live and in production.
Note: This repository was migrated from a private organization repo.
| Layer | Technology |
|---|---|
| Frontend | React 19, TypeScript |
| Routing | React Router v7 |
| State / Data Fetching | TanStack Query v5 |
| UI Components | Radix UI |
| Backend / Database | Supabase (PostgreSQL) |
| Edge Functions | Supabase Edge Functions (Deno) |
| Build Tool | Vite |
| Deployment | Netlify |
- Browse upcoming open deck events
- Event sign-up form — artist alias, DJ media, time slot availability, set description, contact info
- Pre-registration form for interest before full sign-ups open
- Confirmation pages after each submission
- Add-to-calendar support (Google, Apple, Outlook)
- Server-side submission handling via Supabase Edge Functions (Deno)
- Auto-generated TypeScript types from the live Supabase schema
src/
├── features/events/ # Event pages, components, hooks
├── components/ # Shared UI components
├── contexts/ # React context providers
├── hooks/ # Shared custom hooks
├── types/ # Generated Supabase DB types
└── utils/ # Helpers and utilities
supabase/
├── functions/ # Edge Functions (Deno runtime)
│ ├── sign-up-for-event/
│ └── pre-register-for-event/
└── migrations/ # SQL migration history
- Node.js (recommend NVM for version management)
- Supabase CLI (optional, for local Supabase or type generation)
Create a .env.development file in the project root with the required Supabase keys:
VITE_SUPABASE_URL=...
VITE_SUPABASE_ANON_KEY=...
npm install
npm run devThe dev server URL is printed in the terminal output.
npm run build # Production build
npm run lint # ESLint
npm run types # Regenerate TS types from linked Supabase project
npm run local-types # Regenerate TS types from local Supabase instanceDeployed on Netlify with continuous deployment from main. Build command: npm run build, publish directory: dist. SPA redirects configured in netlify.toml.
Supabase Edge Functions are deployed separately via the Supabase CLI.