Free portfolio galleries for human-made art. Artists get a beautiful shareable page at [handle].galleryclub.online.
- Next.js 14 (App Router)
- Supabase (auth, Postgres, storage)
- Tailwind CSS
- TypeScript
-
Install dependencies
npm install
-
Environment variables
Copy
.env.local.exampleto.env.localand add your Supabase credentials:NEXT_PUBLIC_SUPABASE_URL=your_url NEXT_PUBLIC_SUPABASE_ANON_KEY=your_key -
Database
Run
supabase/schema.sqlin the Supabase SQL editor (orsupabase/migrations/20250524_dashboard.sqlif upgrading).Create public storage buckets:
artworks— piece uploads ([user_id]/[uuid].jpg)avatars— profile photos
Apply the storage policies commented at the bottom of
schema.sql. -
Run locally
npm run dev
Open http://localhost:3000.
Without env vars, visit http://localhost:3000/maya-lin to see the public gallery page with sample data.
src/
├── app/
│ ├── [handle]/ # Public gallery (core product)
│ ├── page.tsx # Homepage
│ ├── signup/ login/ # Auth
│ └── dashboard/ # Artist dashboard (protected)
├── components/
│ ├── dashboard/ # Upload, profile editor, piece cards
│ ├── gallery/ # Salon wall, frames, see-all grid
│ ├── layout/ # Wordmark, footer
│ └── ui/ # Badge, share, heart
└── lib/
├── supabase/ # Client, server, middleware
├── data.ts # Data fetching
└── demo-data.ts # Sample gallery for dev
- Project scaffold + Supabase client setup
-
/[handle]public gallery (wall view, grid, about, hearts, share) - Signup / login / handle selection
- Dashboard (upload, edit, delete)
- Homepage polish, explore page
| Token | Value |
|---|---|
| Cream bg | #f5f0e8 |
| Text | #2a2018 |
| Gold | #8B6914 |