Pređi na sadržaj
cutty.dev
All posts

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.