Розробка порталу для державної організації
Державні органи часто стикаються з проблемою: сайт не проходить перевірку доступності, дані громадян зберігаються з порушеннями, а пошук за документами не знаходить потрібних постанов. Ми спеціалізуємося на таких проєктах і знаємо, як уникнути цих помилок. Наш досвід — понад десять років і десятки реалізованих порталів для державних організацій України. Розбираємо нормативну базу, вимоги WCAG, інтеграцію з державною системою ідентифікації та захист персональних даних.
Законодавча база
В Україні вимоги визначають Закони «Про інформацію», «Про захист персональних даних», постанови Кабінету Міністрів про веб-сайти органів влади. Перелік обов'язкових розділів для офіційних сайтів: відомості про орган, нормативні документи, державні послуги, результати перевірок, антикорупційні матеріали. Враховуємо всі норми на етапі проєктування, щоб уникнути переробок після аудиту.
Чому WCAG 2.1 AA обов'язковий для державних сайтів?
Це не рекомендація, а закон. В Україні вимоги доступності відповідають міжнародному стандарту WCAG 2.1. Перевірка проводиться автоматично (axe-core, Lighthouse) та вручну. Типові проблеми — відсутність міток у форм та невірна структура таблиць. Приклад правильної форми пошуку:
<!-- Неправильно: форма пошуку без label --> <input type="search" placeholder="Пошук по сайту"> <!-- Правильно --> <label for="site-search" class="sr-only">Пошук по сайту</label> <input id="site-search" type="search" placeholder="Пошук по сайту" role="searchbox" aria-label="Пошук по сайту"> <!-- Правильна таблиця з заголовками --> <table> <caption>Контакти керівництва</caption> <thead> <tr> <th scope="col">ПІБ</th> <th scope="col">Посада</th> <th scope="col">Телефон</th> </tr> </thead> <tbody> <tr> <td>Іванов Іван Іванович</td> <td>Начальник відділу</td> <td><a href="tel:+375170000000">+375 17 000-00-00</a></td> </tr> </tbody> </table> Всі PDF-документи мають бути tagged PDF з логічною структурою та alt-текстами. Перевіряємо кожен елемент на відповідність WCAG. Отримайте консультацію щодо вашого проєкту, щоб уникнути цих помилок.
Як інтеграція з державною системою ідентифікації покращує користувацький досвід?
Для особистих кабінетів громадян обов'язкова інтеграція з державною системою ідентифікації (Gov.ua, ЄСІА) через SAML 2.0 або OpenID Connect. Приклад підключення через OAuth 2.0 (Laravel):
// Laravel: редирект на авторизацію через держсистему public function redirectToGov() { $params = [ 'client_id' => config('gov.client_id'), 'response_type' => 'code', 'scope' => 'openid fullname email mobile', 'redirect_uri' => route('gov.callback'), 'state' => csrf_token(), 'timestamp' => now()->format('Y.m.d H:i:s O'), 'access_type' => 'online', ]; // Підпис запиту через PKCS#7 (обов'язково для системи) $params['client_secret'] = $this->signRequest($params); return redirect(config('gov.auth_url') . '?' . http_build_query($params)); } Запити підписуються кваліфікованим сертифікатом — його потрібно отримати в акредитованому центрі сертифікації. Інтеграція підвищує безпеку входу та дозволяє вивантажувати дані з державних систем.
Захист персональних даних та вибір хостингу
Закон «Про захист персональних даних» вимагає зберігати персональні дані громадян на серверах в Україні. Обираємо хостинг лише з локальних дата-центрів. Обов'язкові заголовки безпеки:
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always; add_header X-Content-Type-Options "nosniff" always; add_header X-Frame-Options "SAMEORIGIN" always; add_header Content-Security-Policy "default-src 'self'; script-src 'self' 'nonce-{NONCE}'; style-src 'self' 'unsafe-inline'" always; add_header Permissions-Policy "geolocation=(), microphone=(), camera=()" always; Крім того, налаштовуємо двофакторну автентифікацію для співробітників та шифруємо дані в БД. Наші інженери мають сертифікати з інформаційної безпеки. Гарантуємо відповідність вимогам регуляторів.
Пошук за документами: Elasticsearch vs PostgreSQL
Державні органи накопичують тисячі документів. Простий SQL-пошук погано справляється з українською морфологією. Ми використовуємо два підходи. Для архівів від 100k документів Elasticsearch швидший за PostgreSQL у 4 рази за швидкістю пошуку.
| Характеристика | PostgreSQL FTS | Elasticsearch |
|---|---|---|
| Складність налаштування | Низька | Середня |
| Морфологія української | Вбудована | Через плагін analysis-morphology |
| Швидкість на 100k документів | ~200 мс | ~50 мс |
| Ресурси | Вписується в сервер БД | Потребує окремого сервера |
Приклад повнотекстового індексу в PostgreSQL:
CREATE INDEX docs_fts_idx ON documents USING GIN (to_tsvector('ukrainian', title || ' ' || content)); SELECT id, title, ts_rank(to_tsvector('ukrainian', title || ' ' || content), query) AS rank FROM documents, to_tsquery('ukrainian', 'приватизація & житло') query WHERE to_tsvector('ukrainian', title || ' ' || content) @@ query ORDER BY rank DESC LIMIT 20; Для архівів від 100k документів ставимо Elasticsearch з налаштуванням української морфології. Використовуємо плагін analysis-morphology та задаємо аналізатор у налаштуваннях індексу.
Версіонування та архів нормативних документів
Документи мають зберігати історію редакцій. Користувач бачить поточну версію та може відкрити попередні. Реалізуємо через таблицю ревізій:
CREATE TABLE document_revisions ( id BIGSERIAL PRIMARY KEY, document_id BIGINT REFERENCES documents(id), content TEXT NOT NULL, revision_note TEXT, created_by BIGINT REFERENCES users(id), created_at TIMESTAMPTZ DEFAULT NOW(), effective_from DATE, effective_to DATE ); Багатомовність та продуктивність
Для органів, що працюють з національними меншинами, портал підтримує кілька мов, наприклад українську та англійську. hreflang у head, окремі URL (/uk/, /en/), localStorage для збереження мови. За SLA доступність має бути 99.5% і вище — резервуємо сервера, ставимо моніторинг з алертингом.
Що входить у роботу?
- Аналітика вимог та нормативної бази
- Проєктування архітектури (БД, інфраструктура, інтеграції)
- Дизайн і верстка з урахуванням WCAG 2.1 AA (верстка за стандартами)
- Розробка бекенду на Laravel / Django
- Інтеграція з державною системою ідентифікації
- Повнотекстовий пошук (Elasticsearch або PostgreSQL)
- Тестування (a11y, навантаження, безпека)
- Розгортання на серверах замовника
- Документація та навчання співробітників
- Гарантійна підтримка 6 місяців
Терміни
| Тип порталу | Термін |
|---|---|
| Інформаційний + архів + пошук | 6–10 тижнів |
| З інтеграцією системи ідентифікації та особистим кабінетом | 3–5 місяців |
| Повноцінна платформа державних послуг | від 6 місяців |
Вартість розраховується індивідуально після аудиту вимог. Зв'яжіться з нами — оцінимо проєкт за 2 дні. Наші інженери мають сертифікати з інформаційної безпеки та досвід із державними замовниками. Замовте розробку порталу під ключ — отримайте надійне рішення, що відповідає всім законам.







