Přejít na obsah
cutty.dev
All posts

Technologický stack cutty.dev – uvědomělá rozhodnutí

Co je pod povrchem cutty.dev a proč. Bez evangelizace - filozofie: nudný, stabilní stack, hosting v EU a soukromí zakódované do architektury, kterou zvládne udržet jedna osoba.

Většina článků „můj tech stack“ je hrdým výčtem novinek. Tento pojednává o něčem jiném — o filozofii, která stojí za výběry cutty.dev: nudný a stabilní místo módního, evropský místo amerického, soukromý od základu a natolik jednoduchý, aby to zvládl udržet jeden člověk.

Framework: Astro (rendering na straně serveru)

cutty.dev je aplikace Astro s renderováním na straně serveru. Každý požadavek prochází serverem, dynamicky sestavuje stránku a vrací hotové HTML.

Proč: chtěl jsem server-side rendering bez těžkopádné infrastruktury, dobrou podporu mnoha jazyků přímo ve frameworku a rychlost bez overheadu. Astro to vše nabízí a kód zůstává přehledný – což u projektu vedeného solo stojí za víc než jakýkoli módní doplněk.

Databáze: SQLite

Jedna databáze, jeden soubor. Navíc vrstva dotazů přátelská k TypeScriptu, díky které změna struktury dat okamžitě odhalí chyby v kódu místo toho, aby se objevily až ve výrobě.

Proč: cutty.dev je především „read-heavy“ – každé kliknutí na odkaz znamená čtení a zvýšení počítadla. SQLite to zvládá skvěle i při velmi vysokém denním provozu. Záloha je prostě zkopírováním jednoho souboru – bez ceremonií replikace, bez složitých skriptů. Zde jednoduchost není úsporou na kvalitě; je to vědomé rozhodnutí, že méně pohyblivých součástí znamená méně věcí, které se mohou rozbít.

Hosting: server v Evropské unii

Vlastní server v EU, vlastní certifikát TLS, reverzní proxy s automatickým HTTPS, aplikace v kontejnerech.

Proč: to je základ toho, jak cutty.dev přistupuje k datům. Plná kontrola nad jejich umístěním (klíčové pro zákazníky v EU a pro GDPR), žádná závislost na jednom dodavateli, žádné automatické replikování do USA, které poskytují velké cloudové platformy, a předvídatelné náklady místo účtu závislého na objemu přenosu. Pohodlné západní platformy by umožnily rychlejší start — ale za cenu toho, kde fyzicky končí data vašich uživatelů.

Překlady: lokální model AI

cutty.dev mluví 25 jazyky a překlady provádí lokální, otevřený AI model spuštěný na naší vlastní infrastruktuře.

Proč: žádný text z rozhraní neopouští systém – neposíláme jej žádnému externímu poskytovateli AI. S tím je spojen nulový náklad za jednotlivé překlad a plná kontrola nad kvalitou: můžeme jej obnovovat kdykoliv chceme. Mechanický překlad vždy vyžaduje lidskou kontrolu – a každý jazyk takovou revizi prošel – ale provádění tohoto procesu uvnitř znamená, že soukromí není volbou v ceníku, ale vlastností architektury.

CSS: utility-first (Tailwind)

Jeden systém stylů, žádné CSS-in-JS, žádné samostatné soubory se styly. Vše přímo v šablonách.

Proč: rychlost iterace. Nemarním čas vymýšlením názvů tříd a nevyužité styly se stejně nedostanou do finální stránky. Konzistentní design vynucený samotným systémem. Pro jednu osobu se počítá každá minuta, kterou nevěnuji vedlejším věcem.

Nasazení: kontejnery

Aplikace v kontejnerech (Docker), nasazovaná opakovaně a přenositelným způsobem.

Proč: stejné prostředí lokálně i ve výrobě, žádné „u mě to fungovalo“ a možnost přenosu celého řešení na jiný server během půl hodiny, pokud by k tomu došlo potřeba. Přenositelnost je formou nezávislosti.

Co mě to naučilo

  • Nudný stack vyhrává. Astro, SQLite, Tailwind, kontejnery — vše zralé, dobře zdokumentované, stabilní. Nic se nerozbije v nejméně očekávaný okamžik.
  • Hosting v EU je připraven k produkci. Mýtus „musíte jít na velkou americkou cloudovou službu, aby to bylo vážné“ je právě tím — mýtem.
  • Lokální AI je reálné. Nemusíte předávat svá data externímu API, abyste měli dobré překlady.
  • Jedna osoba může vypustit věc, která vypadá jako produkt týmu. Čas je dražší zdroj než peníze, takže každé rozhodnutí zde chránilo právě čas.

Podívejte se živě. Otázky ohledně technického přístupu — hello@cutty.dev, odpovídám téhož dne.