Files
Lorenzo SanesiandClaude Opus 5.5 b83ce039fb
Deploy stack su Proxmox / deploy (push) Failing after 3s
Piattaforma ITI TECHNOLOGY: monorepo, Medusa, API, sito, area riservata e deploy
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
2026-10-20 09:30:48 +02:00

1.1 KiB

17 — API: blog

Leggi CLAUDE.md.

Obiettivo

Blog con contenuti markdown, ricerca full-text e gestione admin.

Cosa fare

  • Pubblico: GET /blog/posts (paginazione, categoria, q per ricerca full-text con websearch_to_tsquery('italian', unaccent(q)) e ordinamento per rank), GET /blog/posts/:slug, GET /blog/categories. Solo post published con published_at <= now().
  • Il dettaglio restituisce sia content_md sia content_html renderizzato con marked e sanitizzato (sanitize-html con whitelist).
  • Admin: CRUD post e categorie, slug generato dal titolo e univoco, cambio stato draft/published, preview (POST /admin/blog/preview riceve markdown e restituisce HTML sanitizzato).
  • GET /sitemap-data con slug e date di aggiornamento (servirà al frontend SSR per la sitemap).

Criteri di accettazione

  • La ricerca "pompa calore" trova un post intitolato "Pompe di calore: guida" (stemming italiano + unaccent).
  • Markdown con <script> o onerror= viene ripulito.
  • I draft non sono visibili via API pubblica.
  • Test per ricerca, sanitizzazione e permessi admin.
  • CLAUDE.md aggiornato.