GN Gerege Nexus
GitHub Нэвтрэх

Gerege Nexus

Единая платформа цифровых операций

Gerege Nexus — это открытая модульная платформа, объединяющая услуги, операции, системы и данные государственных и частных организаций. Основной язык платформы — монгольский, и она напрямую интегрирована с национальной цифровой инфраструктурой Монголии (DAN, E-ID, XYP / ХУР).

Nexus — это точка соединения: место, где сходятся организации, услуги, рабочие процессы, системы, пользователи и данные. Сама платформа не привязана к одной отрасли — специфику задаёт набор работающих на ней модулей.

Модули компилируются в единый бинарный файл Go, а магазин приложений на PostgreSQL определяет, какие приложения активны для каждого арендатора, — разделение модулей без сетевых вызовов и эксплуатационной сложности микросервисов.

Монгол  ·  العربية  ·  中文  ·  English  ·  Français  ·  Русский  ·  Español

License Go Version Next.js PRs Welcome


Содержание


Авторы

Участник Роль
Gerege Systems Development Team (@gerege-systems) Архитектура, ядро платформы
Gemini AI Генерация кода, документация
Claude AI Анализ кода, аудит безопасности

Ключевые возможности

1. Высокопроизводительный модульный монолит

2. Cloud-native механизмы отказоустойчивости

Модуль Назначение
resilience/breaker.go Адаптивный circuit breaker в стиле Google SRE
resilience/loadshedder.go Отбрасывает нагрузку с 503 и Retry-After
resilience/singleflight.go Объединяет дублирующиеся параллельные запросы
resilience/retry.go Повторы с экспоненциальной задержкой

3. Интеграция с национальной инфраструктурой

Важно. Mock-режим для E-ID, DAN и XYP предназначен только для разработки. При ENVIRONMENT=production он отключается автоматически, поэтому сфабрикованный регистрационный номер не пройдёт аутентификацию.

4. AI-помощник и аналитика


Бизнес-приложения

# Приложение ID Маршрут Описание
1 Организация и сотрудники io.gerege.nexus.organisation /organisation Подразделения и работающие в них сотрудники. Устанавливается по умолчанию для нового тенанта и может быть удалено; юридические данные организации — не приложение, а часть платформы
2 Подключение к электронному правительству io.gerege.nexus.egov /egov Справки ХУР по гражданам и юрлицам, состояние каналов eID и ДАН, история запросов. Устанавливается по умолчанию и может быть удалено
3 Contacts io.gerege.nexus.contacts /contacts Справочник клиентов и поставщиков с автозаполнением из XYP
4 Products io.gerege.nexus.products /products Каталог, цены и SKU в рамках арендатора
5 Inventory io.gerege.nexus.inventory /inventory Склады, остатки, журнал движений
6 Public Billing & e-Barimt io.gerege.nexus.billing /billing Счета, НДС 10%, налоговые чеки e-Barimt
7 Digital Documents & E-Sign io.gerege.nexus.documents /documents Маршрутизация документов, подписи, согласования
8 SSO-клиенты io.gerege.nexus.sso_clients /sso-clients OAuth2-клиенты систем, которые выполняют вход пользователей через эту платформу

Маршруты открываются только после установки и включения приложения для арендатора, иначе шлюз возвращает 403 Forbidden.


Структура репозитория

backend/
  cmd/api/            HTTP API-сервер (+ demo seeder)
  cmd/migrate/        Запуск миграций Goose
  db/migrations/      SQL-миграции
  internal/
    module.go         Контракт Go Module
    apps/             Бизнес-модули
    platform/         Сервисы ядра платформы
frontend/             Веб-клиент Next.js 16 (App Router)
catalog/              Каталог магазина приложений и манифесты
deploy/               Production Dockerfile, конфигурация Nginx
docs/                 Документация и переводы

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

Требования

1. Docker Compose

docker compose up -d

Миграции выполняет отдельный одноразовый сервис migrate, и только после этого запускается API.

2. Вручную

Backend:

cd backend
go mod download
DATABASE_URL="postgres://postgres:postgrespassword@localhost:5432/platform_db?sslmode=disable" \
  go run ./cmd/migrate up
go run ./cmd/api

Frontend:

cd frontend
npm ci
npm run dev

Откройте http://localhost:3000.

Демонстрационный доступ

Поле Значение
Email admin@example.com
Пароль Password123!
Арендатор Demo Corporation (slug: demo)

Демо-учётная запись создаётся только вне production. В production она появится лишь при явно заданном SEED_DEMO_DATA=true.


Конфигурация

Полный список — в .env.example.

Переменная По умолчанию Описание
DATABASE_URL localhost Строка подключения к PostgreSQL
PORT 8080 Порт API
ENVIRONMENT development production включает усиленные настройки
APP_CATALOG_PATH catalog/apps.json Путь к каталогу приложений
ALLOWED_ORIGINS http://localhost:3000 Список разрешённых источников CORS
TRUST_PROXY_HEADERS false Доверять ли X-Forwarded-For
SEED_DEMO_DATA включено вне production Создание демо-учётной записи
SSO_DEFAULT_CLIENT_SECRET Обязательно в production
EID_MOCK_MODE / DAN_MOCK_MODE / XYP_MOCK_MODE включено вне production Mock-режим государственных систем

Обзор API

Метод Путь Описание
GET /health, /ready Проверки живости и готовности
GET /metrics Метрики Prometheus
POST /api/v1/auth/login Вход по email и паролю
POST /api/v1/auth/eid/login Вход через национальный E-ID
POST /api/v1/auth/dan/login Вход через шлюз DAN
POST /api/v1/auth/logout Отзыв сессии
GET /api/v1/menus Меню включённых приложений арендатора
GET /api/v1/store/apps Список магазина приложений
POST /api/v1/store/apps/{slug}/install Установка приложения (админ)
POST /api/v1/verify/send Запросить ссылку подтверждения у хостинговой службы
GET /api/v1/verify/landed Принять того, кто подтвердил адрес — срабатывает один раз
GET /api/v1/admin/email-verification/overview История подтверждений и состояние службы (админ)
POST /oauth2/token Токен OAuth2 client credentials

Токен сессии передаётся в HttpOnly cookie либо в заголовке Authorization: Bearer <token>.


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

# Модульные тесты backend с детектором гонок
cd backend && go test -race ./...

# Статический анализ
cd backend && go vet ./... && golangci-lint run

# Проверка уязвимостей
cd backend && govulncheck ./...

# Сборка frontend
cd frontend && npm run build

CI выполняет lint, тесты, сборку frontend, сборку Docker-образа, govulncheck и gosec при каждом push и pull request.


Безопасность

Порядок сообщения об уязвимостях описан в SECURITY.md.


Указатель документации

Документ Описание
Центр документации Указатель всех документов и переводов
Спецификация архитектуры Слои платформы и проектные решения
Руководство по разработке модулей Как создать новый модуль приложения
Руководство для контрибьюторов Процесс внесения вклада
Политика безопасности Сообщение об уязвимостях
Кодекс поведения Нормы сообщества
История изменений История релизов

Благодарности и источники вдохновения

  1. snykk/go-rest-boilerplate от @snykk — основа Go REST API.
  2. Odoo — модульный магазин приложений и модель зависимостей.
  3. go-zero — cloud-native механизмы отказоустойчивости.

Лицензия

Copyright (c) 2026 Gerege Systems Development Team, Gemini AI & Claude AI. Распространяется по лицензии Apache 2.0 — см. LICENSE.

Иконки флагов — Flaticon (атрибуция).