Files
postgenerator/.planning/milestones/v1-ROADMAP.md
Michele 1c9199bf38 chore: complete v1 milestone
Archived:
- milestones/v1-ROADMAP.md (full phase details)
- milestones/v1-REQUIREMENTS.md (46/46 shipped)
- milestones/v1-MILESTONE-AUDIT.md (audit report)

Created:
- MILESTONES.md (project milestone history)

Deleted:
- REQUIREMENTS.md (fresh one for next milestone)

Updated:
- PROJECT.md (requirements → Validated, decisions with outcomes)
- ROADMAP.md (collapsed to one-line v1 summary)
- STATE.md (reset for next milestone)

v1 MVP: 4 phases, 10 plans, 46 requirements, 8080 LOC
Timeline: 2 days (2026-03-07 → 2026-03-09)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-09 11:59:07 +01:00

4.8 KiB

Milestone v1: MVP Content Marketing Automation

Status: SHIPPED 2026-03-09 Phases: 1-4 Total Plans: 10

Overview

PostGenerator trasforma framework strategici di content marketing (Persuasion Nurturing + livelli Schwartz) in caroselli Instagram pronti per Canva Bulk Create. Il percorso di sviluppo segue una logica precisa: prima costruire la pipeline di generazione end-to-end funzionante (Fase 1), poi dare il controllo sulla qualita' dell'output tramite editor di prompt e anteprima (Fase 2), poi aggiungere gli strumenti organizzativi per un workflow sostenibile (Fase 3), infine arricchire con integrazioni opzionali (Fase 4). Ogni fase consegna un sistema verificabile e utilizzabile indipendentemente dalla successiva.

Phases

Phase 1: Core Generation Pipeline

Goal: L'utente puo' generare un calendario di 13 caroselli completi e scaricare un CSV valido per Canva Bulk Create con un click dalla Web UI deployata su VPS. Depends on: Nothing (first phase) Requirements: INF-01..06, CAL-01..07, FMT-01..02, LLM-01..06, PRM-01..04, CSV-01..04, IMG-01, IMG-04, UI-01..04, UI-07, UI-08 Plans: 4 plans

Plans:

  • 01-01: Infrastructure setup — FastAPI skeleton + React SPA + Docker multi-stage build + subpath /postgenerator/ (19 files, 6 min)
  • 01-02: Core services — CalendarService + FormatSelector + PromptService + costanti dominio + 7 prompt italiani (16 files, 9 min)
  • 01-03: LLM pipeline — LLMService + CSVBuilder + GenerationPipeline + API routers (9 files, 8 min)
  • 01-04: Web UI — Dashboard + Genera Calendario + Output Review + Genera Singolo + Settings (16 files, 10 min)

Completed: 2026-03-08


Phase 2: Prompt Control + Output Review

Goal: L'utente puo' modificare i prompt direttamente dalla Web UI senza toccare il codice, rigenerare singoli post insoddisfacenti, e rivedere l'anteprima completa di ogni carosello prima di esportare il CSV. Depends on: Phase 1 Requirements: PRM-05, UI-05 Plans: 2 plans

Plans:

  • 02-01: Prompt Editor — backend prompts router CRUD + frontend pagina PromptEditor con lista, textarea, variabili, badge modificato/default (7 files, 5 min)
  • 02-02: Per-item regeneration — bottone Rigenera con popover inline, badge rigenerato, summary counter (2 files, 4 min)

Completed: 2026-03-08


Phase 3: Organization Layer

Goal: L'utente puo' salvare rapidamente idee e topic interessanti in un Swipe File consultabile, e ritrovare e ri-scaricare calendari generati in sessioni precedenti. Depends on: Phase 1 Requirements: SWP-01..04, UI-06 Plans: 2 plans

Plans:

  • 03-01: SwipeService CRUD — backend + Pydantic schemas + FastAPI router + pagina SwipeFile UI (9 files, 5 min)
  • 03-02: Swipe-to-calendar integration — topic_overrides in CalendarRequest + picker Swipe File nel form Genera Calendario (5 files, 3 min)

Completed: 2026-03-09


Phase 4: Enrichment

Goal: L'utente con API key Unsplash configurata vede URL immagini reali nel CSV invece di placeholder; l'utente puo' passare voci dello Swipe File come contesto durante la generazione topic per risultati piu' aderenti alle proprie osservazioni. Depends on: Phase 3 Requirements: IMG-02, IMG-03 Plans: 2 plans

Plans:

  • 04-01: UnsplashService backend — cache disco + traduzione IT->EN + integrazione pipeline/CSV (6 files, 5 min)
  • 04-02: Frontend Unsplash UI — campo API key in Settings, thumbnail cover in PostCard, hint OutputReview (4 files, 3 min)

Completed: 2026-03-09


Milestone Summary

Key Decisions:

  • Claude API come LLM provider (familiarita' ecosistema, qualita' output italiano)
  • FastAPI + React (separazione, UI ricca, coerenza con VPS echosystem)
  • File system storage senza DB (semplicita' MVP, prompt e config editabili)
  • root_path SOLO via Uvicorn --root-path (mai nel costruttore FastAPI)
  • CSV encoding utf-8-sig (BOM) per compatibilita' Excel/Windows
  • CANVA_FIELDS 33 colonne locked con assert a load-time
  • Pipeline singleton con fallback da disco per persistenza job
  • Design stone/amber B2B (non gradienti viola generici)
  • Risoluzione Unsplash UNA SOLA VOLTA dopo batch LLM
  • Dizionario statico IT->EN (~30 keyword B2B) per traduzione keyword Unsplash

Issues Resolved:

  • Slot-merge gap (result.slot undefined in PostCard) risolto in Phase 2
  • PromptService lazy init per sincronizzazione con lifespan FastAPI
  • Import mancante apiFetch in hooks.ts
  • .gitignore troppo aggressivo su backend/data/

Technical Debt Incurred:

  • Pipeline singleton non invalidato quando API key cambia (routers/generate.py)
  • Campo campagna inviato nel POST /export ma ignorato dal backend (hooks.ts)
  • brand_name hardcoded in generation_pipeline.py
  • Job interrotti durante restart container non recuperabili

For current project status, see .planning/ROADMAP.md