Tehnološki stek cutty.dev — svesni izbori
Šta 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 da održava.
Većina članaka "moj tech stack" su ponosne liste noviteta. Ovaj je o nečem drugom — o filozofiji koja stoji iza izbora cutty.dev: dosadno i stabilno umesto moderno, evropsko umesto američko, privatno po prirodi, i dovoljno jednostavno da jedna osoba može da ga održava.
Framework: Astro (server-side rendering)
cutty.dev je Astro aplikacija koja se renderuje na strani servera. Svaki zahtev ide preko servera, dinamički sastavlja stranicu i odgovara gotovim HTML-om.
Zašto: želeo sam server-side rendering bez teške mašinerije, dobru podršku za više jezika ugrađenu u sam framework, i brzinu bez dodatnog opterećenja. Astro nudi sve to, a kod ostaje čitljiv — što je pri projektu koji vodi jedna osoba vrednije od bilo kog modernog dodatka.
Baza podataka: SQLite
Jedna baza, jedan fajl. Uz to, sloj upita prilagođen TypeScript-u, zahvaljujući čemu promena strukture podataka odmah prikazuje greške u kodu umesto u produkciji.
Zašto: cutty.dev je prvenstveno "read-heavy" — svaki klik na link je čitanje plus povećanje brojača. SQLite to radi izvrsno, do veoma velikog dnevnog saobraćaja. Rezervna kopija je jednostavno kopiranje jednog fajla — bez ceremonije replikacije, bez komplikovanih skripti. Jednostavnost ovde nije ušteda na kvalitetu; to je svesna odluka da manje pokretnih delova znači manje stvari koje mogu da se pokvare.
Hosting: server u Evropskoj uniji
Namenski server u EU, sopstveni TLS sertifikat, reverse proxy sa automatskim HTTPS-om, aplikacija u kontejnerima.
Zašto: to je temelj načina na koji cutty.dev tretira podatke. Potpuna kontrola nad njihovom lokacijom (ključno za klijente u EU i za GDPR), neovisnost o jednom dobavljaču, odsustvo automatske replikacije u SAD koju nude velike cloud platforme, i predvidljivi troškovi umesto računa koji zavise od saobraćaja. Praktične zapadne platforme bi omogućile brži početak — ali po cenu toga gde podaci vaših korisnika fizički završavaju.
Prevođenje: lokalni AI model
cutty.dev govori na 25 jezika, a prevode vrši lokalni, otvoreni AI model pokrenut na našoj sopstvenoj infrastrukturi.
Zašto: nijedan tekst iz interfejsa ne izlazi napolje — ne šaljemo ga nijednom spoljnom AI provajderu. To rezultira nultim troškom po pojedinačnom prevodu i potpunom kontrolom kvaliteta: možemo ih osvežavati kada god želimo. Mašinski prevod uvek zahteva ljudku proveru — i svaki jezik je prošao takvu reviziju — ali to što to radimo sami znači da privatnost nije opcija u cenovniku, već karakteristika arhitekture.
CSS: utility-first (Tailwind)
Jedan sistem stilova, bez CSS-in-JS, bez posebnih datoteka sa stilovima. Sve direktno u šablonima.
Zašto: brzina iteracije. Ne gubim vreme na smišljanje naziva klasa, a neiskorišćeni stilovi ionako ne dospevaju na finalnu stranicu. Dosledan dizajn nametnut samim sistemom. Za jednu osobu je bitan svaki minut koji ne provodim na sporednim stvarima.
Implementacija: kontejneri
Aplikacija u kontejnerima (Docker), implementirana na ponovljiv, prenosiv način.
Zašto: isto okruženje lokalno i na produkciji, nema "kod mene je radilo", i mogućnost prenošenja celine na drugi server za pola sata, ako do toga dođe potreba. Prenosivost je oblik nezavisnosti.
Šta me je ovo naučilo
- Dosadan stack pobeđuje. Astro, SQLite, Tailwind, kontejneri — sve je zrelo, dobro dokumentovano, stabilno. Ništa ne puca u najmanje očekivanom trenutku.
- Hosting u EU je spreman za produkciju. Mit "moraš ići na veliku američku cloud platformu da bi bilo ozbiljno" je upravo to — mit.
- Lokalni AI je realan. Ne treba predavati svoje podatke eksternom API-ju da biste imali dobre prevode.
- Jedna osoba može da izbaci nešto što izgleda kao proizvod tima. Vreme je resurs skuplji od novca, pa je svaki izbor ovde upravo štedeo vreme.
Pogledaj uživo. Pitanja o tehničkom pristupu — hello@cutty.dev, odgovaram istog dana.