Премини към съдържанието
cutty.dev
All posts

Технологичен стек на cutty.dev — съзнателни избори

Какво стои под капака на cutty.dev и защо. Без евангелизъм — философия: скучен, стабилен стек, хостинг в ЕС и поверителност, вградена в архитектурата, която един човек е способен да поддържа.

Повечето статии „моят tech stack“ са горделив списък с нововмества. Тази е за нещо друго — за философията, която стои зад изборите на cutty.dev: скучно и стабилно вместо модно, европейско вместо американско, частно по предназначение и достатъчно просто, така че един човек да може да го поддържа.

Фреймуърк: Astro (server-side rendering)

cutty.dev е приложение с Astro, рендерирано на сървъра. Всеки заявка минава през сървъра, генерира страницата динамично и отговаря с готов HTML.

Защо: исках сървърно рендериране без тежка машинария, добра поддръжка на много езици, вградена в самия фреймуърк, и скорост без допълнително натоварване. Astro предоставя всичко това, а кодът остава четим — което при проект, воден соло, струва повече от всеки моден добавка.

База данни: SQLite

Една база, един файл. Към това се добавя слой за заявки, пригоден за TypeScript, благодарение на който промяната в структурата на данните веднага показва грешки в кода, вместо в продукция.

Защо: cutty.dev е предимно "read-heavy" — всяко кликване върху линк е четене плюс увеличаване на брояча. SQLite се справя отлично с това, до много голям дневен трафик. Резервното копие е просто копиране на един файл — без церемонии за репликация, без сложни скриптове. Простотата тук не е спестяване на качество; това е съзнателно решение, че по-малко движещи се части означават по-малко неща, които могат да се повредят.

Хостинг: сървър в Европейския съюз

Dedicated сървър в ЕС, собствен TLS сертификат, reverse proxy с автоматичен HTTPS, приложение в контейнери.

Защо: това е основата на начина, по който cutty.dev третира данните. Пълен контрол върху тяхното местоположение (ключово за клиенти в ЕС и за GDPR), липса на зависимост от един доставчик, липса на автоматична репликация до САЩ, която се предлага от големите облачни платформи, и предвидим разход вместо сметка, зависима от трафика. Удобните западни платформи биха дали по-бърз старт — но на цена на това, къде физически попадат данните на вашите потребители.

Преводи: локален AI модел

cutty.dev говори на 25 езика, а преводите се извършват от локален, отворен AI модел, работещ върху нашата собствена инфраструктура.

Защо: никакъв текст от интерфейса не излиза навън — не го изпращаме към никакъв външен доставчик на AI. Това води до нулев разход за всяко отделно превод и пълен контрол върху качеството: можем да ги обновяваме когато пожелаем. Машинният превод винаги изисква човешка проверка — и всеки език е преминал такъв преглед — но правейки го сами, това означава, че поверителността не е опция в ценоразписа, а свойство на архитектурата.

CSS: utility-first (Tailwind)

Една система от стилове, без CSS-in-JS, без отделни файлове със стилове. Всичко директно в шаблоните.

Защо: скорост на итерация. Не губя време в измисляне на имена на класове, а неизползваните стилове така или иначе не попадат в финалната страница. Единен дизайн, наложен от самата система. За един човек е важна всяка минута, която не прекарвам в странични неща.

Внедряване: контейнери

Приложение в контейнери (Docker), внедрявано по повтарящ се, преносим начин.

Защо: една и съща среда локално и на продукция, липса на „при мен работи“, и възможност за прехвърляне на цялото на друг сървър за половин час, ако възникне необходимост. Преносимостта е форма на независимост.

Какво ме научи това

  • Скучният стек печели. Astro, SQLite, Tailwind, контейнери — всичко е зряло, добре документирано и стабилно. Нищо не се чупи в най-неочаквания момент.
  • Хостингът в ЕС е готов за продукция. Митът „трябва да преминеш към голям американски облак, за да бъдеш сериозен“ е точно това — мит.
  • Локалното AI е реалност. Не е необходимо да предавате своите данни на външно API, за да имате добри преводи.
  • Един човек може да пусне нещо, което изглежда като продукт на екип. Времето е ресурс, по-скъп от парите, така че всеки избор тук точно предпазва времето.

Вижте на живо. Въпроси относно техническия подход — hello@cutty.dev, отговарям в същия ден.