Skip to content
Portfolio
Reference library · Occupational safety

DNAOP — occupational-safety law library

We relaunched an open library of 45,294 Ukrainian occupational-safety regulations: a mobile-first design, search that understands how people look for norms, and every old address kept.

Year
2026
Scope
Relaunch: design & build
Type
Regulations library
Language
Ukrainian
DNAOP — occupational-safety law library

The site in numbers

45,294
acts in open access, in 8 sections
167,714
old URLs kept one-to-one
47,837
real tables restored in the texts
49 ms
median server response, down from 225 ms
About

A library people rely on, rebuilt from the ground up

DNAOP is an open library of Ukrainian occupational-safety regulations: NPAOP and DNAOP acts, building codes, standards, sanitary and fire-safety rules and ready-made safety instructions. Engineers and managers come for the exact wording of a norm — and need it on a phone as often as at a desk.

The old site still worked, but on an aging XSLT engine: no proper menu or mobile version, a mixed Russian and Ukrainian interface, tables drawn with dashes and thousands of pages with broken encoding. We rebuilt the library from scratch on a modern stack — and moved it without losing a single address.

Old site and new — drag the slider

After
Before
Before After
An act page you can actually read
Reading

An act page you can actually read

Regulations run to dozens of pages, the longest to 247. Every act now opens with a sticky page scale, a table of contents and a comfortable reading column; acts longer than 60 pages get a quick-jump row. Download and print are a tap away — free and without registration.

  • A page scale in three modes, depending on the length of the act
  • A table of contents and “See also” acts from the same series
  • Works even with JavaScript turned off
Search that understands how people look for norms
Search

Search that understands how people look for norms

Readers search by a code like “NPAOP 40.1”, by a fragment of a title, or with a typo typed in the wrong keyboard layout. The new full-text search handles all of it across every page of every act and answers in tens of milliseconds. On a control set of queries, the right act comes first in 91% of cases and is always in the top three.

  • Word forms in Ukrainian and Russian, exact match by code
  • Typo and keyboard-layout correction, suggestions as you type
  • Filters by section and language, highlighted matches
Behind the scenes

Forty-five thousand documents, repaired

Tables restored

2,571 acts with tables drawn in dashes now hold 47,837 real tables.

Texts re-extracted

1,578 acts were extracted again from the original Word archives, with strict checks.

Encodings and titles

191 acts with broken encoding and 886 titles missing their first letter were fixed.

Lighter images

32,828 images converted to WebP — the volume halved, from 1,060 to 521 MB.

Every address kept

167,714 URLs moved one-to-one and were checked against a week of real request logs — zero errors.

Search engines in the loop

Legislation markup, canonical tags, a sitemap rebuilt daily and IndexNow notifications on every change.

Under the hood

4.7 GB of texts, served in milliseconds

The library runs on Laravel 13 with a dedicated full-text search engine and caching at every level: rendered acts are served through a CDN, so a page that took 0.20 s now arrives in 0.06 s. The 4.7 GB of original texts were not forced into a database — they are cleaned on the fly and cached, while the sources stay untouched.

Editors work in a separate admin built with React and Fluent UI: documents and duplicates, articles with a visual and code editor and version history, pages, menus, media, redirects and enquiries — with five roles and an activity log. The public pages ship about 3 KB of our own JavaScript, and nearly 600 automated tests guard the whole thing.

A big site on an aging engine?

We’ll move it to a modern platform and keep its addresses and content intact.

Get in touch

Have a project in mind? Tell us about it.

Tell us about your project

We reply within one business day

Start a project