Sprint 1 - Foundation Setup: Created customer-spa/ folder structure: ``` customer-spa/ ├── src/ │ ├── pages/ # Customer pages (Shop, Cart, Checkout, Account) │ ├── components/ # Reusable components │ ├── lib/ │ │ ├── api/ # API client │ │ ├── cart/ # Cart state management │ │ ├── checkout/ # Checkout logic │ │ └── tracking/ # Analytics & pixel tracking │ ├── hooks/ # Custom React hooks │ ├── contexts/ # React contexts │ └── types/ # TypeScript types ├── public/ # Static assets ├── package.json # Dependencies ├── vite.config.ts # Vite configuration (port 5174) ├── tsconfig.json # TypeScript configuration ├── tailwind.config.js # TailwindCSS configuration ├── postcss.config.js # PostCSS configuration └── .eslintrc.cjs # ESLint configuration ``` Configuration: ✅ Vite dev server on port 5174 (admin-spa uses 5173) ✅ HTTPS with shared SSL cert ✅ TypeScript + React 18 ✅ TailwindCSS + shadcn/ui ✅ React Query for data fetching ✅ Zustand for state management ✅ React Hook Form + Zod for forms ✅ React Router for routing Dependencies Added: - Core: React 18, React DOM, React Router - UI: Radix UI components, Lucide icons - State: Zustand, TanStack Query - Forms: React Hook Form, Zod, @hookform/resolvers - Styling: TailwindCSS, class-variance-authority - Utils: clsx, tailwind-merge, sonner (toast) Next Steps: - Create main.tsx entry point - Create App.tsx with routing - Create base layout components - Setup API client - Implement cart state management Ready for Sprint 1 implementation!
20 lines
499 B
JSON
20 lines
499 B
JSON
{
|
|
"compilerOptions": {
|
|
"target": "ES2020",
|
|
"useDefineForClassFields": true,
|
|
"lib": ["ES2020", "DOM", "DOM.Iterable"],
|
|
"module": "ESNext",
|
|
"skipLibCheck": true,
|
|
"moduleResolution": "Bundler",
|
|
"resolveJsonModule": true,
|
|
"isolatedModules": true,
|
|
"jsx": "react-jsx",
|
|
"noEmit": true,
|
|
"strict": true,
|
|
"allowJs": false,
|
|
"types": [],
|
|
"baseUrl": ".",
|
|
"paths": { "@/*": ["./src/*"] }
|
|
},
|
|
"include": ["src"]
|
|
} |