Torna all’indice

Architettura e decisioni

Confini applicativi, flussi principali e motivazioni delle scelte tecniche.

Confini chiari, evoluzione incrementale

Diagramma del flusso tra browser, Nginx, Laravel e servizi dati

Flusso di una richiesta

Nginx serve gli asset pubblici e inoltra soltanto index.php a PHP-FPM. Laravel applica locale, policy di indicizzazione e analytics prima di invocare controller sottili. Repository e servizi isolano contenuti, media, documentazione e aggregazioni.

Decisioni principali

Rendering server-side come base

Blade produce contenuto completo senza JavaScript. Le tab asincrone, l'audio e le demo sono miglioramenti progressivi: un errore client non elimina contenuti o navigazione essenziali.

Dati strutturati senza duplicazioni

Progetti, competenze, interessi e CV rimangono nel database. I contenuti narrativi sono versionati; i riferimenti vengono risolti tramite slug consentiti.

Operazioni reversibili

Upload e modifiche dati usano transazioni. I media orfani passano da quarantena e manifest prima di una cancellazione. Deploy e migrazioni dispongono di smoke test e rollback.

Privacy e sicurezza per impostazione predefinita

Le analytics conservano aggregati, non eventi personali. Le route admin sono protette da ruoli e policy; i documenti pubblici usano un'allowlist e Markdown senza HTML grezzo o link non sicuri.

Un esempio della configurazione applicata dal renderer:

new Environment([
    'html_input' => 'strip',
    'allow_unsafe_links' => false,
]);

Consulta i Casi studio per vedere queste scelte applicate.