ДНАОП — библиотека нормативов по охране труда
Перезапустили открытую библиотеку из 45 294 нормативов Украины по охране труда: дизайн «сначала телефон», поиск, который понимает, как ищут нормы, и все старые адреса на месте.
- Год
- 2026
- Работа
- Перезапуск: дизайн и разработка
- Тип
- Библиотека нормативов
- Язык
- Украинский
Сайт в цифрах
Библиотека, на которую полагаются, — пересобрана с нуля
ДНАОП — открытая библиотека нормативов Украины по охране труда: акты НПАОП и ДНАОП, строительные нормы, стандарты, санитарные и пожарные правила, готовые инструкции. Инженеры и руководители приходят сюда за точной буквой нормы — и открывают её с телефона не реже, чем с рабочего компьютера.
Старый сайт работал, но на устаревшем 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 автотестов.
Большой сайт на устаревшем движке?
Перенесём его на современную платформу и сохраним адреса и контент.
Связаться с нами
Есть идея проекта?
Расскажите нам о ней.
Отвечаем в течение одного рабочего дня