Piattaforma ITI TECHNOLOGY: monorepo, Medusa, API, sito, area riservata e deploy
Deploy stack su Proxmox / deploy (push) Failing after 3s

Monorepo npm con apps/public (Angular SSR), apps/private (Angular SPA),
apps/api (Fastify), packages/shared e packages/styles; Medusa 2.21 in medusa/;
infrastruttura Docker (Postgres PostGIS+pgvector, Redis, Caddy, backup) e
workflow Gitea Actions per il deploy via SSH a ogni push su master.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_018jQyT6dR9czzGwqb7FkG6u
This commit is contained in:
Lorenzo Sanesi
2026-10-20 09:30:48 +02:00
co-authored by Claude Opus 5.5
commit b83ce039fb
505 changed files with 84544 additions and 0 deletions
+21
View File
@@ -0,0 +1,21 @@
# 13 — API: proxy shop (catalogo, carrello, checkout)
Leggi `CLAUDE.md`.
## Obiettivo
Esporre al frontend le operazioni e-commerce passando sempre da Fastify.
## Cosa fare
- Catalogo (pubblico): `GET /shop/products` (paginazione, categoria, ricerca), `GET /shop/products/:handle`, `GET /shop/categories`. Cache in memoria breve (es. 60s) per le liste.
- Prezzi: se la richiesta ha un utente autenticato installatore approvato, il calcolo prezzi deve usare il suo customer (price list riservata); altrimenti prezzi standard.
- Carrello: id carrello in cookie `cart_id` (httpOnly). Route `POST /shop/cart`, `GET /shop/cart`, `POST /shop/cart/items`, `PATCH /shop/cart/items/:id`, `DELETE /shop/cart/items/:id`, `POST /shop/cart/address`, `GET /shop/cart/shipping-options`, `POST /shop/cart/shipping`.
- Se l'utente è loggato, il carrello viene associato al suo customer (`/internal/carts/:id/customer`); se fa login con un carrello guest già aperto, il carrello viene associato.
- Checkout guest: obbligatoria solo l'email.
- Pagamento: `POST /shop/cart/payment` inizializza la payment session Stripe e restituisce il `client_secret`; `POST /shop/cart/complete` completa il carrello dopo la conferma Stripe lato client e restituisce l'ordine. Verifica nella documentazione Medusa v2 la sequenza esatta (payment collection → payment session → complete).
- Il frontend non riceve mai chiavi o id interni Medusa non necessari.
## Criteri di accettazione
- Flusso completo testabile da file `.http`: crea carrello → aggiungi prodotto → indirizzo → spedizione → pagamento (carta test Stripe) → ordine creato.
- Stesso flusso con utente installatore mostra i prezzi riservati.
- Carrello guest associato correttamente al login.
- `CLAUDE.md` aggiornato con l'elenco route shop.