Tech Stack
Core
| Layer | Choice | Notes |
|---|---|---|
| Framework | Next.js 16 (App Router) | next dev --turbopack |
| Language | TypeScript | Strict mode always on |
| Styling | Tailwind CSS v4 | @import "tailwindcss" in globals.css — no config file |
| UI primitives | shadcn/ui | radix-mira style, mist base color |
| Animation | Framer Motion | Stagger grids, page transitions, scroll reveals |
| Icons | Lucide React | |
| State | Zustand | Cart store at store/cart.ts |
| Package manager | npm | Never pnpm or yarn |
Planned / optional
| Package | Purpose | Status |
|---|---|---|
| Aceternity UI | Hero sections, spotlight effects | Not yet installed |
| React Three Fiber + Drei | 3D sections only | Not yet installed |
Backend / services
| Service | Purpose |
|---|---|
| Supabase | Primary database — projects, leads, CRM data |
| Resend (SDK v6) | Transactional email |
| Printful | Physical product fulfillment |
| Stripe | Checkout (stubs in place, not wired) |
Adding shadcn components
npx shadcn@latest add <component>
Components land in components/ui/ — never edit them directly, extend via composition.