Технологический стек cutty.dev — осознанный выбор
Что лежит в основе cutty.dev и почему. Без евангелизма — философия: скучный, стабильный стек, хостинг в ЕС и приватность, заложенная в архитектуру, которую один человек способен поддерживать.
Большинство статей «мой tech stack» — это гордый список новинок. Эта же статья о другом — о философии, которая стоит за выбором cutty.dev: скучном и стабильном вместо модного, европейском вместо американского, изначально приватном и достаточно простом, чтобы один человек мог его поддерживать.
Фреймворк: Astro (серверный рендеринг)
cutty.dev — это приложение на Astro с рендерингом на стороне сервера. Каждый запрос проходит через сервер, динамически формирует страницу и отвечает готовым HTML.
Почему: я хотел рендеринг на стороне сервера без тяжеловесных механизмов, хорошую встроенную поддержку многих языков в самом фреймворке и скорость без лишних накладных расходов. Astro дает все это, а код остается читаемым — что при соло-проекте стоит больше любого модного дополнения.
База данных: SQLite
Одна база, один файл. К этому добавляется слой запросов, дружелюбный к TypeScript, благодаря которому изменение структуры данных сразу показывает ошибки в коде, а не в продакшене.
Почему: cutty.dev в первую очередь является "read-heavy" — каждый клик по ссылке — это чтение плюс увеличение счетчика. SQLite справляется с этим превосходно, даже при очень большом ежедневном трафике. Резервное копирование — это просто копирование одного файла — без церемоний репликации, без сложных скриптов. Простота здесь — это не экономия на качестве; это осознанное решение, что меньше движущихся частей означает меньше вещей, которые могут сломаться.
Хостинг: сервер в Европейском Союзе
Выделенный сервер в ЕС, собственный сертификат TLS, обратный прокси с автоматическим HTTPS, приложение в контейнерах.
Почему: это фундамент того, как cutty.dev относится к данным. Полный контроль над их местоположением (что критически важно для клиентов в ЕС и соблюдения GDPR), отсутствие зависимости от одного поставщика, отсутствие автоматической репликации в США, которую предоставляют крупные облачные платформы, и предсказуемая стоимость вместо счета, зависящего от трафика. Удобные западные платформы обеспечили бы более быстрый старт — но ценой того, где физически оказываются данные ваших пользователей.
Переводы: локальная модель ИИ
cutty.dev говорит на 25 языках, а перевод выполняет локальная, открытая модель ИИ, запущенная на нашей собственной инфраструктуре.
Почему: никакой текст из интерфейса не выходит за пределы — мы не отправляем его ни одному внешнему поставщику ИИ. К этому добавляется нулевая стоимость за один перевод и полный контроль над качеством: мы можем обновлять их когда захотим. Машинный перевод всегда требует проверки человеком — и каждый язык прошел такую проверку — но выполнение этого на своих мощностях означает, что приватность — это не опция в прайс-листе, а свойство архитектуры.
CSS: utility-first (Tailwind)
Одна система стилей, без CSS-in-JS, без отдельных файлов стилей. Все прямо в шаблонах.
Почему: скорость итерации. Я не трачу время на придумывание названий классов, а неиспользуемые стили всё равно не попадают на финальную страницу. Единый дизайн, навязанный самой системой. Для одного человека важна каждая минута, которую я не трачу на второстепенные вещи.
Внедрение: контейнеры
Приложение в контейнерах (Docker), развертываемое воспроизводимым, переносимым способом.
Почему: та же среда локально и на продакшене, отсутствие принципа «у меня работало» и возможность перенести всё целиком на другой сервер за полчаса, если возникнет такая необходимость. Переносимость — это форма независимости.
Чему это меня научило
- Скучный стек побеждает. Astro, SQLite, Tailwind, контейнеры — всё зрелое, хорошо документированное, стабильное. Ничего не ломается в самый неподходящий момент.
- Хостинг в ЕС готов к продакшену. Миф о том, что «нужно идти в большое американское облако, чтобы всё было серьезно» — это именно это — миф.
- Локальный AI реален. Не нужно отдавать свои данные внешнему API, чтобы получать качественные переводы.
- Один человек может выпустить вещь, которая выглядит как продукт команды. Время — это ресурс более дорогой, чем деньги, поэтому каждый выбор здесь был направлен именно на экономию времени.
Смотреть вживую. Вопросы по технической части — hello@cutty.dev, отвечаю в тот же день.