diff --git a/CLAUDE.md b/CLAUDE.md deleted file mode 100644 index 8749119..0000000 --- a/CLAUDE.md +++ /dev/null @@ -1,114 +0,0 @@ -# Mycopunk Swag Store - AI Assistant Context - -## Project Overview - -E-commerce platform for mycopunk merchandise (stickers, shirts, prints) with Stripe payments and print-on-demand fulfillment via Printful and Prodigi. - -## Architecture - -- **Frontend**: Next.js 15 App Router, shadcn/ui, Tailwind CSS -- **Backend**: FastAPI, SQLAlchemy, Alembic -- **Database**: PostgreSQL -- **Payments**: Stripe Checkout (redirect flow) -- **Fulfillment**: Printful (apparel), Prodigi (stickers/prints) -- **Deployment**: Docker on Netcup RS 8000, Traefik routing - -## Key Directories - -| Directory | Purpose | -|-----------|---------| -| `backend/app/api/` | FastAPI route handlers | -| `backend/app/models/` | SQLAlchemy ORM models | -| `backend/app/schemas/` | Pydantic request/response schemas | -| `backend/app/services/` | Business logic (stripe, pod, orders) | -| `backend/app/pod/` | POD provider clients (from mycopunk-swag) | -| `frontend/app/` | Next.js App Router pages | -| `frontend/components/` | React components | - -## Design Source - -Designs are read from the mycopunk-swag repo at runtime: -- **Local**: `/home/jeffe/Github/mycopunk-swag/designs/` -- **Docker**: Volume mounted from `/opt/mycopunk-swag/designs` - -Each design has a `metadata.yaml` with name, description, products, variants, and pricing. - -## API Endpoints - -### Public -- `GET /api/designs` - List active designs -- `GET /api/designs/{slug}` - Get design details -- `GET /api/designs/{slug}/image` - Serve design image -- `GET /api/products` - List products with variants -- `POST /api/cart` - Create cart -- `GET/POST/DELETE /api/cart/{id}/items` - Cart operations -- `POST /api/checkout/session` - Create Stripe checkout -- `GET /api/orders/{id}` - Order status (requires email) - -### Webhooks -- `POST /api/webhooks/stripe` - Stripe payment events -- `POST /api/webhooks/prodigi` - Prodigi fulfillment updates -- `POST /api/webhooks/printful` - Printful fulfillment updates - -### Admin (JWT required) -- `POST /api/admin/auth/login` - Admin login -- `GET /api/admin/orders` - List orders -- `GET /api/admin/analytics/*` - Sales metrics - -## Order Flow - -1. Customer adds items to cart (cart_id in localStorage) -2. Checkout creates Stripe session, redirects to Stripe -3. Stripe webhook fires on payment success -4. Backend creates order, submits to POD provider -5. POD webhook updates order status -6. Customer receives email notifications - -## Common Tasks - -### Run locally -```bash -docker compose up -d -``` - -### Run migrations -```bash -cd backend -alembic upgrade head -``` - -### Add a new API endpoint -1. Create route in `backend/app/api/` -2. Add Pydantic schemas in `backend/app/schemas/` -3. Register router in `backend/app/main.py` - -### Add a new component -```bash -cd frontend -npx shadcn@latest add button # or other component -``` - -## Environment Variables - -See `.env.example` for all required variables. - -## Testing - -```bash -# Backend -cd backend -pytest - -# Frontend -cd frontend -pnpm test -``` - -## Deployment - -Push to Gitea triggers webhook → auto-deploy on Netcup. - -Manual deploy: -```bash -ssh netcup "cd /opt/mycopunk-swag-store && git pull && docker compose up -d --build" -```