La guida completa · Sviluppo web e di prodotto

Prodotti e siti web che performano: la guida completa

Tutto cio che facciamo per costruire siti marketing e prodotti veloci, misurabili, SEO-ready e accessibili, scritto per intero. Come definiamo il perimetro, come scegliamo lo stack, come applichiamo i budget di performance, come l'analytics viene integrata dal primo giorno e come si svolge l'incarico dall'audit al lancio. Nessun contenuto di riempimento, nessun segreto trattenuto.

Un riferimento operativo, non una brochure commerciale. Quando vuoi applicarlo al tuo sito, inizia con un audit gratuito.

Questa guida e lunga perche le decisioni che determinano se un sito performa, si posiziona e converte vengono prese presto, prima che venga scritto qualsiasi codice. La maggior parte di queste decisioni e anche invisibile a chi paga per il progetto, ed e cosi che ci si ritrova con un sito bellissimo che ottiene 38 su Lighthouse e non ha nessun tracking analytics su cosa succede dopo che qualcuno clicca la CTA dell'hero. Quello che segue e come ragioniamo su ciascuna di queste decisioni, nell'ordine in cui le prendiamo.

Come definiamo il perimetro e stimiamo

Definire il perimetro e un esercizio diagnostico, non commerciale. Il risultato di un buon processo di scoping e un documento abbastanza preciso da non lasciare dubbi su cosa e incluso e cosa non lo e, e abbastanza chiaro da far sapere a chi paga esattamente cosa avra alla fine di ogni sprint. Qualsiasi cosa vaga in un perimetro e una futura disputa in attesa di manifestarsi.

Timeline degli sprint: dall'audit al lancio
1 Audit Gratuito Sett. 1 2 Perimetro Sett. 2 a 3 3 Sprint 1 Sett. 4 a 5 4 Sprint 2 Sett. 6 a 7 5 QA + Lancio Settimana 8 ReportLighthouse Brief + pianosprint approvato Previewdeploy Previewdeploy QA tracking+ consegna
Ogni sprint termina con un deploy in anteprima che puoi testare e approvare. Nulla passa allo sprint successivo fino all'approvazione del precedente. Questo evita il classico affanno finale dove metà del sito non è finito e tutto il QA viene lasciato all'ultima settimana.

Definiamo il perimetro in tre passaggi. Il primo passaggio e l'audit tecnico gratuito: cosa esiste adesso, cosa non va e quali sono i vincoli. Il secondo passaggio e un brief scritto che copre i deliverable, i criteri di accettazione per ciascuno, i budget di performance target, gli eventi analytics che tracceremo e i criteri di lancio. Il terzo passaggio e il piano degli sprint: il lavoro suddiviso in finestre di due settimane, ognuna delle quali si conclude con qualcosa che puoi testare e approvare.

La stima segue naturalmente dal brief. Se il brief e preciso, la stima e precisa. Se non lo e, non facciamo supposizioni; facciamo le domande che lo rendono preciso prima che cambi denaro di mano. E cosi si evita il classico schema in cui un progetto a prezzo fisso si trasforma in una serie di ordini di modifica perche il perimetro originale era un paragrafo di copy commerciale.

Cosa contiene un documento di perimetro. Deliverable per tipo di pagina e componente, criteri di accettazione per ciascun deliverable, budget di performance (obiettivi LCP, CLS, INP), eventi analytics e destinazioni, integrazioni di terze parti, supporto browser e dispositivo, standard di accessibilita (WCAG 2.1 AA per impostazione predefinita), ambiente di deployment e documentazione di handover. Se non e nel perimetro, non e nel prezzo.

Le stime sono in intervalli di tempo, non in numeri singoli. Forniamo un caso migliore e un caso realistico, spieghiamo cosa determina la differenza e costruiamo il piano degli sprint dal caso realistico. Gonfiare un progetto con buffer artificiali non e onesto; dire che un progetto da cinque settimane richiedera tre non e utile.

L'audit tecnico gratuito

Ogni incarico inizia con un audit tecnico di cio che hai gia, perche la cosa piu costosa nello sviluppo web e costruire nella direzione sbagliata. L'audit risponde a due domande prima che venga scritto qualsiasi perimetro: cosa c'e effettivamente di sbagliato nel sito o progetto attuale, e quanto varrebbe correggerlo?

