Technologický stack cutty.dev — uvedomelé voľby
Čo je pod čelom cutty.dev a prečo. Bez evangelizmu — filozofia: nudný, stabilný stack, hosting v EÚ a súkromie zapísané v architektúre, ktorú je schopná udržiavať jedna osoba.
Väčšina príspevkov „mój tech stack“ je hrdý zoznam noviniek. Pozri, mám toto, mám tamto, a tu ešte úplne čerstvá knižnica z minulého týždňa. Tento bude iný.
Pravdou totiž je, že keď vedieš projekt sám, nehľadáš to najmodernejšie. Hľadáš niečo, čo ťa nevzbudí o tretej ráno. A práve o tom je celý tento technologický stack cutty.dev: nudné namiesto módneho, európske namiesto amerického, súkromné od základov a dostatočne jednoduché, aby to zvladol pár rúk.
Letím po rade, akoby som ti to vysvetľoval pri káve.
Astro renderované na serveri (a prečo nie niečo „fajnovejšie“)
cutty.dev je Astro s renderovaním na strane servera. Každý запрос ide cez server, zostavuje stránku a odosiela hotový HTML. Nuda? Presne o to ide.
Chcel som tri veci: rendering na serveri bez ťažkej machinerie, poriadnu podporu viacerých jazykov hneď na začiatku a rýchlosť bez režie. Astro poskytuje toto všetko a kód zostáva čitateľný. Keď sa k nemu vracam po dvoch mesiacoch prestávky, viem, čo sa tam deje. Pri sólovom projekte je to hodné viac než akýkoľvek módny doplnok, ktorý po roku už nikto nepodporuje.
Jeden súbor namiesto databázy s ohňostrojom
SQLite. Jedna databáza, jeden súbor na disku. K tomu vrstva dotazov komunikujúca s TypeScriptom, takže keď zmením štruktúru dát, chyba mi vyskočí v editore, a nie na produkcii o polnoci.
Prečo práve toto? cutty je "read-heavy". Niekto klikne na skrátený odkaz, my vykonáme čítanie a zvýšime počítadlo. To je všetko. SQLite zvládne takúto prevádzku v pokoji, až do skutočne veľkých denných čísel. A záloha? Skopírujete súbor. Hotovo. Bez rituálov replikácie, bez skriptov, o ktorých nikto nevie, ako fungujú.
Tu si pozor na jednu vec, pretože je to častá pasca: ľudia počujú „SQLite“ a myslia si „hračka na projekt na zaliečenie“. Nie je to pravda. Menej pohyblivých častí znamená menej vecí, ktoré sa môžu rozpadnúť. Toto nie je šetrenie na kvalite, je to uvedomelé rozhodnutie.
Server stojí v Európe a nie je to náhodou
Dedikovaný server v EÚ. Vlastný TLS, reverse proxy s automatickým HTTPS, aplikácia v kontajneroch.
Toto je základ toho, ako cutty nakladá s údajmi. Presne viem, kde fyzicky sa nachádzajú (u klientov z EÚ a GDPR to nie je ciekawosť, ale podmienka), nie som viazaný na jedného dodávateľa, nič neuniká automaticky za oceán a účet je predvídateľný namiesto toho, aby skákal spolu s pohybom.
Áno, pohodlné platformy zo Západu by umožnili rýchlejší štart. Klikneš, deploy, funguje. Lenže za to platíš tým, kde končia údaje tvojich používateľov. Pre mňa to bola zlá obchodná transakcia.
Preklady robí vlastný model, u seba
cutty hovorí 25 jazykami. Prekladá ho lokálny, otvorený model AI, ktorý beží na mojej infraštruktúre. Neodosielam text z rozhrania žiadnemu externému poskytovateľovi.
Výhody sú praktické. Jednorazový preklad stojí nulu. Mám plnú kontrolu nad kvalitou a môžem ho obnoviť, kedy chcem. A stroj vždy potrebuje ľudské oko, takže každý z týchto 25 jazykov prešiel revíziou. Ale fakt, že to robím u seba, znamená, že súkromie nie je položka v cenníku. Je to vlastnosť toho, ako je celok vybudovaný.
Tailwind, kontajnéry a niekoľko menších rozhodnutí
Štýl? Utility-first, teda Tailwind. Bez CSS-in-JS, bez samostatných súborov so štýlmi, všetko priamo v šablónach. Nestracám čas vymýšľaním názvov tried, nevyužité štýly tak aj tak nekončia na finálnej stránke, a dizajn dáva zmysel, pretože samotný systém to vynucuje. Pre jednu osobu sa počíta každá minúta nepreplátená prácou na drobnosti.
Nasadenie je Docker. Rovnaké prostredie lokálne aj na produkcii, koniec s „u mňa fungovalo“. A keby to niekedy bolo potrebné, presuniem celok na iný server za približne pol hodiny. Prenositeľnosť je tichá forma nezávislosti.
Čo som si z toho zobral
Nudný stack vyhráva. Astro, SQLite, Tailwind, kontejnery. Všetko je zrelé, overené, opísané. Nič nepraskne v momente, keď to najmenej potrebuješ.
Hosting v EÚ je pripravený na produkciu, naozaj. Rozprávka, že „musíš ísť do veľkého amerického cloudu, aby to bolo vážne“, je rozprávka. Lokálne AI je tiež reálne, nemusíte odovzdávať údaje externému API, aby ste mali decentné preklady. A posledná vec: jedna osoba môže vypustiť niečo, čo vyzerá ako práca celého tímu. Treba si len pamätať, že čas je drahší ako peniaze, a pod týmto zৰadením si vyberať každý kúsok.
Ak stavate niečo vlastné, položte si pri každej technológii jednu otázku: budem to vedieť o rok udržať sám? Ak nie, tak možno máte odpoveď.
Všetko to funguje tu: cutty.dev. A ak sa chceš porozprávať o niektorom z týchto rozhodnutí, napíš na [email protected], odpovedám v ten istý deň.