Skip to content

Repository files navigation

NPS.gov — Backend Service (Integration with NCANode)

🌟 О проекте

NPS.gov (National Poll System) — это серверная часть национальной системы опросов Республики Казахстан. Проект обеспечивает сбор и аналитику мнений граждан и сотрудников госорганов, гарантируя юридическую значимость данных через проверку Электронной Цифровой Подписи (ЭЦП).

🔐 Ключевая особенность: Интеграция с NCANode

Основным инструментом безопасности системы является NCANode — кроссплатформенный сервер для работы с ЭЦП РК. В данном проекте он выступает в роли криптографического шлюза.

Что это дает проекту:

  • Валидация по стандартам РК: Проверка подписей в форматах CMS и XML (xmldsig) с поддержкой ГОСТ 2015.
  • Проверка статуса сертификатов: Взаимодействие с сервисами OCSP и CRL для проверки отозванных ключей.
  • Цепочка доверия: Автоматическая верификация сертификатов НУЦ РК (Национальный удостоверяющий центр).
  • Извлечение данных: Динамическое получение ИИН, БИН и ФИО подписанта напрямую из бинарных данных подписи.

🏗 Архитектура системы

Система построена на принципе Multi-tenancy (многоарендность) с привязкой к государственным структурам:

  1. Изоляция по БИН: Все данные (опросы, ответы, статистика) строго изолированы на уровне организаций. Пользователи одного ведомства не имеют доступа к данным другого.
  2. Ролевая модель: Реализована логика автоматического назначения прав. Первый пользователь, авторизовавшийся от конкретного БИН, получает статус Администратора ведомства.
  3. Микросервисная топология: Архитектура разделена на основной бизнес-узел (NestJS) и специализированный криптографический узел (NCANode), что обеспечивает отказоустойчивость при проверке ЭЦП.
ChatGPT Image May 16, 2026, 10_42_43 PM

🛠 Технический стек

  • Core: NestJS (Node.js), TypeScript.
  • Database: PostgreSQL (TypeORM) — хранение структуры опросов и связей организаций.
  • Crypto-worker: NCANode (Java/Docker) — валидация ЭЦП.
  • DevOps: Docker & Docker Compose — для быстрой развертки всей инфраструктуры.

🧬 Структура БД

ChatGPT Image May 16, 2026, 10_27_10 PM

🚦 Быстрый старт

Для запуска локальной среды (Backend + NCANode) при использовании удаленных баз данных:

#Настройка окружения:
Создайте файл .env в корне проекта и укажите параметры подключения к удаленному хосту

# Запуск инфраструктуры через Docker
docker-compose up -d

[!TIP] Запуск сервисов: Поскольку база данных и Redis развернуты на удаленном сервере, Docker-compose запустит только ядро системы и криптографический воркер

[!IMPORTANT] Убедитесь, что на удаленном хосте открыты соответствующие порты (5432 для Postgres, 6379 для Redis) для IP-адреса, с которого запускается Docker.

Проверка состояния крипто-воркера

curl http://localhost:14579/actuator/health

About

🌟Серверная часть национальной системы опросов

Topics

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages