A modern, mobile-first web application for browsing and booking photobooth and videography services at BOWS events.
- Frontend: Next.js 16 (App Router), React 19, TypeScript
- Styling: Tailwind CSS with custom brand colors
- Backend: Supabase (PostgreSQL, Authentication, Storage)
- State Management: Zustand (for shopping cart)
- Form Handling: React Hook Form + Zod validation
- UI Components: Custom components with Lucide icons
- Deployment: Vercel (recommended)
- Contact Capture - Collect customer information (name, email, phone, event details)
- Service Catalog - Browse services by category with BOWS special pricing
- Shopping Cart - Add/remove services, adjust quantities
- Confirmation - Generate quote with QR code and reference number
- Dashboard Overview - Key metrics and recent orders
- Orders Management - View and manage all orders
- Leads Management - Access customer contact information
- Services Management - Placeholder for CRUD operations
- All Entries - Unified view (placeholder)
pixelpro-marketplace/
├── app/
│ ├── booking/ # Customer booking flow
│ │ ├── contact/ # Step 1: Contact form
│ │ ├── services/ # Step 2: Service catalog
│ │ ├── cart/ # Step 3: Cart review
│ │ └── confirmation/ # Step 4: Order confirmation
│ ├── admin/ # Admin dashboard
│ │ ├── login/ # Admin authentication
│ │ ├── orders/ # Orders management
│ │ ├── leads/ # Leads management
│ │ ├── services/ # Services management
│ │ └── entries/ # All entries view
│ ├── globals.css # Global styles
│ ├── layout.tsx # Root layout
│ └── page.tsx # Home page
├── components/
│ └── ui/ # Reusable UI components
├── lib/
│ ├── actions/ # Server actions
│ ├── stores/ # Zustand stores
│ ├── supabase/ # Supabase clients
│ └── utils/ # Utility functions
├── supabase/
│ └── migrations/ # Database schema
└── types/ # TypeScript types
- Node.js 18+ and npm
- A Supabase account and project
npm install- Create a new project at supabase.com
- Go to Project Settings > API to get your credentials
- Run the database migration:
- Go to SQL Editor in Supabase Dashboard
- Copy the contents of
supabase/migrations/001_initial_schema.sql - Run the migration
Create a .env.local file in the root directory:
NEXT_PUBLIC_SUPABASE_URL=your-project-url.supabase.co
NEXT_PUBLIC_SUPABASE_ANON_KEY=your-anon-key
SUPABASE_SERVICE_ROLE_KEY=your-service-role-key
NEXT_PUBLIC_APP_URL=http://localhost:3000After running the database migration:
- Go to Authentication > Users in Supabase Dashboard
- Create a new user with email/password
- Copy the user's UUID
- Run this SQL in the SQL Editor:
INSERT INTO admin_users (id, email, role)
VALUES ('your-user-uuid', 'admin@pixelpro.com', 'admin');Create or add a noise.svg file in the public/ directory for the background texture effect.
npm run devVisit http://localhost:3000
- services - Service catalog (photobooth, videography, add-ons)
- leads - Customer contact information
- orders - Order records with reference numbers
- order_items - Line items for each order
- admin_users - Admin authentication
The migration includes 8 sample services. You'll need to:
- Upload actual images to Supabase Storage
- Update the
image_urlfields to point to your images
- Persists to localStorage
- Add/remove/update quantities
- Calculate totals and savings
- Client-side validation
- Type-safe forms
- Real-time error messages
- Type-safe data mutations
- Error handling
- Reference number generation
- Supabase Auth for admin users
- Middleware protection for admin routes
- Row Level Security (RLS) policies
Edit tailwind.config.ts and app/globals.css:
- Brand Black:
#0A0A0A - Brand Charcoal:
#1A1A1A - Brand Graphite:
#3D3D3D - Brand Silver:
#C0C0C0 - Brand Platinum:
#E5E5E5 - Brand Off-White:
#FAFDFF
- Display Font: Montserrat (headings)
- Body Font: Inter (body text)
- Push your code to GitHub
- Import project in Vercel
- Add environment variables
- Deploy
Vercel will automatically:
- Install dependencies
- Build the Next.js app
- Set up preview and production deployments
Add all variables from .env.local to your Vercel project settings.
- Implement full All Entries view with filtering
- Add Services CRUD interface in admin
- Email notifications with PDF quotes
- Real-time admin notifications
- Image upload for services
- Payment integration (Stripe)
- Analytics and reporting
- Export orders to CSV
- Bulk order status updates
npm run dev # Start development server
npm run build # Build for production
npm run start # Start production server
npm run lint # Run ESLintFor issues or questions about this implementation, refer to:
Private project for PixelPro Studios