Tehnološki stack cutty.dev — svjesni izbori
Što je ispod cutty.dev i zašto. Bez evangelizma — filozofija: dosadan, stabilan stack, hosting u EU i privatnost upisana u arhitekturu koju jedna osoba može održavati.
Većina zapisa "moj tech stack" su ponosni popis noviteta. Gledaj, imam ovo, imam ono, a evo i svježe biblioteke od prošlog tjedna. Ovaj će biti drugačiji.
Jer istina je da kada projekt vodiš sam, ne tražiš najmodernije. Tražiš nešto što te neće probuditi u tri ujutro. I upravo o tome je cijeli ovaj cutty.dev tehnološki stack: dosadno umjesto moderno, europski umjesto američkog, privatno od samih temelja i dovoljno jednostavno da to može obaviti jedan par ruku.
Idem redom, kao da ti to objašnjavam uz kavu.
Astro renderirano na poslužitelju (i zašto ne nešto "zanimljivije")
cutty.dev je Astro s renderiranjem na strani poslužitelja. Svaki zahtjev ide preko poslužitelja, sastavlja stranicu i vraća gotov HTML. Dosadno? Upravo o tome se radi.
Htio sam tri stvari: renderiranje na poslužitelju bez teške mehanizacije, kvalitetnu podršku za više jezika odmah, i brzinu bez dodatnog opterećenja. Astro nudi sve to, a kod ostaje čitljiv. Kada se mu vratim nakon dva mjeseca pauze, znam što se tamo događa. Kod solo projekata, to vrijedi više od bilo kojeg modernog dodatka koji nitko više ne podržava nakon godinu dana.
Jedna datoteka umjesto baze s vatrometom
SQLite. Jedna baza, jedna datoteka na disku. Uz to sloj upita koji komunicira s TypeScriptom, tako da ako promijenim strukturu podataka, pogreška mi iskoči u editoru, a ne u produkciji u ponoć.
Zašto baš to? cutty je "read-heavy". Netko klikne skraćeni link, mi napravimo čitanje i povećamo brojač. To je sve. SQLite bez problema podnosi takav promet, do stvarno velikih dnevnih brojki. A backup? Kopiraš datoteku. To je to. Bez ceremonija replikacije, bez skripti koje nitko ne sjeća kako rade.
Ovdje pripazi na jednu stvar, jer je to česta zamka: ljudi čuju "SQLite" i misle "igračka za projekt za ocjenu". Nije točno. Manje pokretnih dijelova znači manje stvari koje se mogu pokvariti. To nije štednja na kvaliteti, to je svjesna odluka.
Poslužitelj se nalazi u Europi i to nije slučajnost
Namjenski poslužnik u EU. Vlastiti TLS, reverse proxy s automatskim HTTPS-om, aplikacija u kontejnerima.
Ovo je temelj načina na koji cutty upravlja podacima. Točno znam gdje se oni fizički nalaze (kod klijenata iz EU i GDPR to nije zanimljivost, već uvjet), nisam vezan za jednog pružatelja usluga, ništa ne iscuri automatski preko oceana, a račun je predvidljiv umjesto da skače zajedno s prometom.
Da, praktične platforme sa Zapada omogućile bi brži početak. Klikneš, deploy, radi. Samo što za to plaćaš onim gdje završavaju podaci tvojih korisnika. Za mene je to bila loša trgovina.
Prijevode radi vlastiti model, kod sebe
cutty govori na 25 jezika. To prevodi lokalni, otvoreni AI model koji radi na mojoj infrastrukturi. Ne šaljem tekst iz sučelja nikome od vanjskih pružatelja usluga.
Prednosti su praktične. Jednostavno prijevođenje košta nula. Imam potpunu kontrolu nad kvalitetom i mogu ga osvježiti kada god želim. I, stroj uvijek treba ljudsko oko, tako da je svaki od tih 25 jezika prošao pregled. Ali činjenica da to radim kod sebe znači da privatnost nije stavka na cjeniku. To je svojstvo načina na koji je cjelina izgrađena.
Tailwind, kontejneri i nekoliko manjih odluka
Style? Utility-first, odnosno Tailwind. Bez CSS-in-JS, bez zasebnih datoteka sa stilovima, sve jednostavno u predlošcima. Ne gubim vrijeme na smišljanje naziva klasa, neiskorišteni stilovi ionako ne dolaze na finalnu stranicu, a dizajn je koherentan jer sam sustav to nameće. Za jednu osobu je bitna svaka minuta koja nije potrošena na sitnice.
Implementacija je Docker. Isto okruženje lokalno i u produkciji, kraj s "kod mene je radilo". I ako bi ikada bilo potrebno, premjestim cjelinu na drugi poslužnik za otprilike pola sata. Prenosivost je tiha forma neovisnosti.
Što sam iz toga naučio
Dosadan stack pobjeđuje. Astro, SQLite, Tailwind, kontejneri. Sve je zrelo, isprobano, opisano. Ništa ne pukne u trenutku kada vam to najmanje treba.
Hosting u EU je spreman za produkciju, doista. Priča da "moraš ići na veliku američku cloud platformu da bi bilo ozbiljno", samo je priča. Lokalni AI je također realan, ne treba predavati podatke vanjskom API-ju da bi se dobili pristojni prijevodi. I posljednja stvar: jedna osoba može objaviti nešto što izgleda kao posao cijelog tima. Samo treba imati na umu da je vrijeme skuplje od novca, te u tu svrhu birati svaki element.
Kada gradiš nešto svoje, postavi si jedno pitanje kod svake tehnologije: ću li za godinu dana znati to sam održavati? Ako ne, onda vjerojatno imaš odgovor.
Sve ovo funkcionira ovdje: cutty.dev. A ako želiš razgovarati o nekoj od ovih odluka, piši na [email protected], odgovaram istog dana.