Piattaforma ITI TECHNOLOGY: monorepo, Medusa, API, sito, area riservata e deploy
Deploy stack su Proxmox / deploy (push) Failing after 3s
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:
@@ -0,0 +1,19 @@
|
||||
# 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.
|
||||
Reference in New Issue
Block a user