// piano d'azione — 8 settimane

Da zero a due
repo che fanno colpo.

Settimane 1–4 · git-therapy
Settimane 5–8 · shadow-test
~10–15h a settimana
Fase 1 · git-therapy
Settimane 1 → 4
W1
Setup
Fondamenta e parser Git
~12h stimate
📁
Crea la struttura del progetto
Inizializza repo, pyproject.toml, cartelle git_therapy/, tests/, README placeholder. Setup linting (ruff) e pre-commit hooks.
setup
🔍
Scrivi il parser git log
Usa gitpython per estrarre: hash, autore, email, timestamp, messaggio, files changed, insertions, deletions. Output: lista di oggetti Commit strutturati.
core
🧪
Testa il parser su 3 repo reali
Usalo su un tuo repo, su Django e su Linux kernel. Verifica che gestisca casi edge: merge commits, empty commits, caratteri unicode nei messaggi.
test
⚙️
CLI base con Click
Comando `git-therapy --path .` che esegue il parser e stampa un summary JSON nel terminale. Niente report ancora, solo verifica che il pipeline funzioni.
cli
Deliverable Parser funzionante che legge qualsiasi repo e restituisce dati strutturati
W2
Analisi
I 4 analyzers principali
~14h stimate
😤
Rage Commit Detector
Lista di pattern regex + punteggio: tutto maiuscolo, parolacce EN/IT, messaggi sotto 4 chars ("fix", "ok", "aaa"), punti esclamativi multipli. Output: lista commit con rage_score 0–10.
analyzer
🌙
Sleep Deprivation Index
Conta commit per fascia oraria. Definisci "notte" = 00:00–06:00. Calcola percentuale notturna per contributor. Bonus: verifica se quei commit notturni hanno più revert nelle 48h successive.
analyzer
🦸
Hero Detector
Identifica chi committa nei weekend, chi fa hotfix dopo i rage commit altrui, chi interviene dopo periodi di inattività. Genera un "hero score" per contributor.
analyzer
🎭
Personality Profiler
5 tipi: Perfezionista, Cowboy, Pompiere, Ghost, Tuttofare. Assegnazione basata su: frequenza commit, dimensione media diff, orari, ratio test/feature files toccati.
analyzer
🧪
Unit test per ogni analyzer
Crea fixture di commit fasulli con comportamenti noti e verifica che ogni analyzer li classifichi correttamente.
test
Deliverable 4 analyzers funzionanti con test coverage >80%
W3
Report
Report HTML interattivo
~13h stimate
🎨
Design del report (dark theme)
Template Jinja2 con CSS embedded. Stile: dark, monospace, accenti colorati per contributor. Deve sembrare un prodotto vero, non uno script di analisi.
design
📊
Grafici con Chart.js
Heatmap degli orari di commit (come GitHub contributions), timeline degli eventi critici, bar chart rage score per contributor, radar chart per i personality types.
charts
🛋️
The Therapy Session — narrative generator
Il pezzo iconico. Template con slot variabili riempiti dai dati reali. Tono ironico-serio. Es: "Il tuo picco creativo è alle 23:00. Questo non è sostenibile. Parliamone." Deve far ridere E colpire.
copy
🔗
Ogni claim è linkato al commit reale
Ogni affermazione nel report ha un link al commit specifico su GitHub/GitLab. Questo è ciò che lo rende credibile invece che un gioco.
ux
Deliverable Report HTML completo generato da un repo reale, bello da mostrare
W4
Launch
Rifinitura e lancio
~10h stimate
📦
Pubblicazione su PyPI
`pip install git-therapy` deve funzionare. Setup di pyproject.toml completo, versioning, GitHub Actions per publish automatico su tag.
release
🎬
GIF demo per il README — PRIORITÀ MASSIMA
Usa asciinema o screen recording. Mostra: installa → esegue su un repo famoso → apre il report → sezione therapy. Max 15 secondi. Questa GIF vale il 50% delle stelle.
🔑 critico
📝
README killer
GIF in cima, poi: 1 frase di descrizione, install in 1 riga, esempio output, screenshot del report. Zero fluff. Un developer deve capire tutto in 20 secondi.
readme
🚀
Lancio coordinato
Post HackerNews (lunedì mattina EST), thread Twitter con 3 screenshot di repo famosi analizzati (react, vue, linux), post su r/programming. Rispondi a TUTTI i commenti nelle prime 6 ore.
launch
Deliverable git-therapy live su PyPI + HackerNews + prime stelle in arrivo
Pausa strategica tra i due progetti
Dopo il lancio di git-therapy, prenditi 2-3 giorni di pausa. Rispondi ai commenti, raccoglie feedback, sistema i bug segnalati. Questo non solo migliora il progetto — costruisce la tua reputazione come maintainer serio. Chi mantiene i propri repo impressiona più di chi li abbandona. Poi attacca shadow-test con la visibilità già costruita.
Fase 2 · shadow-test
Settimane 5 → 8
W5
Core Go
Proxy Go + clone asincrono
~14h stimate
🏗️
Setup repo e struttura Go
go mod init, struttura cartelle core/, sdks/, examples/. Scegli il Go version (1.22+). Aggiungi Makefile con target: build, test, lint, docker.
setup
🔀
HTTP reverse proxy con goroutine shadow
Usa httputil.ReverseProxy come base. Per ogni request in entrata: forwarda al primary normalmente, poi in goroutine separata clona la request e la manda al shadow target. Usa un channel con buffer per non bloccare mai il thread principale.
core
⚖️
Request cloner + sanitizer base
Funzione che copia http.Request (body incluso, che è uno stream one-use). Rimuovi headers sensibili: Authorization, Cookie, X-API-Key. Configura la lista via YAML.
core
🧪
Test con httptest
Simula primary e shadow con httptest.Server. Verifica che: il primary risponda sempre, il shadow venga chiamato in async, headers sensibili siano rimossi.
test
Deliverable Proxy Go funzionante che duplica traffico HTTP in modo asincrono
W6
Diff + SDK
Comparator JSON + SDK Node/Python
~15h stimate
🔎
JSON diff strutturale
Non confrontare stringhe raw — deserializza e confronta campo per campo. Supporta: ignore_fields (lista di JSON paths da skippare), normalize (float precision, date formats). Output: lista di diff con path, expected, actual.
core
💾
Storage diff su SQLite
Ogni diff viene salvato in SQLite locale: timestamp, endpoint, method, status_primary, status_shadow, diff_json, latency_primary, latency_shadow. Retention configurabile (default: 7 giorni).
storage
📦
SDK Node.js (Express middleware)
npm package con middleware Express/Fastify. 3 righe per integrarlo. Internamente chiama il core Go via HTTP o lo embeds come subprocess. Pubblica su npm.
sdk
🐍
SDK Python (FastAPI/Flask middleware)
pip package con ASGI/WSGI middleware. Stessa logica dello SDK Node. Testa su FastAPI e Flask. Pubblica su PyPI.
sdk
Deliverable Comparator funzionante + middleware disponibile su npm e PyPI
W7
Dashboard
Dashboard locale + CLI completa
~13h stimate
🖥️
Dashboard web (Go + HTMX)
Server HTTP embedded che serve una pagina HTML. Mostra: totale request shadowed, % match/mismatch, ultimi diff in tempo reale (SSE), filtri per endpoint e status code. Zero JS framework — solo HTMX per i live updates.
dashboard
🔔
Alerting via webhook
Se il mismatch rate supera una soglia configurabile → invia POST a un webhook (Slack/Discord/custom). Configura in shadow-test.yaml. Testa con un Slack workspace di test.
alerting
⌨️
CLI completa
Comandi: proxy, dashboard, tail (diff in tempo reale nel terminale), replay (da file JSON), report (export HTML), validate (controlla config YAML). Help text curato per ogni comando.
cli
🐳
Docker image + docker-compose example
Dockerfile multi-stage (builder + runtime scratch image, binario ~8MB). docker-compose.yml con primary app + shadow app + shadow-test pre-configurato. Funziona con `docker compose up` e basta.
docker
Deliverable Sistema completo end-to-end funzionante con dashboard e Docker
W8
Launch
Examples, docs e lancio
~10h stimate
📚
Getting started guide + esempi funzionanti
Cartella examples/ con: express-app completa, fastapi-app completa, docker-compose scenario. Ognuno deve funzionare con 2 comandi. Testa su una macchina pulita.
docs
🎬
GIF / video demo — PRIORITÀ MASSIMA
Mostra: aggiungi 3 righe a un'app Express → avvia → dashboard che si popola di diff in tempo reale mentre fai chiamate API. Max 20 secondi. Deve sembrare magia.
🔑 critico
📝
README con architettura diagram
GIF in cima, poi: problema che risolve (2 righe), quick start (5 comandi), schema ASCII del flusso proxy→shadow→comparator, link a docs. Aggiungi badge: Go version, npm, PyPI, license, stars.
readme
🚀
Lancio coordinato (sfrutta git-therapy)
Nel post di lancio su HN menziona che è dello stesso autore di git-therapy. Posta su r/golang, r/devops, r/node, r/Python. Scrivi un articolo "How I built production traffic shadowing in Go" su dev.to.
launch
Deliverable shadow-test live su GitHub + npm + PyPI + lancio pubblico
A fine settimana 8, hai:
Stima stelle totali
12K – 23K
tra i due repo
Recruiter score
9+ / 10
profilo GitHub devastante
Ore investite
~100h
~12h a settimana
01
Non perfezionare infinitamente — lancia e itera. Una v1 live batte una v2 mai pubblicata.
02
La GIF nel README non è opzionale. È il prodotto. Investici almeno 2 ore per farla bene.
03
Rispondi ai commenti il giorno del lancio. HackerNews premia chi interagisce — l'algoritmo spinge i thread attivi.
04
Se una settimana vai in ritardo, non saltarla — riducila. Meglio una feature in meno che rompere il ritmo.
05
Commit pubblici costanti (anche piccoli) tengono il profilo GitHub verde e segnalano a chi ti guarda che stai lavorando attivamente.