L'audit copre cinque livelli:

  • Punteggi Lighthouse su mobile e desktop. Eseguiamo piu run e prendiamo la mediana, non il risultato migliore. Il mobile e cio che conta per il segnale di ranking dei Core Web Vitals di Google; il desktop nasconde i problemi che il mobile espone. Annotiamo le risorse e gli script specifici che causano i fallimenti, non solo i punteggi.
  • Core Web Vitals da dati di campo reali. Lighthouse e una simulazione di laboratorio. I dati del Chrome User Experience Report (CrUX) ci dicono cosa hanno effettivamente sperimentato visitatori reali su connessioni reali. Un sito puo superare Lighthouse e fallire comunque le soglie CWV di campo a causa di script di terze parti, strumenti di A/B testing o widget di chat che il laboratorio non carica.
  • Idoneita SEO. Verifichiamo crawlabilita e indicizzazione, strategia di rendering (se la pagina e server-rendered o client-rendered e se Googlebot vede la stessa cosa di un utente), copertura e validita dei dati strutturati, correttezza dei tag canonical e hreflang e qualita dei meta. Un sito costruito per crescere deve essere crawlabile e analizzabile prima del lancio.
  • Accessibilita. Una scansione automatica con axe-core intercetta circa il 30-40% delle violazioni WCAG 2.1 AA. La integriamo con un controllo manuale dell'ordine del focus, della navigazione da tastiera, del contrasto cromatico e dell'etichettatura dei form. I fallimenti di accessibilita sono anche fallimenti SEO: influenzano la crawlabilita, il parsing dei dati strutturati e i segnali di esperienza utente.
  • Analytics e tracking. Verifichiamo cosa viene tracciato, se il tracking si attiva correttamente e se gli eventi corrispondono alle domande a cui l'azienda deve rispondere. La maggior parte dei siti che analizziamo tracciano le visualizzazioni di pagina e nient'altro, il che significa che sanno quante persone sono arrivate ma non cosa ha fatto nessuna di esse.

Il risultato e un report scritto con ogni problema categorizzato per impatto (critico, alto, medio, basso), l'URL o il componente specifico in cui si verifica e la correzione. Lo esaminiamo in una breve chiamata e tieni il report indipendentemente da come procedi.

Scelta dello stack

La scelta dello stack e un esercizio di corrispondenza con i vincoli. Lo stack giusto e quello che si adatta al modello di contenuto, alle competenze del team, ai requisiti di performance e alla traiettoria di crescita. Non e il framework piu nuovo, non quello che piace di piu al lead developer e non quello che produce la demo piu impressionante.

La decisione principale riguarda se il sito e statico, server-rendered o una full client-side application e se e coinvolto un CMS. Ecco la panoramica pratica:

Approccio Ideale per Trade-off
Sito statico (HTML, CSS, JS minimale) Landing page, siti marketing a bassa variazione, documentazione Caricamento piu veloce possibile, hosting semplicissimo; non adatto a contenuti dinamici o funzionalita autenticate
Static site generator (Eleventy, Hugo, Astro) Siti ricchi di contenuti con aggiornamenti poco frequenti, blog, knowledge hub Ottima baseline di performance, si abbina bene a un headless CMS; il build time cresce con il volume di contenuti
Framework server-rendered (Next.js, Nuxt, SvelteKit) Siti marketing con personalizzazione, pagine di prodotto, e-commerce SEO solida per impostazione predefinita, strategie di rendering flessibili; piu infrastruttura da gestire
Headless CMS con frontend Siti in cui i team non tecnici pubblicano contenuti di frequente Migliore separazione delle responsabilita; aggiunge una dipendenza e un costo mensile per la piattaforma CMS
Prodotto completo (SPA o app server-rendered) Funzionalita di prodotto autenticate, dashboard, strumenti con stato Massima flessibilita; maggiore complessita, build piu lungo, richiede un trattamento SEO attento per le pagine pubbliche

La scelta tra un static site generator e un framework server-rendered e quella su cui i team sbagliano piu spesso. Se il sito e principalmente contenuto marketing con aggiornamenti poco frequenti e senza personalizzazione, un generatore statico superera sempre un framework server-rendered e costera molto meno da ospitare e mantenere. Consigliamo un framework quando il contenuto e dinamico, il team necessita di rendering per utente o il sito deve crescere verso funzionalita di prodotto nel tempo.

Facciamo questa raccomandazione per iscritto come parte del perimetro, con il ragionamento e i trade-off, cosi la decisione e esplicita e documentata. Non promuoviamo uno stack particolare perche e quello che conosciamo meglio; promuoviamo quello che si adatta al problema.

Budget di performance e Core Web Vitals

Un budget di performance e un insieme di vincoli concordati per iscritto prima che venga committata la prima riga di codice. Senza uno, le prestazioni vengono sempre sacrificate a favore delle funzionalita perche il costo di aggiungere uno script di terze parti o un'immagine non ottimizzata e invisibile finche qualcuno non esegue Lighthouse e trova un punteggio di 42.

