Project Structure
App routes
app/
layout.tsx Root layout — Sidebar + AppBar + TopBar + CartDrawer
page.tsx Homepage — "Our Work" header + full ProjectGrid
work/
page.tsx Work index — full ProjectGrid
[category]/
page.tsx Filtered grid — pre-filtered + defaultCategory prop
[slug]/page.tsx Cinematic case study — ProjectHero + all project components
marketplace/
page.tsx Product grid
[slug]/page.tsx Product detail — dynamicParams = false
contact/page.tsx Intake form — react-hook-form + zod + Resend
services/
page.tsx Service cards grid
[slug]/page.tsx Service detail + ServiceOrderForm
onboarding/[token]/page.tsx Client questionnaire — public, no auth
admin/
page.tsx Dashboard
login/page.tsx
leads/
page.tsx Leads table
[id]/page.tsx Lead detail — PipelineStrip + all stage cards
projects/
page.tsx Projects table
new/page.tsx Create form
[id]/page.tsx Edit form + publish toggle
questionnaires/
page.tsx + new/page.tsx
proposals/[id]/page.tsx
contracts/[id]/page.tsx
invoices/page.tsx
work-orders/[id]/page.tsx
service-orders/[id]/page.tsx
retainers/[id]/page.tsx
Server actions
app/actions/
contact.ts submitContactForm
service-orders.ts submitServiceOrder, updateServiceOrderStatus
questionnaires.ts sendQuestionnaire, submitQuestionnaire, saveTemplate
proposals.ts CRUD
contracts.ts CRUD + signing
invoices.ts CRUD + payment
work-orders.ts CRUD
leads.ts CRUD + activity log
retainers.ts CRUD
projects.ts createProjectAction, updateProjectAction, deleteProjectAction,
publishProjectAction, createProjectFromLead
API routes
app/api/
upload/route.ts Multipart file upload → public/assets/uploads/ (50 MB max)
Lib (server-only unless noted)
lib/
supabase.ts getSupabaseClient, Lead, LeadActivity types
projects-db.ts Supabase CRUD for projects (server-only)
project-types.ts Project + ProcessStep types, categoryLabels, categoryDotClass (client-safe)
questionnaire-db.ts Supabase CRUD for questionnaire_templates
questionnaire-types.ts QuestionnaireTemplate + QuestionnaireResponse types
invoice-data.ts / invoice-types.ts
proposal-data.ts / proposal-types.ts
contract-data.ts / contract-types.ts
retainer-types.ts
lead-constants.ts LEAD_STATUSES array with colors
printful.ts Printful API client (V1 + V2)
email.ts sendLeadNotification, sendPurchaseReceipt (Resend SDK v6)
contact-schema.ts zod schema for contact form
Components
components/
ui/ shadcn primitives — never edit directly
layout/ Sidebar, AppBar, TopBar
work/ ProjectCard, ProjectGrid, FilterChips, ProjectHero,
ProjectInfo, ProjectGallery, ProjectProcess, ProjectResults, ProjectNav
marketplace/ ProductCard, ProductGrid, ProductDetail, PreviewViewer,
LicenseInfo, CartDrawer
services/ ServiceOrderForm
onboarding/ QuestionnaireForm
admin/ ProjectForm
Data files
data/
products.ts 6 products (3d-asset + plugin, personal/commercial pricing)
services.ts 6 services
❌ projects.ts DELETED — projects live in Supabase
Store
store/
cart.ts Zustand — CartItem, addItem, removeItem, clearCart, toggleDrawer, openDrawer