GN Gerege Nexus
GitHub Нэвтрэх

Gerege Nexus

Plataforma Integrada de Operaciones Digitales

Gerege Nexus es una plataforma modular de código abierto que conecta servicios, operaciones, sistemas y datos de organizaciones públicas y privadas. Está diseñada con el mongol como idioma principal y se integra directamente con la infraestructura digital nacional de Mongolia (DAN, E-ID, XYP / ХУР).

Nexus es el punto de conexión: donde confluyen organizaciones, servicios, flujos de trabajo, sistemas, usuarios y datos. La plataforma en sí no está ligada a ningún sector — son los módulos que se ejecutan sobre ella los que definen cada despliegue.

Los módulos se compilan en un único binario de Go, mientras que una tienda de aplicaciones respaldada por PostgreSQL decide qué aplicaciones están activas por inquilino — separación modular sin los saltos de red ni el coste operativo de los microservicios.

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

License Go Version Next.js PRs Welcome


Contenido


Autores

Colaborador Función
Gerege Systems Development Team (@gerege-systems) Arquitectura, núcleo de la plataforma
Gemini AI Generación de código, documentación
Claude AI Análisis de código, auditoría de seguridad

Capacidades principales

1. Monolito modular de alto rendimiento

2. Motor de resiliencia cloud-native

Módulo Propósito
resilience/breaker.go Cortacircuitos adaptativo al estilo SRE de Google
resilience/loadshedder.go Descarta carga con 503 + Retry-After bajo presión
resilience/singleflight.go Fusiona trabajo duplicado en vuelo
resilience/retry.go Reintento con retroceso exponencial

3. Infraestructura digital nacional

Nota. El modo simulado (mock) de E-ID, DAN y XYP es únicamente una comodidad de desarrollo. Con ENVIRONMENT=production se desactiva automáticamente, de modo que un número de registro inventado nunca puede autenticarse.

4. Copiloto de IA y analítica


Aplicaciones de negocio

# Aplicación ID Ruta Descripción
1 Organización y personas io.gerege.nexus.organisation /organisation Los departamentos y las personas que trabajan en ellos. Instalada por defecto para un inquilino nuevo y desinstalable; la identidad legal de la organización no es una app, sino parte de la plataforma
2 Enlace con la administración electrónica io.gerege.nexus.egov /egov Consultas a ХУР (ciudadanos y personas jurídicas), estado de los canales eID y ДАН, e historial. Instalada por defecto y desinstalable
3 Contactos io.gerege.nexus.contacts /contacts Directorio de clientes y proveedores con autocompletado XYP
4 Productos io.gerege.nexus.products /products Catálogo, precios y SKU por inquilino
5 Inventario io.gerege.nexus.inventory /inventory Almacenes, niveles de stock, libro de movimientos
6 Facturación y e-Barimt io.gerege.nexus.billing /billing Facturación, IVA del 10 %, recibos e-Barimt
7 Documentos digitales y firma electrónica io.gerege.nexus.documents /documents Circulación de documentos, firmas, aprobaciones
8 Clientes SSO io.gerege.nexus.sso_clients /sso-clients Clientes OAuth2 de los sistemas que inician sesión de personas a través de esta plataforma

Las rutas solo se abren una vez que la aplicación está instalada y habilitada para el inquilino; de lo contrario el control devuelve 403 Forbidden.


Estructura del repositorio

backend/
  cmd/api/            Servidor de la API HTTP (+ datos de demostración)
  cmd/migrate/        Ejecutor de migraciones Goose
  db/migrations/      Migraciones SQL
  internal/
    module.go         El contrato de módulo de Go
    apps/             Módulos de negocio
    platform/         Servicios del núcleo de la plataforma
frontend/             Cliente web Next.js 16 (App Router)
catalog/              Catálogo y manifiestos de la tienda de aplicaciones
deploy/               Dockerfile de producción, configuración de Nginx
docs/                 Documentación y traducciones

Primeros pasos

Requisitos previos

1. Docker Compose

docker compose up -d

Las migraciones se ejecutan en un servicio migrate dedicado y de un solo uso antes de que arranque la API.

2. Manualmente

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

Abra http://localhost:3000.

Credenciales de demostración

Campo Valor
Correo admin@example.com
Contraseña Password123!
Inquilino Demo Corporation (slug: demo)

La cuenta de demostración solo se crea fuera de producción. En producción se crea únicamente cuando se establece SEED_DEMO_DATA=true de forma explícita.


Despliegue automatizado

Cada push a main ejecuta deploy.yml:

  1. Construir y publicar las imágenes de backend y frontend en GHCR (:latest y :<sha>).
  2. Copiar docker-compose.prod.yml al servidor.
  3. Escribir el .env del servidor desde los secretos de GitHub y descargar las imágenes.
  4. Ejecutar las migraciones hasta el final y luego conmutar la API y el frontend.
  5. Sondear /health y /ready, mostrar los registros de los contenedores y marcar la ejecución como fallida si el despliegue no está sano.