Soglie Core Web Vitals: buono, da migliorare, scarso
LCP (Largest Contentful Paint) Buono Da migl. Scarso sotto 2,5s 2,5 a 4s oltre 4s INP (Interaction to Next Paint) Buono Da migl. Scarso sotto 200ms 200 a 500ms oltre 500ms CLS (Cumulative Layout Shift) Buono Med. Scarso sotto 0,10 0,1 a 0,25 Tutte e tre devono essere nella banda Buono al p75 dei dati utente reali (CrUX) perché Google classifichi la pagina come superamento dei Core Web Vitals. Buono Da migliorare Scarso
Google usa i Core Web Vitals come segnale di ranking. Fallire su uno qualsiasi dei tre mette una pagina nella banda Scarso o Da migliorare al p75, il che significa che almeno un quarto dei visitatori reali ha una cattiva esperienza. Li impostiamo come soglie di pass/fail rigide nella pipeline di deploy, non come obiettivi auspicabili.

Lavoriamo con tre soglie Core Web Vitals di Google:

  • Largest Contentful Paint (LCP) sotto 2,5 secondi. LCP misura la velocita di caricamento dell'elemento di contenuto principale. Il singolo maggiore killer di LCP e l'immagine hero: grande, non compressa, servita senza un formato moderno come WebP o AVIF e caricata senza fetchpriority="high". Correggere l'immagine hero da sola sposta la maggior parte dei siti dal fallimento al superamento di LCP.
  • Cumulative Layout Shift (CLS) sotto 0,10. CLS misura quanto il layout si sposta durante il caricamento della pagina. La causa e quasi sempre immagini senza attributi width e height espliciti (cosi il browser non riserva spazio) o web font che caricano in ritardo e rifluiscono il testo. Entrambi sono prevenibili dal primo commit.
  • Interaction to Next Paint (INP) sotto 200 millisecondi. INP misura la reattivita all'input dell'utente. I task JavaScript lunghi sul main thread sono il principale colpevole: bundle di grandi dimensioni, script di terze parti pesanti e operazioni sincrone che bloccano l'event loop.

Applicazione del budget di performance. Impostiamo le soglie Lighthouse CI nella pipeline di deployment cosi qualsiasi commit che peggiora un punteggio Core Web Vitals blocca il deploy finche non viene corretto. Questo previene il degrado lento che trasforma un sito veloce in uno lento nel corso di dodici mesi di aggiunte di funzionalita.

Oltre ai tre Core Web Vitals, definiamo un budget per il peso totale della pagina, la dimensione del bundle JavaScript, il numero di risorse render-blocking e il numero di script di terze parti consentiti nelle pagine critiche per le performance. Ognuno e scritto nel perimetro cosi tutti quelli che lavorano al progetto conoscono il vincolo prima di proporre qualcosa che lo violerebbe.

Gli script di terze parti meritano attenzione speciale. Analytics, widget di chat, strumenti di A/B testing e pixel marketing sono individualmente piccoli; collettivamente aggiungono regolarmente da due a quattro secondi al tempo di caricamento e introducono layout shift. Usiamo un pattern a facciata per gli strumenti non critici: carichiamo un segnaposto leggero che carica lo script completo solo quando l'utente interagisce con esso. Il widget di chat si carica quando l'utente clicca il pulsante della chat, non al caricamento della pagina.

Un build SEO-ready

Un build SEO-ready non e una checklist da applicare alla fine. E un insieme di decisioni strutturali prese prima che venga scritto qualsiasi contenuto. L'errore piu grande che i team commettono e costruire un sito, lanciarlo e poi chiedere a un consulente SEO di risolvere i problemi, a quel punto correggerli significa rielaborare l'architettura sottostante piuttosto che aggiungere un meta tag.

HTML semantico e struttura del documento

Ogni pagina necessita di un singolo H1, una gerarchia di heading logica (H2 per le sezioni, H3 per le sottosezioni), elementi landmark per navigazione, contenuto principale e footer, e testo alternativo descrittivo su ogni immagine. Queste sono le cose da cui dipendono sia Googlebot che gli screen reader per comprendere la pagina, e non costano nulla fare bene la prima volta.

Strategia di rendering e JavaScript

Googlebot e in grado di eseguire il rendering di JavaScript, ma lo fa in una seconda ondata che puo richiedere giorni per le pagine non ancora autorevoli. Per le pagine pubbliche che devono posizionarsi, il server-side rendering o la generazione statica sono piu sicuri di una pura applicazione client-side. Se il tuo prodotto e una single-page application, le pagine marketing e le landing page dovrebbero essere renderizzate staticamente anche se il prodotto autenticato non lo e.

Dati strutturati

Includiamo dati strutturati su ogni tipo di pagina dal primo giorno, usando i tipi che corrispondono al contenuto. Il rollout segue una mappa standard:

