Перейти к содержимому
Портфолио
Справочная библиотека · Охрана труда

ДНАОП — библиотека нормативов по охране труда

Перезапустили открытую библиотеку из 45 294 нормативов Украины по охране труда: дизайн «сначала телефон», поиск, который понимает, как ищут нормы, и все старые адреса на месте.

Год
2026
Работа
Перезапуск: дизайн и разработка
Тип
Библиотека нормативов
Язык
Украинский
ДНАОП — библиотека нормативов по охране труда

Сайт в цифрах

45 294
акта в открытом доступе, в 8 разделах
167 714
старых адресов сохранены один в один
47 837
настоящих таблиц восстановлено в текстах
49 мс
медианный ответ сервера вместо 225 мс
О проекте

Библиотека, на которую полагаются, — пересобрана с нуля

ДНАОП — открытая библиотека нормативов Украины по охране труда: акты НПАОП и ДНАОП, строительные нормы, стандарты, санитарные и пожарные правила, готовые инструкции. Инженеры и руководители приходят сюда за точной буквой нормы — и открывают её с телефона не реже, чем с рабочего компьютера.

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

Старый сайт и новый — потяните ползунок

Стало
Было
Было Стало
Страница акта, которую удобно читать
Чтение

Страница акта, которую удобно читать

Нормативы занимают десятки страниц, самый длинный — 247. Теперь каждый акт открывается с липкой шкалой страниц, оглавлением и удобной колонкой текста, а у актов длиннее 60 страниц есть ряд быстрого перехода. Скачать и распечатать — в одно касание, бесплатно и без регистрации.

  • Шкала страниц в трёх режимах — в зависимости от объёма акта
  • Оглавление и блок «Смотрите также» с актами той же серии
  • Работает даже с выключенным JavaScript
Поиск, который понимает, как ищут нормы
Поиск

Поиск, который понимает, как ищут нормы

Нормы ищут по коду вроде «НПАОП 40.1», по фрагменту названия или с опечаткой в другой раскладке. Новый полнотекстовый поиск справляется со всем этим по каждой странице каждого акта и отвечает за десятки миллисекунд. На контрольном наборе запросов нужный акт оказывается первым в 91 % случаев и всегда — в первой тройке.

  • Формы слов на украинском и русском, точное совпадение по коду
  • Исправление опечаток и раскладки, подсказки при наборе
  • Фильтры по разделу и языку, подсветка совпадений
За кадром

Сорок пять тысяч документов — после ремонта

Таблицы восстановлены

В 2 571 акте таблицы из чёрточек превратились в 47 837 настоящих таблиц.

Тексты извлечены заново

1 578 актов заново извлечены из исходных Word-архивов — со строгими проверками.

Кодировки и названия

Исправлена кодировка в 191 акте и потерянная первая буква в 886 названиях.

Лёгкие картинки

32 828 изображений переведены в WebP — объём сократился вдвое, с 1 060 до 521 МБ.

Все адреса на месте

167 714 адресов перенесены один в один и сверены с неделей реальных логов — ни одной ошибки.

Поисковики в курсе

Разметка Legislation, canonical, ежедневная карта сайта и уведомления IndexNow при каждом изменении.

Под капотом

4,7 ГБ текстов — за миллисекунды

Библиотека работает на Laravel 13 с отдельным полнотекстовым поисковым движком и кэшированием на каждом уровне: готовые страницы актов отдаются через CDN, и страница, которая открывалась за 0,20 с, теперь приходит за 0,06 с. 4,7 ГБ исходных текстов не стали загонять в базу — они очищаются на лету и кэшируются, а исходники остаются нетронутыми.

Редакторы работают в отдельной админке на React и Fluent UI: документы и их дубли, статьи с визуальным редактором, режимом кода и историей версий, страницы, меню, медиатека, редиректы и заявки — с пятью ролями и журналом действий. Публичные страницы несут около 3 КБ нашего JavaScript, а всё это проверяют почти 600 автотестов.

Большой сайт на устаревшем движке?

Перенесём его на современную платформу и сохраним адреса и контент.

Связаться с нами

Есть идея проекта? Расскажите нам о ней.

Рассказать о проекте

Отвечаем в течение одного рабочего дня

Обсудить проект