[verdetto][prompt curato][fonte: posthog.com]
Posso vibecodare PostHog?
// il valore è la rete, i dati o l’infrastruttura
Raccogliere dati first-party e costruire una dashboard che risponde alle tue cinque domande principali è lavoro di una sessione, e il piano gratuito di PostHog copre un milione di eventi al mese. Oltre quella soglia la fattura compra il resto: session replay, feature flag e un'ingestion che regge i cambi di schema.
confidenza: alta
cos’è: Product analytics con session replay, feature flag e un data warehouse
Indice di costruibilità · gioco editoriale
- Prezzo a consumo peso: zero
- Tempo build di consolazione: una sessione peso: meno 1
- Categoria analytics non pesa
- Moat scala dell'infrastruttura · costi di migrazione peso: meno 3
- Confidenza alta peso: più 1
- Cosa perdi 5 voci peso: meno 2
- Sito posthog.com (si apre in una nuova scheda) non pesa
Non c’è partita. Il prompt qui sotto ricostruisce un pezzo, non il prodotto.
Gioco editoriale: il verdetto dice se un agente può, l’indice se conviene.
Cosa costruisci
Raccogliere pageview ed eventi personalizzati first-party dai tuoi siti, tenerti le righe grezze e rispondere a una manciata di domande di prodotto da una dashboard locale.
cosa ti serve
- Node 22
- un piccolo VPS sempre acceso
- un dominio tuo, per la raccolta first-party
I grafici sono la parte facile. Il prodotto è una pipeline che non smette mai di raccogliere in silenzio, ed è esattamente la parte che erediti quando fai self-hosting.
Il prompt
Il verdetto è NON PROPRIO, e il prompt resta lo stesso: non rimpiazza l’app, ricostruisce il pezzo che è davvero codice. Il resto è il moat.
Build me a self-hosted web analytics box to replace PostHog. Requirements:
- One Node 22 + Express process with better-sqlite3, serving the collector and the
dashboard on port 8787. No frontend framework, no build step, no Docker.
- A tracker.js I paste on my sites: pageviews on load and history change, plus
window.track('signup', { plan: 'pro' }), POSTed to /e on my own domain so
collection stays first-party.
- One SQLite events table: site, event, path, referrer, UTM fields, country from the
proxy header, device class, and a JSON properties blob.
- Count visitors by a daily-rotating salted hash of IP plus user agent, salt in .env.
No cookie, never the raw IP. That is the whole privacy design, keep it.
- Dashboard at / with a date range picker: visitors and pageviews by day, top pages,
referrers, countries, any event split by one property, and a three-step funnel.
- Nightly rollup into a daily-summary table, raw events pruned past the retention
window in .env, /export.csv for the raw rows.
- Basic auth on the dashboard, collector open. No accounts, no telemetry, my box
holds the only copy.
- Out of scope: session replay, feature flags, and stitching one person across
devices. Do not build a plugin system or a warehouse connector.
- README: the snippet to paste, where the SQLite file lives, and how to back it up. Prompt curato: scritto e rivisto a mano per questa app. In inglese di proposito — è la lingua in cui gli agenti di coding rendono meglio.
Cosa perdi
- il session replay
- feature flag ed esperimenti
- l'identity stitching tra dispositivi
- SQL su anni di eventi
- un'ingestion che regge senza che tu la guardi
Perché pagano ancora
I team pagano perché le analytics devono continuare a raccogliere e restare affidabili mentre il prodotto cambia sotto di loro. La fattura compra il filtro dei bot, la risoluzione delle identità, i dati che arrivano in ritardo, la retention, il costo delle query e qualcun altro che riceve la chiamata quando l'ingestion si ferma. I grafici sono la parte economica.
moat: Scala dell'infrastruttura Costi di migrazione cos’è un moat
affidabilità della pipeline dati e profondità analitica
Chi l’ha già costruito
Partire da qui è vibecoding lo stesso: il prompt serve quando lo vuoi esattamente a modo tuo.
- Umami (si apre in una nuova scheda) — Popular open-source privacy-focused web analytics platform.
Sei d’accordo?
La bilancia dei voti
Ancora nessun voto: il tuo è il primo.
Nessun voto ancora — il primo pesa.