Skip to content
Проект клиентаGovTech · Сайт мэрии · Админ-панель

Primăria Vatra

Госсайт уровня банка: 417 страниц без единого нарушения доступности и обращения граждан онлайн.

Клиент
primariavatra.md
Город
Ватра, мун. Кишинёв
Год
2026
Статус
Работает
Primăria Vatra — GovTech · Сайт мэрии · Админ-панель
277операций API
417страниц без нарушений доступности (axe)
312редиректа со старого WordPress
5ролей + обязательная 2FA
// Задача

Задача

Примэрия работала на WordPress с плагинами. Новый сайт обязан соответствовать закону: доступность для людей с ограничениями (HG 728/2023), публикация решений и бюджета, сроки ответа на обращения по Административному кодексу. Нужно было перенести 166 документов и сотни старых адресов и дать сотрудникам безопасную админку.

// Решение

Решение

Мы спроектировали систему из четырёх независимых частей (сайт, API, админка, инфраструктура) с единым OpenAPI-контрактом. Сверстали готовый макет 1:1 и добавили всё, чего в нём не было: мобильную версию, состояния, правовые страницы, поиск. Админку с ролями, 2FA, ревизиями и автопостингом в Facebook построили с нуля.

Наша роль: Дизайн сайта — не наш: макет Figma получен готовым, мы сверстали его 1:1. Наша работа — архитектура, разработка сайта, API, админ-панели и инфраструктуры. Админку оформили сами.

// Экраны проекта

Экраны проекта

Мобильная версия главной
Новости на мобильном
Главная: видео о городе и сайдбар услуг
Реестр документов: поиск и фильтры
Виджет спецвозможностей по HG 728/2023
Раздел услуг
Лента новостей
// Что мы сделали

Что мы сделали

Публичный сайт

  • Новости, объявления, события, услуги с бланками, городской совет, «Прозрачность»
  • Реестр документов с поиском, фильтрами по категории и году
  • Обращения граждан с регистрационным номером и сроком ответа по закону
  • Виджет спецвозможностей по HG 728/2023: контраст, шрифт, курсор, навигация
  • Три языка с локализованными адресами, RSS, поиск, карта сайта
  • Защита форм ALTCHA без сторонних сервисов и cookie

Админ-панель

  • Вход: пароль, обязательная 2FA и резервные коды
  • 5 ролей и матрица прав «тип контента × действие»
  • Редактор с вкладками RO/RU/EN и отметками «нет перевода»
  • История версий с построчным сравнением и откатом
  • Отложенная публикация, предпросмотр, черновики переживают перезагрузку
  • Раздел обращений: исполнители, сроки, просрочка, продление по закону
  • Автопостинг новостей и событий в Facebook с фото и видео

API

  • NestJS на Fastify: 277 операций, 59 таблиц PostgreSQL
  • Жизненный цикл записи: черновик → проверка → публикация → архив
  • Полнотекстовый поиск на трёх языках с учётом опечаток
  • Медиа: антивирус ClamAV, очистка EXIF, пересборка PDF, видео до 4 ГБ
  • Слаги RU по ГОСТ 7.79, автоматические 301 при смене адреса

Безопасность и инфраструктура

  • Уровень OWASP ASVS L2: Argon2id, проверка паролей по утечкам, CSRF, строгий CSP
  • Журнал аудита только на добавление — правка запрещена на уровне БД
  • Docker, мониторинг Prometheus/Grafana/Loki, алерты в Telegram
  • Бэкапы restic с ежемесячной проверкой восстановления
  • ≈400 тестов API, 228 тестов сайта, e2e в двух вьюпортах
// Результат

Результат

01

У примэрии собственный стек без зависимости от WordPress: контент ведут сотрудники через админку с ролями и 2FA.

02

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

03

Сайт проходит автоматический аудит доступности axe на всех 417 страницах без нарушений.

04

312 старых адресов переведены 301-редиректами, документы перенесены без потерь.

05

Публикации автоматически дублируются в Facebook примэрии.

// Стек

Стек

Nuxt 4Vue 3Tailwind 4NestJS 11 · FastifyPostgreSQL 17Redis · BullMQPrimeVue 4Tiptap 3MinIO · ClamAVDocker · Caddy
// Интеграции

Интеграции

Facebook Graph APIOpen-MeteoClamAVALTCHAHave I Been PwnedCloudflarePrometheus · Grafana
// Услуги в проекте

Услуги в проекте

Следующий кейс →Valeriia FlowersПереезд с WordPress без потери трафика — и клики из Google выросли в 3,5 раза.
Valeriia Flowers

Хотите так же?

Расскажите о задаче — за 24 часа вернёмся с решением, сроками и планом запуска.