Skip to content
12КейсSW · 12 из 10

Бренд-сайт, который четыре года поддерживается без переписывания, для организации гражданского общества без веб-команды.

Европейская гуманитарная организация гражданского общества выросла за одну ночь в начале 2022 года. Мы построили их публичный сайт за две недели, а затем четыре года делали с ним очень мало. Эта сдержанность и была работой.

КлиентКонфиденциально
Год2022 — 2026
Длительность5 yrs
СтекTypeScript · Next.js · React · Vercel
Hero image for humanitarian-aid-brand-siteFIG 01 · Главное изображение

Сайт для организации, чья работа — не сайт.

Клиент — небольшая европейская гуманитарная организация гражданского общества, выросшая из диаспоральной сети в действующую гуманитарную операцию после февраля 2022 года. К моменту, когда мы начали, они координировали доставку грузов, размещение перемещённых людей и снаряжение для тех, кто работает на передовой. Сайт был последним, о чём кто-либо думал, — и это был абсолютно верный приоритет.

Ни веб-команды. Ни продакт-менеджера. Никого, чьей работой было бы писать тикеты, согласовывать тексты или вести CMS. Бриф был не продуктовым. Это был инфраструктурный бриф: дайте нам публичное лицо, которое отвечает на вопрос «кто вы и как я могу помочь?», а затем избавьте нас от необходимости снова об этом думать.

Это ограничение определило каждое последующее решение.

Две недели. Двуязычный. Без CMS.

Мы выпустили первую версию сайта примерно за две недели, приурочив к операционному рывку в середине 2022 года. Next.js на Vercel, Tailwind CSS, React. Двуязычный с первого дня — английский и родной язык организации — на нативной i18n-маршрутизации Next.js, без сторонних библиотек.

Решение по контенту было осознанным: без CMS. Ни Sanity, ни Contentful, ни Strapi. Весь контент — описания проектов, списки партнёров, направления работы, уровни пожертвований — живёт в типизированных объектах TypeScript в /data/<locale>/, под контролем версий рядом с кодом. Обновление текста — это git-коммит. Нет ни входа в систему, ни интерфейса редактора, ни пайплайна развёртывания, которому команду пришлось бы обучать.

Мы также не стали добавлять: библиотеки анимаций, API-роуты, базу данных в рантайме, слой rate-limiting, собственный механизм аутентификации. Ничего из этого не требовалось. Поток пожертвований уходит за пределы сайта на специализированные донорские рельсы. Задача сайта — информировать и направлять, а не проводить транзакции.

Статическая генерация повсюду. Сборка выдаёт HTML. Vercel его отдаёт. Единственное, что может пойти не так, — это падение сборки, а сборки не поднимают никого по тревоге в 3 часа ночи.

F · 01Двуязычный статический сайт
Английский и родной язык организации с первого дня. Нативная i18n-маршрутизация Next.js, полный паритет контента, без сторонней i18n-библиотеки.
F · 02Контент как код
Весь текст живёт в типизированных объектах TypeScript в /data/<locale>/, под контролем версий. Ни входа в CMS, ни интерфейса редактора, ни пайплайна развёртывания, который нужно осваивать.
F · 03Статическая генерация повсюду
Каждая страница предварительно отрендерена на этапе сборки. Ни API-роутов, ни базы данных в рантайме, ни дежурств по инфраструктуре.
F · 04Пройдены два мажорных релиза Next.js
Кодовая база прошла путь от Next.js 12 к 14 и 16 без переписывания. Выбор стека, который хорошо стареет.
F · 05Тёмная тема через CSS-класс
Zustand хранит состояние переключателя; localStorage его сохраняет. Никакого мерцания при перезагрузке. Никакой сторонней библиотеки тем.
F · 06Ноль переписываний за четыре года
Архитектура, нарисованная в первом спринте, сегодня в продакшене.

Двенадцать месяцев тишины, затем один коммит.

После первого спринта — тишина. С августа 2022 по май 2023 года кодовая база не получила ни одного изменения. Сайт держался. Организация доставляла помощь. Это было верное положение дел.

Июнь 2023 года: один коммит. Аналитика. Июль 2024 года: девять коммитов. Небольшой спринт поддержки — обновление Next.js, замена библиотеки карусели, гигиена зависимостей. Ничего структурного.

Март–апрель 2026 года: текущее обновление. Освежение дизайна, полная проработка мобильной версии, миграция на Tailwind v4, улучшения SEO. Кодовая база пересекла два мажорных релиза Next.js — с 12 на 14 и на 16 — без переписывания.

240 коммитов за четыре года. Картина всплесков честна: большая часть работы пришлась на начало, а затем на конец. Долгая середина была тем временем, когда сайт просто работал.

Правильный объём инженерии для организации гражданского общества — это тот, что исчезает.

Сайт не был проблемой, о которой организации приходилось думать. Это и есть результат. Не коэффициент конверсии, не показатель отказов — а отсутствие сайта как источника трения.

Та же кодовая база, что вышла в 2022 году, сегодня в продакшене. Та же команда, что её построила, её и поддерживает. Никакой травмы миграции, никакого разговора «нам нужно переписать это на современном стеке», потому что стек был выбран достаточно тщательно, чтобы оставаться современным без постоянного вмешательства. Bun заменил Node в роли рантайма. Biome заменил ESLint и Prettier. Tailwind v4 заменил v3. Всё это было аддитивным — никакого архитектурного долга, который пришлось бы распутывать.

Четыре года. Два мажорных релиза Next.js пройдены (12 → 14 → 16). Ноль переписываний. 240 коммитов. Одна команда.

Цитата / 04
Сайт не был проблемой, о которой нам приходилось думать.
ДиректорГуманитарная организация гражданского обществаЕвропа
Outcome
Initial sprint
~2 weeks
Years in production
4
Next.js majors crossed
2 (12 → 14 → 16)
Commits over four years
240
NEXTКейс 13SW · 13 из 10
E-commerce2026

Коммерция «на заказ» для рынка, которому нужен собственный стек.