Despliegue manual: Actions → Deploy to ProductionRun workflow, fijando opcionalmente una etiqueta de imagen.

Secretos requeridos en el repositorio:

Secreto Requerido Descripción
DEPLOY_SSH_KEY Clave privada del usuario de despliegue. Sin ella se omite el despliegue
POSTGRES_PASSWORD Contraseña de la base de datos en el servidor
SSO_DEFAULT_CLIENT_SECRET Obligatorio para el cliente OAuth2 integrado en producción
DEPLOY_HOST / DEPLOY_USER / DEPLOY_PORT No Por defecto nexus.gerege.mn / deploy / 22
PUBLIC_ORIGIN No Por defecto https://nexus.gerege.mn

El dominio de producción es nexus.gerege.mn, que sustituyó a openerp.gerege.mn en el cambio de nombre a Gerege Nexus. PUBLIC_ORIGIN define en un mismo lugar el CORS, el emisor OIDC y el callback de eID, de modo que moverlo arrastra consigo el DNS, el certificado TLS y todo cliente que haya fijado el emisor.

El servidor solo necesita Docker — sin código fuente ni cadena de herramientas Go/Node. Consulte deploy/.env.prod.example para los valores.


Configuración

Consulte .env.example para la lista completa.

Variable Predeterminado Descripción
DATABASE_URL localhost Cadena de conexión a PostgreSQL
PORT 8080 Puerto de escucha de la API
ENVIRONMENT development production activa valores endurecidos
APP_CATALOG_PATH catalog/apps.json Ruta del catálogo de la tienda de aplicaciones
ALLOWED_ORIGINS http://localhost:3000 Lista de orígenes permitidos (CORS)
TRUST_PROXY_HEADERS false Si se confía en X-Forwarded-For
SEED_DEMO_DATA activo fuera de producción Crear la cuenta de demostración
SSO_DEFAULT_CLIENT_SECRET Requerido en producción
EID_MOCK_MODE / DAN_MOCK_MODE / XYP_MOCK_MODE activo fuera de producción Simular las integraciones nacionales

Resumen de la API

Método Ruta Descripción
GET /health, /ready Sondas de vitalidad y disponibilidad
GET /metrics Métricas de Prometheus
POST /api/v1/auth/login Inicio de sesión con correo y contraseña
POST /api/v1/auth/eid/login Inicio de sesión con E-ID nacional
POST /api/v1/auth/dan/login Inicio de sesión mediante la pasarela DAN
POST /api/v1/auth/logout Revocar la sesión
GET /api/v1/menus Menús de las aplicaciones habilitadas del inquilino
GET /api/v1/store/apps Listado de la tienda de aplicaciones
POST /api/v1/store/apps/{slug}/install Instalar una aplicación (admin)
POST /api/v1/verify/send Solicitar un enlace de verificación al servicio alojado
GET /api/v1/verify/landed Recibir a quien ha confirmado — sirve una sola vez
GET /api/v1/admin/email-verification/overview Historial de verificaciones y estado del servicio (admin)
POST /oauth2/token Token OAuth2 de client credentials

Los tokens de sesión viajan en la cookie HttpOnly o como Authorization: Bearer <token>.


Pruebas y controles de calidad

# Pruebas unitarias del backend con el detector de carreras
cd backend && go test -race ./...

# Análisis estático
cd backend && go vet ./... && golangci-lint run

# Análisis de vulnerabilidades
cd backend && govulncheck ./...

# Compilación del frontend
cd frontend && npm run build

La CI ejecuta lint, pruebas, la compilación del frontend, la construcción de la imagen Docker, govulncheck y gosec en cada push y cada pull request.


Seguridad

Informe de vulnerabilidades según lo descrito en SECURITY.md.


Índice de documentación

Documento Descripción
Centro de documentación Índice de todos los documentos y traducciones
Especificación de arquitectura Capas de la plataforma y decisiones de diseño
Guía de creación de módulos Cómo construir un nuevo módulo de aplicación
Contribuir Flujo de contribución
Política de seguridad Notificación de vulnerabilidades
Código de conducta Normas de la comunidad
Registro de cambios Historial de versiones

Créditos e inspiración

  1. snykk/go-rest-boilerplate de @snykk — fundamentos de la API REST en Go.
  2. Odoo — tienda de aplicaciones modular y modelo de dependencias.
  3. go-zero — motor de resiliencia cloud-native.

Licencia

Copyright (c) 2026 Gerege Systems Development Team, Gemini AI & Claude AI. Distribuido bajo la Licencia Apache 2.0 — véase LICENSE.

Iconos de banderas por Flaticon (atribución).