BandPal is a social network for musicians and people looking to join or build a band. It also includes tools for band administration and commerce.
- Next.js 15 (App Router)
- Bun (Package manager & runtime)
- Supabase (Auth, Database, Edge Functions, Realtime)
- Prisma (ORM)
- Infisical (Secrets manager for environment variables)
- Tailwind CSS
- Playwright (E2E testing)
- Algolia (Search/autocomplete)
- Vercel (Hosting & CI/CD)
- Husky (Git hooks)
- Bun
- Docker Desktop
- Infisical CLI
(Install withbun add -g @infisical/cliif not already installed)
-
Clone the repo
-
Install dependencies:
bun install
-
Start Supabase (runs with Docker):
bun supabase:start
-
Reset & seed local DB:
bun db:reset:dev
-
Run the dev server:
bun dev
-
(One-time) Enable realtime for chat messages:
i. Visit Supabase Studio
ii. Navigate to public.Message table
iii. Enable "Realtime" in the top-right
| Task | Command |
|---|---|
| Start dev server | bun dev |
| Start Supabase local | bun supabase:start |
| Stop Supabase | bun supabase:stop |
| Reset DB (dev) | bun db:reset:dev |
| Open Prisma Studio | bun studio |
| Run E2E tests (UI) | bun test:e2e |
| Run tests (CI) | bun test:e2e:ci |
| Lint + fix | bun lint |
| Clean project | bun clean |
We use Infisical to manage secrets for both development and production.
Use infisical run --env=dev -- <command> to inject variables locally. This is handled automatically in all bun scripts.
-
App Router (Next.js 15) using the
app/directory -
Database managed with Prisma and Supabase
-
Search powered by Algolia
-
State management handled inline via server actions and local state
-
Realtime chat via Supabase Channels
-
Auth via Supabase (email/password & social)
-
Use feature branches
-
PRs are automatically deployed via Vercel Preview Deployments
-
Husky runs pre-commit checks (formatting, linting)