Due applicazioni in un repository, e un guardiano che le controlla entrambe
Webrand tiene insieme due cose diverse: un sito pubblico multilingua, che deve essere velocissimo, e un gestionale interno dietro autenticazione. Stanno nello stesso repository, e questo ha un rischio preciso.
Risultati misurati
5
lingue: IT, EN, FR, ES, DE
2
applicazioni in un repository
2/2
costruite dalla verifica automatica
0
passaggi di build per il sito pubblico
01 — Contesto
Il rischio di mettere due applicazioni insieme
Tenere sito e gestionale nello stesso repository semplifica la vita finché la verifica automatica ne costruisce una sola. Allora succede che un errore nell'altra passi inosservato per settimane, fino al momento peggiore.
Non è un timore astratto: nello stesso spazio di lavoro era già accaduto con un altro progetto a due applicazioni, dove per settimane la verifica ne controllava una soltanto.
02 — Approccio
Un guardiano che pretende entrambe
La verifica automatica costruisce tutte e due le applicazioni, e c'è un controllo dedicato che lo impone: se qualcuno modificasse la configurazione per costruirne una sola, il controllo fallisce. È una regola scritta nel repository, non un'abitudine da ricordare.
Il sito pubblico è HTML statico in cinque lingue: nessun passaggio di build fra il codice e la pagina, quindi nulla che possa rompersi in mezzo. Il gestionale è un'applicazione React con Vite, dietro accesso, su un sottodominio separato.
03 — Soluzione
Cosa contiene il repository
Sito pubblico multilingua
HTML statico in italiano, inglese, francese, spagnolo e tedesco.
Pannello interno
Applicazione React con Vite dietro autenticazione, su un indirizzo separato.
Guardiani di progetto
Controlli automatici che verificano le regole condivise fra le due applicazioni.
Regole scritte
Ogni lato ha le proprie istruzioni nel repository; quelle comuni stanno alla radice.
04 — Dentro il codice
Una cartella che si chiama "guardiani"
Il repository ha tre cartelle: il sito, il gestionale e — accanto a loro — `guardiani`. Dentro ci sono i controlli automatici che verificano le regole condivise fra le due applicazioni, a partire da quella che dice che la verifica deve costruirle entrambe.
È una soluzione poco elegante a guardarla e molto efficace da usare: invece di affidare una regola alla memoria di chi lavora, la si scrive come prova che fallisce. Chi prova a scorciare se ne accorge in trenta secondi, non fra tre settimane.
Il sito pubblico è HTML statico in cinque lingue, senza passaggi di compilazione; il gestionale è un'applicazione React con la sua catena di build. Due tecnologie diverse per due problemi diversi, nello stesso repository, con un solo comando di verifica.
05 — Risultato
Una lezione trasformata in regola
Il valore di questo progetto non è nelle due applicazioni ma in come convivono: un problema già incontrato altrove è diventato un controllo automatico che non si può aggirare per distrazione. È il modo più economico di non ripetere un errore.