Tehnološki sklad cutty.dev — zavestne izbire
Kaj je pod vsebino cutty.dev in zakaj. Brez evangelizma — filozofija: dolgočasen, stabilen stack, hosting v EU in zasebnost, vgrajena v arhitekturo, ki jo lahko vzdržuje ena oseba.
Večina člankov "moj tech stack" je ponosni seznam novosti. Ta pa govori o čem drugem — o filozofiji, ki stoji za izbravami cutty.dev: dolgočasno in stabilno namesto modno, evropsko namesto ameriškega, po izrazu zasebno in dovolj preprosto, da ga lahko vzdržuje ena oseba.
Framework: Astro (server-side rendering)
cutty.dev je Astro aplikacija, ki se renderira na strani strežnika. Vsaka zahteva gre skozi strežnik, dinamično sestavi stran in odgovori s pripravljenim HTML-om.
Zakaj: želel sem renderiranje na strani strežnika brez težke mehanike, dobro podporo večim jezikom vgrajeno v samo okvir (framework) in hitrost brez obremenitve. Astro ponuja vse to, kode pa ostane čitljiva — kar je pri projektu, ki ga vodi ena oseba, vredneje od katere koli modne dodatne funkcije.
Baza podatkov: SQLite
Ena baza, ena datoteka. Polegata še na plastjo poizvedb, ki je prijazna do TypeScripta, dzięki čimer sprememba strukture podatkov takoj pokaže napake v kodi namesto v produkciji.
Zakaj: cutty.dev je predvsem "read-heavy" — vsak klik na povezavo pomeni branje plus povečanje številnika. SQLite to opravlja odlično, tudi pri zelo veliki dnevni prometu. Varnostna kopija je preprosto kopiranje ene datoteke — brez ritualov replikacije, brez zapletenih skript. Preprostost tukaj ni varčevanje pri kakovosti; to je zavestna odločitev, da manj premikkajočih se del pomeni manj stvari, ki lahko zavлите.
Gostovanje: strežnik v Evropski uniji
Namenski strežnik v EU, lastno TLS certifikato, reverse proxy z avtomatskim HTTPS, aplikacija v kontejnerjih.
Zakaj: to je temelj tega, kako cutty.dev ravna z podatki. Popolna nadzor nad njihovo lokacijo (ključno za stranke v EU in za GDPR), neupakovanost z enim ponudnikom, nobena samodejna replikacija v ZDA, ki jo ponujajo velike oblakovne platforme, in predvidljivi stroški namesto računa, ki je odvisen od prometa. Ugodne zahodne platforme bi omogočile hitrejši začetek — vendar po ceni tega, kje fizično pristanejo podatki vaših uporabnikov.
Prevodi: lokalni model AI
cutty.dev govori v 25 jezikih, prevode pa izvaja lokalni, odprti model AI, ki deluje na naši lastni infrastrukturi.
Zakaj: nobena besedilo iz vmesnika ne izlazi ven — ga ne pošljemo nobeni zunanji ponudniku AI. To prinaša ničelne stroške za posamezen prevod in popolno nadzor nad kakovostjo: lahko jih osvežujemo, ko želimo. Strojen prevod vedno zahteva človeško preverjanje — in vsak jezik je že opravil takšno preglednost — vendar to delanje pri sebi pomeni, da zasebnost ni izbira v ceniku, temveč lastnost arhitekture.
CSS: utility-first (Tailwind)
Ena sistem stilov, brez CSS-in-JS, brez ločenih datotek s slogi. Vse neposredno v predlogah.
Zakaj: hitrost iteracije. Ne izgubljam časa pri izmišljanju imen klas, neuporabljeni slogi pa vseeno ne končajo na končni strani. Dosledna zasnova, ki jo prisili sam sistem. Za eno osebo je pomembna vsaka minuta, ki je ne porabim za nebotne stvari.
Implementacija: kontejnerji
Aplikacija v kontejnerih (Docker), implementirana na ponovljiv, prenosljiv način.
Zakaj: isto okolje lokalno in na produkciji, ni "pri meni je delovalo", in možnost premika celote na drug server v pol uru, če bi se pojavila potreba. Prenosljivost je oblika neodvisnosti.
Kaj sem se tega naučil
- Dolgi stack zmaga. Astro, SQLite, Tailwind, kontejnerji — vse je zrelo, dobro dokumentirano, stabilno. Nič ne poči v najmanj pričakovanem trenutku.
- Hosting v EU je pripravljen za produkcijo. Mit o tem, da "moraš iti na veliko ameriško oblak, da bi bilo resno", je prav to — mit.
- Lokalna AI je realna. Svoje podatke ni treba predajati zunanjemu API, da bi imeli dobre prevode.
- Ena oseba lahko izda stvar, ki izgleda kot produkt ekipe. Čas je vir, ki je dražji od denarja, zato je vsaka izbira tukaj prav to — varovala čas.
Poglej v živo. Vprašanja o tehničnem pristopu — hello@cutty.dev, odgovorim še isti dan.