A premium React + TypeScript portfolio, services, digital product storefront, checkout flow, and Supabase-ready admin panel for video editors.
npm install
npm run dev- Create a Supabase project.
- Copy
.env.exampleto.envand add your public Supabase URL and anon key. - Run
supabase/schema.sqlin the Supabase SQL editor. - Deploy the contact function:
supabase functions deploy send-contact-email
- Add the Edge Function secrets for Gmail SMTP. Use a Gmail app password for
GMAIL_SMTP_PASSWORD, not your normal Google account password:supabase secrets set EMAIL_TO=kjyotish124@gmail.com GMAIL_SMTP_USER=your-gmail-address@gmail.com GMAIL_SMTP_PASSWORD=your-gmail-app-password GMAIL_SMTP_HOST=smtp.gmail.com GMAIL_SMTP_PORT=465 - Invite admin users through Supabase Auth.
The frontend only uses the public anon key. Keep service-role keys out of the browser.
Visit /admin and sign in with an invited Supabase Auth user. The admin page uploads portfolio videos/posters to the portfolio bucket and digital asset covers/files to the products bucket, then saves the matching rows in portfolio_projects and digital_products.
For existing Supabase projects, run supabase/admin-upload-upgrade.sql in the SQL editor before using the new admin forms. It adds custom product category writes, upload storage policies, LUT before/after preview fields, YouTube portfolio link support, and portfolio video format for uploaded landscape or portrait entries. Uploaded products appear on /products; the home page shows two products from each category and links to the full category list.