Editor + archivio in stile giornale per una propria ezine personale — componi numeri con testata, articoli su più colonne, immagini, rubriche fisse e anteprima live, li salvi in un archivio ricercabile con nuvola di parole chiave.
Self-hosted, zero dipendenze: solo PHP + SQLite lato server, HTML/CSS/JS puro lato client. Nessun framework, nessun build step, nessun account esterno.
- Editor visuale con anteprima live: articolo full-width, due colonne (sinistra/destra), immagini con float e stili (mezzatinta/bitmap), rubriche fisse, finto annuncio, box "prossimo numero"
- Esportazione HTML standalone e stampa/PDF diretta dal browser
- Archivio con ricerca per titolo/parola chiave, statistiche per numero (caratteri, parole, dimensione) e nuvola delle parole più frequenti calcolata sull'intero archivio
- Persistenza automatica in
localStoragementre lavori, oltre al salvataggio esplicito nell'archivio
| File | Ruolo |
|---|---|
index.html |
Editor: pannello di controllo a sinistra, anteprima del giornale a destra |
archivio.php |
Elenco/ricerca dei numeri salvati, visualizza/stampa/elimina |
save_issue.php / update_issue.php / load_issue.php / delete_issue.php / stats.php |
Endpoint JSON per il CRUD sul database |
setup_db.php |
Crea il database SQLite e la tabella issues (idempotente) |
Tutto il contenuto di un numero (articoli, testi, immagini in base64, impostazioni) è serializzato come JSON in un'unica colonna content — nessuna migrazione di schema da gestire quando aggiungi campi.
- Apache 2.4 con
mod_rewrite/mod_authn_file/mod_auth_basicdisponibili (per l'autenticazione opzionale, vedi sotto) eAllowOverride Allsulla cartella - PHP 8+ con estensione
sqlite3(php -m | grep sqlite3) - Nessun'altra dipendenza: niente Composer, niente npm
- Copia tutti i file in una sottocartella del document root (es.
/var/www/html/ezine/). - Rendi scrivibili la cartella e il futuro database dall'utente con cui gira Apache (es.
www-data), altrimenti i salvataggi falliranno con "attempt to write a readonly database":chmod 775 /percorso/ezine
- Apri
setup_db.phpuna volta dal browser per creareezine.dbe la tabellaissues. - (Consigliato) attiva l'autenticazione — vedi Sicurezza.
- Vai su
index.html: sei pronto per comporre il primo numero.
- Editor (
index.html): compila testata (anno, numero, data, colore), aggiungi articoli nelle varie sezioni, guarda l'anteprima aggiornarsi in tempo reale. "Salva nuova uscita" scrive nel database; se stai modificando un numero esistente (aperto dall'archivio) usa "Aggiorna" invece di creare un duplicato. - Archivio (
archivio.php): cerca per titolo o parola chiave nel contenuto, clicca una parola nella nuvola per filtrare, visualizza/stampa/elimina ogni numero.
Di base l'app non ha autenticazione: chiunque conosca l'URL può leggere, modificare e cancellare l'archivio. Per uso non strettamente locale è fortemente consigliato attivare HTTP Basic Auth a livello di cartella — protegge automaticamente sia le pagine che gli endpoint, senza bisogno di scrivere codice:
htpasswd -cB /percorso/ezine/.htpasswd <utente>poi rinomina .htaccess.example in .htaccess e aggiorna AuthUserFile con il percorso assoluto reale. Dettagli e motivazione nel file stesso.
- Testata: cerca
La Mia Ezineinindex.htmlearchivio.phpe sostituiscilo col nome della tua testata (compare anche nel<title>, nel disclaimer a fondo pagina e nel titolo delle finestre di stampa). - Logo: aggiungi un file immagine nella cartella e puntalo dall'
<img class="header-logo" src="...">in entrambi i file — se il file manca, il logo semplicemente non viene mostrato (nessun errore, gestito viaonerror). - Motto e colori: modifica direttamente
.motto/.subheadnell'HTML e le variabili colore nel CSS (#8b1f1fè il rosso usato per titolo e accenti).
GNU GPLv3 — libero di usarlo, modificarlo e ridistribuirlo, a patto che le opere derivate restino sotto la stessa licenza.