la ricevuta
Le prove
Un sito che parla di vibe coding può raccontare qualsiasi cosa. Questo qui mostra i timbri: la richiesta com'è arrivata, gli orari, i numeri letti dal disco e il codice che li conta.
01
La richiesta, parola per parola
«compila il sito vibe.cyber-space.it. parla di vibe coding e dimostra che è proprio quello che stiamo facendo io e te. invita gli utenti vibes a registrarsi per creare una community.»
Da questa frase sono usciti 17 file e 2.071 righe di codice. Il resto di questa pagina spiega come, e come puoi controllarlo.
02
Il diario, timbrato
Le tappe qui sotto sono state scritte durante il lavoro, non ricostruite dopo. Ultima pubblicazione: 7 minuti fa.
-
13:03
La richiesta «Compila il sito vibe.cyber-space.it. Parla di vibe coding, dimostra che è proprio quello che stiamo facendo io e te, invita i vibes a registrarsi per creare una community.» La cartella è vuota: nessun file, nessun repo.
-
13:07
La prima pagina Struttura, configurazione, database SQLite con lo schema, e la home scritta prima del foglio di stile: prima cosa deve esserci, poi come sta.
-
13:09
Il front controller Rotte, registrazione, accesso, bacheca, profili. Gli hash delle password sono Argon2id e ogni POST passa da un gettone CSRF.
-
13:12
Forma e verifica in locale Un foglio di stile solo, nessuna dipendenza esterna. Poi la prova completa con curl: venti controlli, compresi i casi negativi — handle già preso, password corta, CSRF sbagliato.
-
13:14
Su lari, in chiaro Primo deploy: rsync in una cartella di lavoro, lint con il PHP 8.3 del server (in locale gira 8.5), poi la sostituzione. Se un file non compila il sito resta com'era.
-
13:15
Il certificato certbot con la sfida http-01 sul webroot del sito. Da questo momento l'http fa 301 e l'https risponde senza errori di catena.
-
13:16
Il primo 500, e perché è una buona notizia Il database era stato creato da root durante i controlli, così Apache non poteva scriverci. Trovato leggendo il log, non a naso: proprietario sbagliato, corretto, e il conteggio delle visite ha ripreso a funzionare.
03
Il sito conta se stesso
Questi numeri non sono in un file di testo: sono calcolati a ogni visita camminando nelle cartelle del sito e interrogando il database. Se cambio una riga di codice, il numero cambia.
| righe di codice | 2.071 | PHP, CSS, JS, JSON contati riga per riga |
|---|---|---|
| file | 17 | sorgente del sito, esclusi i dati |
| peso del codice | 84,2 KB | testo, senza database né immagini |
| database | 44,0 KB | SQLite, un file fuori dal docroot |
| vibes iscritti | 0 | righe in users |
| messaggi | 0 | righe in posts |
| pagine viste | 87 | 87 oggi, contate senza IP |
| motore | PHP 8.3.6 | SQLite 3.45.1 · Apache/2.4.58 |
04
La funzione che conta le righe
Questo è il file app/stats.php, letto dal disco mentre la pagina si
genera: non è un'immagine né una copia incollata. Se il contatore mente, mente questo codice,
e puoi verificarlo tu.
40 function conteggio_codice(): array
41 {
42 $righe = 0;
43 $byte = 0;
44 $file = file_del_sito();
45 foreach ($file as $f) {
46 $testo = (string)@file_get_contents($f);
47 $righe += $testo === '' ? 0 : substr_count($testo, "\n") + (str_ends_with($testo, "\n") ? 0 : 1);
48 $byte += strlen($testo);
49 }
50 return ['righe' => $righe, 'byte' => $byte, 'file' => count($file)];
51 }
52
53 /** Il diario di costruzione, scritto a mano mentre il sito veniva costruito. */
54 function diario(): array
05
Chi ha deciso cosa
Tu, con le parole
- il tema: il vibe coding, e la richiesta di dimostrarlo invece di raccontarlo;
- la lingua, il tono diretto, l'idea di mostrare anche i limiti;
- l'invito alla comunità, cioè lo scopo del sito;
- il criterio di sempre: prima funziona, poi è bello.
L'agente, con le mani
- le pagine, lo schema del database, il codice PHP, il CSS, il JavaScript;
- il front controller, i gettoni CSRF, l'hash delle password con Argon2id;
- il vhost Apache, i permessi, il certificato Let's Encrypt;
- i test:
curlsu ogni rotta, i log, le righe scritte nel database.
Il punto non è chi ha fatto di più. È che nessuna delle due colonne avrebbe prodotto questa pagina da sola: senza le parole non c'era niente da costruire, senza le mani non c'era niente da leggere.
06
Le verifiche, eseguite dal deploy
Il pannello qui sotto non è un'immagine di stato: è il risultato dei controlli che il deploy esegue dopo aver copiato i file, scritto nello stesso momento in cui il sito viene pubblicato.
- ok home in https, certificato valido vibe.cyber-space.it/ → 200
- ok le prove vibe.cyber-space.it/prova → 200
- ok la comunità vibe.cyber-space.it/comunita → 200
- ok foglio di stile vibe.cyber-space.it/assets/style.css → 200
- ok robots.txt vibe.cyber-space.it/robots.txt → 200
- ok sitemap.xml vibe.cyber-space.it/sitemap.xml → 200
- ok errore 404 onesto vibe.cyber-space.it/non-esiste-1794140373 → 404
- ok CSP e header di sicurezza presenti sulla home
- ok database scritto e leggibile users|posts = 0|0
- ok PHP del server compila il front controller php -l su public/index.php
- ok certificato Let's Encrypt scade il Feb 6 11:15:56 2027 GMT
Eseguiti il 08/11/2026 pmSundaySundayEurope/Rome 13:19.
07
Quello che questo sito non dimostra
Dimostra che una conversazione può diventare un sito funzionante, con un database, un login e un certificato. Non dimostra che il codice generato sia sempre buono, né che chi lo riceve lo capisca. Il codice di questa pagina l'ha scritto un modello linguistico: veloce, coerente, e capace di sbagliare con sicurezza. La differenza l'ha fatta il controllo — leggere i log, provare le rotte, contare le righe — ed è la parte che consiglio di non saltare mai.