Tipo di schema Dove va Cosa sblocca
Organization In tutto il sito (di solito nel footer o nell'head) Pannello di conoscenza del brand, logo nei risultati di ricerca
BreadcrumbList Ogni pagina con una gerarchia di navigazione Percorso breadcrumb nel risultato di ricerca
WebSite con SearchAction Homepage Sitelinks search box per query di brand
FAQPage Pagine con una sezione FAQ autentica Accordion FAQ espandibile nel risultato
Article Post del blog e guide Data di pubblicazione, autore e indicizzazione migliorata
Product Pagine prodotto o pricing dove applicabile Prezzo e disponibilita nel risultato
SoftwareApplication Pagine di prodotto SaaS Dati di valutazione e piattaforma nel risultato

Ogni blocco di dati strutturati viene validato con il Rich Results Test di Google prima del lancio e monitorato in Search Console dopo. Schema non valido e peggio di nessuno schema: produce un avviso di azione manuale se Google lo trova fuorviante.

Tag canonical e hreflang

Ogni pagina necessita di un tag canonical auto-referenziale che punta al suo URL preferito. Se il sito ha versioni in piu lingue o locale, ogni pagina necessita di un set completo di annotazioni hreflang, incluso un hreflang auto-referenziale e un x-default. hreflang mancante o errato e uno degli errori piu comuni e costosi sui siti internazionali: Google spesso indicizza la versione nella lingua sbagliata per ogni mercato, il che divide i segnali di ranking e diluisce l'autorita tra le versioni.

Titoli e meta description

I titoli restano sotto 60 caratteri. Le meta description restano sotto 155. Entrambe vengono scritte prima del lancio, non auto-generate dalla prima frase del testo. Sono la prima cosa che un ricercatore vede nel risultato e determinano se qualcuno clicca, indipendentemente dalla posizione di ranking.

Accessibilita per impostazione predefinita

L'accessibilita non e un esercizio di conformita. E uno standard di qualita del build. Un sito inaccessibile agli utenti da tastiera ha la navigazione rotta per gli utenti avanzati. Un sito con scarso contrasto cromatico fallisce alla luce del sole, non solo per gli utenti con disabilita visive. Un sito senza label ARIA appropriate e piu difficile da analizzare per Google, non solo per gli utenti di screen reader.

Lavoriamo con WCAG 2.1 AA su ogni build. Le pratiche che contano di piu in un tipico sito marketing o prodotto digitale:

  • Gestione del focus. Ogni elemento interattivo e focalizzabile e ha un indicatore di focus visibile. L'ordine del focus corrisponde all'ordine di lettura visiva. I dialog modali catturano il focus correttamente e lo restituiscono al trigger quando vengono chiusi.
  • Navigazione da tastiera. Navigazione, form ed elementi interattivi sono tutti operabili solo da tastiera. Significa nessuna interazione solo al passaggio del mouse, nessun handler di clic che intercetta la tastiera e nessun controllo personalizzato che non implementa i pattern ARIA previsti.
  • Contrasto cromatico. Testo body con un rapporto di contrasto minimo di 4,5:1 rispetto allo sfondo. Testo grande (18pt o 14pt grassetto) a 3:1. Verifichiamo ogni combinazione di colori nel design, non solo il testo principale sullo sfondo principale.
  • Testo alternativo. Ogni immagine informativa ha un testo alternativo descrittivo. Le immagini decorative hanno attributi alt vuoti (alt="") cosi gli screen reader le saltano. Le icone che costituiscono l'unico contenuto di un pulsante o link hanno una label accessibile tramite aria-label o uno span visivamente nascosto.
  • Accessibilita dei form. Ogni campo del form ha una label visibile associata programmaticamente all'input, non solo visivamente adiacente. I messaggi di errore vengono annunciati agli screen reader e collegati all'input pertinente. I campi obbligatori sono indicati nella label, non solo con il colore.

I test automatici intercettano circa il 30-40% delle violazioni WCAG. Il resto richiede test manuali. Eseguiamo scansioni automatiche a ogni commit usando axe-core e facciamo un controllo manuale da tastiera e screen reader su ogni tipo di pagina prima del lancio.

Analytics e misurazione integrate dal primo giorno

L'analytics e quasi sempre un ripensamento nei progetti web. Il sito viene lanciato, qualcuno aggiunge Google Analytics tramite un plugin CMS e tre mesi dopo l'azienda non ha idea di cosa stia davvero guidando le conversioni perche gli eventi non sono mai stati configurati per rispondere alle domande che contano.

Architettura di sistema: frontend, API, dati, analytics
FRONTEND (sito statico, SSR o SPA) LIVELLO API (REST, GraphQL) LIVELLO ANALYTICS (GA4, Segment) LIVELLO DATI (DB, CMS, CRM) DATA WAREHOUSE (reportistica) Ogni livello è deployabile in modo indipendente. L'analytics si attiva dal frontend sugli eventi utente; il livello dati non espone mai record grezzi al client.
Collegare l'analytics al momento della build significa che ogni evento di conversione è strumentato prima che arrivi il primo visitatore. Il livello analytics siede in parallelo al livello API così il tracking non blocca mai il caricamento della pagina, e il data warehouse riceve un flusso di eventi pulito per la reportistica.

Configuriamo l'analytics prima che il primo sprint finisca, con gli eventi mappati sulle domande di business, non su cio che e facile tracciare. La configurazione segue un brief scritto durante il perimetro:

  • Quali azioni costituiscono una conversione? Invii di form, clic su CTA, visite alla pagina dei prezzi, richieste di demo, avvii di trial gratuiti. Ognuno riceve un evento denominato con parametri coerenti cosi i dati sono interrogabili.
  • Quali pagine guidano il comportamento piu vicino alla conversione? Strumentiamo l'intero funnel: dove le persone entrano, quali pagine visitano prima di convertire e dove abbandonano. Senza questi dati, l'ottimizzazione e una congettura.
  • Qual e la piattaforma analytics? GA4 e l'impostazione predefinita per la maggior parte dei siti marketing. Amplitude, Mixpanel o Segment sono scelte migliori per l'analytics di prodotto dove hai bisogno di stream di eventi per utente. Scriviamo l'implementazione rispetto alla piattaforma specificata nel perimetro.

Su misurazione e privacy. Implementiamo l'analytics in conformita con i requisiti GDPR e ePrivacy: gestione del consenso prima che si attivi qualsiasi tracking, IP anonimizzato per impostazione predefinita, impostazioni di conservazione dei dati riviste al lancio e nessuna informazione personale identificabile nei parametri degli eventi. Fare questo bene fin dall'inizio e molto piu economico che adattare un livello di consenso conforme su un sito che ha tracciato tutto per dodici mesi.

Dopo il lancio, eseguiamo un QA pass del tracking: ogni evento si attiva sul trigger corretto, nessun evento duplicato, nessun evento mancante e i dati nella piattaforma analytics corrispondono al comportamento atteso degli utenti. Richiede mezza giornata e previene mesi di lavoro basato su dati errati.

Design system e riuso dei componenti

Un sistema di componenti e la differenza tra un sito che resta coerente mentre cresce e uno che sviluppa dodici stili di pulsante leggermente diversi su diciassette pagine perche ognuna e stata costruita indipendentemente. E anche la differenza tra un sito in cui un team non tecnico puo pubblicare nuovi contenuti in sicurezza e uno in cui ogni nuova pagina richiede a un ingegnere di copiare e incollare il markup sperando di non rompere nulla.

Costruiamo ogni sito con una libreria di componenti documentata. Il perimetro copre quali componenti sono necessari e quante varianti ciascuno richiede. L'implementazione copre tre aspetti:

  • I componenti stessi, costruiti secondo il design, con varianti, stati (hover, focus, disabilitato, errore) e comportamento responsivo documentati e testati.
  • I design token, la fonte di verita per colore, scala tipografica, spaziatura, ombra e border radius. I token risiedono in un unico posto; ogni componente li referenzia. Cambiare un colore di brand significa cambiare un valore, non cercare in tutto un foglio di stile.
  • Documentazione d'uso, scritta per le persone che useranno il sistema dopo che lo avremo consegnato. Quale componente usare quando, cosa non fare con ciascuno e come aggiungere una nuova variante senza rompere quelle esistenti.

Per i siti marketing, costruiamo il sistema di componenti in qualsiasi framework specificato nel perimetro, o in plain HTML e CSS per i siti statici. Per i prodotti digitali, adottiamo per impostazione predefinita un pattern di componenti headless dove lo strato visivo e separato dalla logica di business, cosi il design system puo essere aggiornato senza toccare il codice applicativo.

CMS e flussi di contenuto

La scelta del CMS e una decisione di flusso di lavoro, non tecnologica. Il CMS giusto e quello che permette alle persone che aggiorneranno effettivamente il sito di farlo senza aprire un ticket, rompere il layout o dover capire il codebase.

Le principali opzioni con cui lavoriamo e quando consigliamo ciascuna:

  • Contentful o Sanity per siti in cui il contenuto e strutturato (ci sono tipi di contenuto ricorrenti con campi definiti), il team editoriale e grande e il framework frontend deve estrarre il contenuto tramite API. Entrambi hanno API developer solide, buona trasformazione delle immagini e configurazioni di anteprima ragionevoli.
  • WordPress (headless) per team gia all'interno di WordPress, con una grande libreria di contenuti o che necessitano dell'ecosistema di plugin WordPress (e-commerce, form, membership). Disaccoppiato dal frontend, WordPress diventa una capace API di contenuto senza il suo tradizionale costo in termini di performance.
  • Notion o Airtable con un build step per team piccoli che vogliono scrivere contenuti in uno strumento familiare e pubblicare tramite un build schedulato. Funziona bene per blog e documentazione con bassa frequenza di aggiornamento.
  • Nessun CMS (file flat o contenuto basato su codice) per siti in cui il team e tecnico e gli aggiornamenti dei contenuti sono abbastanza poco frequenti da non essere un onere con un flusso basato su git. Opzione piu semplice; meno overhead.

Le migrazioni CMS meritano attenzione separata. Spostare contenuti da una piattaforma a un'altra e quasi sempre piu complicato di quanto sembri: redirect per gli URL che cambiano, contenuti che non si mappano bene nel nuovo schema, immagini da ricaricare e metadati SEO da preservare. Pianifichiamo le migrazioni nel perimetro, costruiamo gli script di import prima di toccare il sito live e verifichiamo ogni redirect prima del giorno del lancio.

Integrazioni e API

Un sito marketing o prodotto moderno tipicamente si connette a cinque-quindici servizi esterni al lancio: analytics, CRM, email marketing, assistenza clienti, elaborazione pagamenti, gestione form e cio di cui il prodotto stesso ha bisogno. Ogni integrazione e un potenziale punto di fallimento, un rischio per le performance e una superficie di privacy. Le trattiamo con lo stesso rigore del codice applicativo.

La checklist di integrazione che eseguiamo prima di aggiungere qualsiasi servizio di terze parti:

  • Deve essere caricato su ogni pagina o solo sulle pagine in cui viene utilizzato?
  • Blocca il rendering? Se si, puo essere differito o caricato in modo asincrono?
  • Imposta cookie o raccoglie dati personali? Se si, deve essere subordinato al consenso.
  • Cosa succede all'esperienza utente se questo servizio e inattivo? C'e un fallback appropriato?
  • La chiave API e limitata ai permessi minimi necessari? E esposta al client e, se si, e sicuro?

La gestione dei form e un'area comune in cui le cose vanno storte. Utilizziamo un handler lato server o un servizio di form (Formsubmit, Netlify Forms o una funzione serverless) piuttosto che esporre un indirizzo email o una chiave API di email transazionale nel client. I campi honeypot, il rate limiting e reCAPTCHA sono standard; la scelta tra di loro dipende dal volume di invii e dalla sensibilita dei dati.

Per i prodotti digitali con la propria API, scriviamo un contratto API prima che venga scritto qualsiasi codice frontend o backend. Il contratto copre endpoint, strutture di request e response, autenticazione, codici di errore e paginazione. Lo sviluppo frontend e backend puo poi procedere in parallelo rispetto al contratto concordato, piuttosto che in sequenza, il che e come si mantiene alta la velocita degli sprint in un prodotto digitale.

Sicurezza di base

La sicurezza in un sito marketing o prodotto digitale non e glamour, ma le basi sono non negoziabili. Gli errori che causano le violazioni sono quasi sempre quelli ovvi: segreti esposti nel codice client-side, nessuna Content Security Policy, dipendenze con vulnerabilita note e nessuna applicazione di HTTPS.

La checklist di sicurezza che eseguiamo prima del lancio su ogni incarico:

  • Nessun segreto nel bundle client. Chiavi API, stringhe di connessione al database e token di servizio che devono restare privati appartengono alle variabili d'ambiente lette al build time o in una funzione lato server, non nel codice che viene inviato al browser.
  • Content Security Policy. Un header CSP limita quali domini possono caricare script, stili, immagini e frame sulle tue pagine. E la mitigazione piu efficace contro gli attacchi cross-site scripting. Iniziamo restrittivi e allarghiamo solo cio che e dimostrabilmente necessario.
  • HTTPS ovunque. Ogni richiesta HTTP viene reindirizzata ad HTTPS. Gli header HSTS sono impostati cosi i browser applicano HTTPS per le visite future anche senza un redirect. Il contenuto misto (una pagina HTTPS che carica risorse HTTP) e trattato come un blocco al lancio.
  • Igiene delle dipendenze. Facciamo l'audit dell'albero delle dipendenze prima del lancio e segnaliamo i pacchetti con vulnerabilita note usando npm audit o equivalente. Le nuove dipendenze vengono verificate per l'eta del pacchetto prima dell'installazione; non installiamo pacchetti pubblicati nelle ultime 24 ore.
  • Validazione dell'input. Qualsiasi dato che entra nel sistema da un utente (invii di form, parametri URL, richieste API) viene validato prima di essere elaborato. Lato server. Non solo nel browser.
  • Rate limiting. Gli endpoint API e i gestori di form che possono essere chiamati da utenti non autenticati hanno rate limit per prevenire abusi. Questo e particolarmente importante per i form di contatto, che sono un vettore comune per spam e credential stuffing.

Hosting e deployment

L'hosting e dove performance, affidabilita e sicurezza si uniscono. La scelta dell'hosting deve seguire dalla scelta dello stack: un sito statico non ha bisogno di un server; un'applicazione server-rendered si. Scegliere l'hosting sbagliato per lo stack porta a complessita e costi non necessari.

Per siti statici e siti costruiti con static site generator, adottiamo per impostazione predefinita un host CDN-first (Netlify, Vercel o Cloudflare Pages). Ogni pagina viene servita come file pre-costruito da una location edge vicina al visitatore, senza round-trip al server per l'HTML iniziale. I tempi di caricamento che richiederebbero due-tre secondi da un server single-region scendono sotto il mezzo secondo da un CDN edge. La differenza di costo tra un host CDN e un server e spesso zero per i volumi di traffico delle startup e scaleup.

Per applicazioni server-rendered e prodotti digitali, valutiamo i requisiti infrastrutturali rispetto al traffico previsto e al budget. Un prodotto piccolo con poche migliaia di utenti al mese non ha bisogno di un cluster Kubernetes; ha bisogno di un VPS ben configurato o di una piattaforma gestita come Railway o Render con impostazioni di autoscaling ragionevoli.

Ambienti di anteprima

Ogni pipeline di deployment che configuriamo include ambienti di anteprima: deployment isolati e pubblicamente accessibili di ogni pull request o branch, con un URL unico generato automaticamente. Gli ambienti di anteprima permettono all'intero team (designer, redattori, QA, fondatori) di rivedere e approvare le modifiche prima che vengano unite al main. Permettono anche di individuare le regressioni prima che raggiungano il sito live, perche l'anteprima esegue lo stesso build di produzione.

Pipeline di deployment

La pipeline di deployment viene eseguita a ogni commit al branch main: build, lint, unit test, controllo Lighthouse CI rispetto ai budget di performance e deployment. Se un passaggio fallisce, il deployment e bloccato. Non e opzionale; e come si previene l'accumulo lento di debito tecnico che trasforma un sito performante in uno lento.

Scalabilita e manutenibilita

Il build che viene consegnato al lancio non e quello che gira tra due anni. Scalare un sito o prodotto riguarda principalmente le decisioni prese presto: un sistema di componenti che rende facile aggiungere pagine in modo coerente, un CMS che consente ai team non tecnici di pubblicare senza supporto ingegneristico, una lista di dipendenze che non cresce senza governance e un codebase che i nuovi ingegneri possono navigare senza un orientamento di tre giorni.

Le pratiche che influenzano maggiormente la manutenibilita nel lungo periodo:

  • Documentazione a livello di componente. Ogni componente ha un breve commento che spiega quando usarlo, quando non usarlo e a cosa servono le varianti. Costa venti minuti per componente e risparmia ore di conversazioni "a cosa serve questo componente" in seguito.
  • Convenzioni di naming coerenti. Nomi di file, nomi di classi, nomi di eventi e endpoint API seguono una singola convenzione, documentata e applicata tramite regole di lint dove possibile. L'incoerenza nel naming e la singola maggiore fonte di confusione per gli ingegneri che si uniscono a un progetto sei mesi dopo il lancio.
  • Pinning delle dipendenze e audit regolari. Le dipendenze sono pinned a versioni esatte nel lockfile e revisionate ogni trimestre. Le nuove dipendenze vengono proposte con una giustificazione e una revisione delle alternative. I dependency tree espansi sono la principale fonte di rischio supply-chain e la principale ragione per cui i tempi di build crescono nel tempo.
  • Budget di performance applicati in CI. Una volta impostati, i budget di performance dovrebbero essere applicati automaticamente, non da qualcuno che ricorda di eseguire Lighthouse prima di un deploy. L'integrazione Lighthouse CI fa si che qualsiasi regressione venga rilevata alla fase di code review, non sei mesi dopo il lancio.

Il vero costo del debito tecnico in un progetto web non e il codice che deve essere sostituito. E il tempo speso a lavorare attorno a codice che nessuno capisce ma tutti hanno paura di toccare. Il momento migliore per prevenirlo e durante il build iniziale. Il secondo momento migliore e uno sprint dedicato al debito tecnico, che possiamo definire separatamente se il codebase lo ha gia accumulato.

Il modello di incarico

Ogni incarico segue la stessa struttura: audit, perimetro, build in sprint, lancio e handover. La struttura e la stessa che costruiamo una landing page o un prodotto completo; le dimensioni di ogni fase si adattano al perimetro.

Le fasi in ordine:

  • Audit (gratuito). Revisione tecnica del sito o progetto esistente. Report scritto piu una breve chiamata sui risultati. Il report e tuo indipendentemente da come procedi.
  • Perimetro. Brief scritto che copre deliverable, criteri di accettazione, budget di performance, eventi analytics, integrazioni, supporto browser e dispositivo e il piano degli sprint. Revisionato e approvato prima che venga scritto qualsiasi codice. E l'ora piu preziosa del progetto: un perimetro preciso previene ogni classe di disputa che deriva da uno vago.
  • Design (dove richiesto). Se hai un file di design, partiamo da quello. In caso contrario, iteriamo nel browser con deployment di anteprima. Le iterazioni di design sono incluse nel perimetro; le nuove funzionalita scoperte durante il design vengono definite separatamente.
  • Build in sprint. Sprint di due settimane, ognuno che si conclude con un deployment di anteprima che puoi testare e approvare. Software funzionante alla fine di ogni sprint: nessuna funzionalita a meta, nessun lavoro che esiste solo su una macchina locale.
  • QA e lancio. QA completo su dispositivi e browser, verifica delle performance rispetto ai budget, audit di accessibilita, QA del tracking analytics e lancio. Non consegniamo un URL e spariscono; siamo disponibili per due settimane dopo il lancio per correggere qualsiasi problema che emerge nel mondo reale e che il QA non ha intercettato.
  • Handover. Documentazione scritta del sistema di componenti, della configurazione CMS, della pipeline di deployment, delle integrazioni di terze parti e degli aspetti che richiedono attenzione continuativa (aggiornamenti delle dipendenze, monitoraggio delle performance, revisione analytics). Una sessione con il tuo team per esaminare il documento di handover.

Poiche gestiamo lavoro di crescita e SEO per le stesse aziende per cui costruiamo, l'handover puo transitare in un incarico continuativo o restare come progetto una tantum. Entrambe le opzioni vanno bene. Il sito che costruiamo e tuo, il codice e tuo e la documentazione e scritta in modo che tu possa gestirlo autonomamente.

FAQ

Quanto dura un progetto tipico? Una landing page richiede tipicamente da quattro a sei settimane dal sign-off del perimetro al lancio, inclusi contenuti, QA e deployment. Un sito marketing completo richiede da otto a dodici settimane. Un prodotto digitale dipende dal perimetro ma lo strutturiamo in sprint fissi di due settimane cosi vedi software funzionante alla fine di ciascuno.

Lavorate con lo stack esistente? Si, se l'audit ci dice che lo stack attuale e solido. Consigliamo un cambio solo quando quello attuale e un vero vincolo a cio che devi fare, e spieghiamo il ragionamento prima che qualsiasi lavoro inizi.

Quanto costa? L'audit e gratuito. Il progetto viene definito dopo l'audit perche il perimetro giusto dipende da cio che troviamo e da cio che vuoi realizzare. Scriviamo il perimetro e il prezzo nell'accordo prima che qualsiasi lavoro inizi.

Potete occuparvi anche di SEO e crescita dopo il progetto? Si. Gestiamo SEO, contenuti e link building per le stesse aziende per cui costruiamo siti. Il build che consegniamo e gia SEO-ready; il lavoro di crescita si costruisce sopra di esso. Non c'e alcun passaggio a un'altra agenzia.

Cosa succede se abbiamo bisogno di modifiche dopo che il perimetro e stato definito? Le modifiche fuori dal perimetro concordato vengono definite come voce separata con un prezzo separato, prima che qualsiasi lavoro su di esse inizi. Non assorbiamo modifiche fuori perimetro in silenzio per poi fatturarle alla fine.


Questo e il metodo completo. Quando vuoi applicarlo al tuo sito o al tuo prossimo progetto, il passo successivo e un audit gratuito: risultati reali sui tuoi dati Lighthouse e di campo reali, in circa una settimana, senza alcun impegno.

Richiedi un audit gratuito

Pronto a mettere tutto questo in pratica?

Un audit tecnico gratuito del tuo sito o progetto. Risultati reali sui tuoi dati Lighthouse e di campo reali. Un perimetro fisso per sistemare cio che conta. Risultati in una settimana.

Richiedi un audit gratuito
Nessuna carta di credito · Il report e tuo · Risposta entro 24 ore

Letture correlate

Letture correlate

Letture correlate

Richiedi un audit gratuito