Vai al contenuto
cutty.dev
All posts

Lo stack tecnologico di cutty.dev: scelte consapevoli

Cosa c'è sotto cutty.dev e perché. Senza evangelismo: filosofia di uno stack noioso ma stabile, hosting nell'UE e privacy integrata nell'architettura, mantenibile da una sola persona.

La maggior parte degli articoli sul "mio tech stack" è un elenco orgoglioso delle ultime novità. Questo parla di qualcos'altro: della filosofia che sta dietro alle scelte di cutty.dev: noioso e stabile invece che alla moda, europeo invece che americano, privato per impostazione predefinita, e così semplice che una sola persona può mantenerlo.

Framework: Astro (rendering lato server)

cutty.dev è un'applicazione Astro renderizzata lato server. Ogni richiesta passa attraverso il server, che compila dinamicamente la pagina e risponde con l'HTML completo.

Perché: volevo il rendering lato server senza una complessa infrastruttura, un buon supporto per molte lingue integrato nel framework stesso e velocità senza overhead. Astro offre tutto questo e mantiene il codice leggibile — cosa che, in un progetto portato avanti da soli, vale più di qualsiasi trendy feature.

Database: SQLite

Una sola base di dati, un solo file. A ciò si aggiunge uno strato di query friendly per TypeScript, grazie al quale la modifica della struttura dei dati evidenzia immediatamente gli errori nel codice invece che in produzione.

Perché: cutty.dev è principalmente "read-heavy" — ogni click su un link comporta una lettura e l'incremento del contatore. SQLite gestisce questo compito in modo eccellente, anche con carichi di lavoro giornalieri molto elevati. Il backup consiste semplicemente nel copiare un singolo file: senza cerimonie di replicazione, senza script complessi. La semplicità qui non è un risparmio sulla qualità; è una decisione consapevole che meno componenti mobili significano meno elementi che possono guastarsi.

Hosting: server nell'Unione Europea

Server dedicato nell'UE, certificato TLS personale, reverse proxy con HTTPS automatico, applicazione in container.

Perché: è il fondamento di come cutty.dev gestisce i dati. Controllo totale sulla loro posizione (fondamentale per i clienti nell'UE e per la conformità al GDPR), nessuna dipendenza da un singolo fornitore, nessuna replicazione automatica negli Stati Uniti offerta dalle grandi piattaforme cloud e costi prevedibili invece di fatture basate sul traffico. Le comode piattaforme occidentali garantirebbero un avvio più rapido — ma a costo di determinare dove finiscono fisicamente i dati dei tuoi utenti.

Traduzioni: modello locale di IA

cutty.dev parla 25 lingue e le traduzioni sono effettuate da un modello AI locale e open source eseguito sulla nostra infrastruttura.

Perché: nessun testo dell’interfaccia viene esportato: non lo inviamo a nessun fornitore di AI esterno. Questo comporta un costo zero per ogni singola traduzione e il pieno controllo sulla qualità: possiamo aggiornarla quando vogliamo. La traduzione automatica richiede sempre una verifica umana — e ogni lingua è stata sottoposta a tale revisione — ma farlo internamente significa che la privacy non è un’opzione nel listino prezzi, ma una proprietà dell’architettura.

CSS: utility-first (Tailwind)

Un unico sistema di stili, senza CSS-in-JS e senza file di stile separati. Tutto direttamente nei template.

Perché: velocità di iterazione. Non spreco tempo a inventare nomi per le classi e gli stili inutilizzati non finiscono comunque nella pagina finale. Un design coerente imposto dallo stesso sistema. Per una persona, ogni minuto risparmiato da attività secondarie conta.

Implementazione: contenitori

Applicazione in contenitori (Docker), distribuita in modo ripetibile e portabile.

Perché: lo stesso ambiente sia in locale che in produzione, assenza di scuse come "funzionava sul mio computer", e la possibilità di trasferire l'intero setup su un altro server in mezz'ora, se necessario. La portabilità è una forma di indipendenza.

Cosa mi ha insegnato

  • Lo stack noioso vince. Astro, SQLite, Tailwind, container: tutto maturo, ben documentato e stabile. Nulla si rompe nel momento meno aspettato.
  • L'hosting in UE è pronto per la produzione. Il mito "devi andare sul grande cloud americano per essere presi sul serio" è proprio questo: un mito.
  • L'AI locale è reale. Non è necessario cedere i propri dati a un'API esterna per ottenere buone traduzioni.
  • Una persona può lanciare qualcosa che sembra il prodotto di un team. Il tempo è una risorsa più costosa del denaro, quindi ogni scelta fatta qui ha protetto proprio il tempo.

Guarda dal vivo. Domande sull'approccio tecnico — hello@cutty.dev, rispondo lo stesso giorno.