GN Gerege Nexus
GitHub Нэвтрэх

Gerege Nexus

Үйлчилгээ, үйл ажиллагаа, системийн нэгдсэн платформ

Gerege Nexus нь төрийн болон хувийн хэвшлийн байгууллагын үйлчилгээ, үйл ажиллагаа, систем, өгөгдлийг нэгтгэх модульт платформ юм. Cloud-native экосистемээс санаа авсан, өндөр бүтээмжтэй, Монгол Улсын цахим дэд бүтэц (ДАН, E-ID, ХУР / XYP)-тэй шууд холбогдох боломжтой, монгол хэлийг үндсэн хэл болгосон нээлттэй эхийн шийдэл.

Nexus гэдэг нь холбох цэг — байгууллага, үйлчилгээ, ажлын урсгал, систем, хэрэглэгч, өгөгдөл нэг дор уулзах цэгийг хэлнэ. Платформ өөрөө нэг салбарт зориулагдаагүй: дээр нь ажиллах модулиуд л тухайн байгууллагын хэрэгцээг тодорхойлно.

Нэг Go бинари дотор модулиуд компиллогдож, тенант бүрт аль апп идэвхтэйг PostgreSQL дээрх апп стор шийднэ — сүлжээний нэмэлт дуудлагагүй, микросервисийн нарийн төвөгтэй байдалгүйгээр модуль хуваарилалт хийнэ.

Хэлний бодлого: монгол хэл + НҮБ-ын албан ёсны 6 хэл — араб, хятад, англи, франц, орос, испани. Нийт 7 хэл. Монгол хэл эх сурвалж; баримт бичиг долуулаа байдаг бол програм хангамж нь монгол, англи хоёроор ирж, үлдсэнийг нь Тохиргоо → Харагдац дотроос асаана. Дэлгэрэнгүйг орчуулгын гарын авлага-аас үзнэ үү.

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

License Go Version Next.js CI Security PRs Welcome Docs

Баримт бичиг: gerege-systems.github.io/open-gerege-nexus — энэ репод байгаа бүх баримт долоон хэлээр, хайхад хялбар вэб хэлбэрээр.


Хамаарах сервисүүд

Апп стор нь тусдаа репод байрладаг бөгөөд энэ платформ түүнээс каталогоо гарын үсэгтэйгээр татдаг (APP_CATALOG_URL; тохируулаагүй бол catalog/apps.json файлаараа ажиллана):

Агуулга


Хөгжүүлэгчид

Оролцогч Үүрэг
Gerege Systems Development Team (@gerege-systems) Архитектур, платформын цөм
Gemini AI Код үүсгэлт, баримтжуулалт
Claude AI Код шинжилгээ, аюулгүй байдлын аудит

Үндсэн боломжууд

1. Өндөр бүтээмжтэй модуль монолит архитектур

2. Cloud-native тэсвэрлэлтийн хөдөлгүүр

Модуль Зориулалт
resilience/breaker.go Google SRE загварын adaptive circuit breaker
resilience/loadshedder.go Ачаалал хэтэрсэн үед 503 + Retry-After
resilience/singleflight.go Давхардсан хүсэлтийг нэгтгэж кэшийн ачаалал бууруулах
resilience/retry.go Экспоненциал ухралттай давталт

3. Төрийн цахим дэд бүтцийн интеграци

Анхаар. E-ID / ДАН / ХУР-ын mock горим зөвхөн хөгжүүлэлтийн орчинд ажиллана. ENVIRONMENT=production үед mock горим автоматаар унтарч, хуурамч иргэний мэдээллээр нэвтрэх боломжгүй болно.

4. AI Copilot ба бизнес аналитик


Бэлэн бизнес аппликейшнүүд

# Апп ID Зам Тайлбар
1 Organisation & People io.gerege.nexus.organisation /organisation Хэлтэс нэгж, ажилтнуудын бүртгэл. Шинэ тенантад default-оор суух ч устгаж болно; байгууллагын хуулийн профайл нь апп биш, платформын хэсэг
2 e-Government Link io.gerege.nexus.egov /egov ХУР-ын иргэн/хуулийн этгээдийн лавлагаа, eID ба ДАН сувгийн төлөв, лавлагааны түүх. Default-оор суух ч устгаж болно
3 Contacts io.gerege.nexus.contacts /contacts Харилцагчийн бүртгэл, ХУР авто-бөглөлт
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 Clients io.gerege.nexus.sso_clients /sso-clients Энэ платформоор дамжуулан нэвтрэх системүүдийн OAuth2 клиент бүртгэл
9 State Services io.gerege.nexus.gov_services /gov-services Тохируулж болох шийдвэрлэх урсгал, шилжүүлэлт, баталгаажуулалт, цаг захиалга
10 PDF цахим гарын үсэг io.gerege.nexus.esign /esign eID Mongolia (PIN2) хуулийн хүчин төгөлдөр цахим гарын үсэг, Gerege eSign HSM, багц баталгаажуулалт, гарын үсгийн лог

Апп бүр тенантад суулгагдаж идэвхжсэн үед л маршрутууд нээгдэнэ. Суулгаагүй апп руу хандвал 403 Forbidden буцна.


Төслийн бүтэц

backend/
  cmd/api/            HTTP API сервер (+ demo seeder)
  cmd/migrate/        Goose миграцийн ажиллуулагч
  db/migrations/      SQL миграцууд
  internal/
    module.go         Модулийн Go гэрээ (Module interface)
    apps/             Бизнес модулиуд
    platform/         Платформын цөм үйлчилгээнүүд
frontend/             Next.js 16 (App Router) вэб клиент
native-apps/          Swift, C# ба Kotlin native клиентүүд (Linux нь PWA)
catalog/              Апп сторын каталог ба manifest-ууд
deploy/               Production Dockerfile, Nginx тохиргоо
docs/                 Баримт бичиг ба орчуулгууд

Desktop бүрхүүлүүд

Архитектур нь Native Shell + Web Work Area: native бүрхүүл нь session-ий мөчлөг, толгой хэсэг, цэс, tray, төхөөрөмжийн хандалтыг эзэмшинэ; вэб клиент нь бүрхүүл дотор ажиллахдаа өөрийн chrome-оо нуугаад зөвхөн ажлын муж болж рендерлэгдэнэ. Хөтчөөр орвол бүрхүүл байхгүй тул вэб клиент урьдын адил бүрэн аппликейшн хэвээрээ ажиллана.

Бүрхүүл ба вэб клиентийн хооронд бичигдсэн гэрээ бий — docs/SHELL_CONTRACT.md нь window.GeregeShell-ийн method, event, capability, хувилбарын дүрэм, аюулгүй байдлын шаардлагыг тодорхойлно. Вэб клиент бүрхүүлийн дотоод бүтцийг мэдэхгүй — зөвхөн гэрээг л мэднэ.

Клиентүүд native-apps/ дотор гурван native сангаар хөгжинө: Swift (macOS/iOS/iPadOS), C# (Windows desktop/kiosk/POS), Kotlin (Android mobile/tablet/kiosk/POS). Linux desktop нь PWA хэвээр.

Бүх native клиент нэвтрэлтийг өөрийн native UI-аар хийж, session cookie-г webview store-д тарина. /login нь browser/PWA горимд л ашиглагдана:

make run-mac        # macOS хөгжүүлэлтийн горим
make build-mac      # Swift/AppKit компиляц

Хөтчөөс суулгах (Linux болон бусад)

Native клиентгүй платформ дээр вэб клиент нь PWA (/manifest.webmanifest) тул хөтчөөс шууд суулгаж болно: Chrome/Edge дээр хаягийн мөрний суулгах товч, Safari дээр File → Add to Dock. Суулгасан хувилбар нь dock эсвэл taskbar-т орж, өөрийн цонхоор нээгддэг — татаж авах файлгүй, дэлгүүргүй, вэбтэй яг ижил хуудсуудыг үзүүлнэ.

Платформ бүрийн урьдчилсан шаардлага, runtime endpoint, enrollment, code signing болон auto-update сувгийн зааврыг native-apps/README.md-ээс үзнэ үү.

Native CI нь macOS Swift ба Windows .NET build-ийг тус тусын runner дээр шалгана. Installer нь signing identity оруулсны дараах release ажил.


Ажиллуулах заавар

Шаардлагатай програмууд

1. Docker Compose (хамгийн хялбар)

docker compose up -d

Миграц нь тусдаа migrate service-ээр автоматаар ажиллаж дуусмагц 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 хаягаар орно уу.

Туршилтын нэвтрэх эрх

Талбар Утга
И-мэйл admin@example.com
Нууц үг Password123!
Тенант Demo Corporation (slug: demo)

Энэ бүртгэл зөвхөн хөгжүүлэлтийн орчинд үүснэ. Production дээр SEED_DEMO_DATA=true гэж тодорхой заагаагүй бол огт үүсэхгүй.


Автомат deploy

main салбар руу push хийх бүрд deploy.yml ажиллана:

  1. Backend ба frontend образыг GHCR руу угсарч илгээнэ (:latest ба :<sha>).
  2. docker-compose.prod.yml-ийг серверт хуулна.
  3. Серверт .env-ийг GitHub secret-ээс шинээр бичиж, образуудыг татна.
  4. Миграц бүрэн дуусмагц API ба frontend солигдоно.
  5. /health ба /ready-г шалгаж, амжилтгүй бол лог хэвлээд алдаа өгнө.

Гараар ажиллуулахдаа Actions → Deploy to ProductionRun workflow (шаардвал тодорхой tag зааж болно).

Шаардлагатай repository secrets:

Secret Заавал Тайлбар
DEPLOY_SSH_KEY Тийм Deploy хэрэглэгчийн хувийн түлхүүр. Байхгүй бол rollout алгасана
POSTGRES_PASSWORD Тийм Сервер дэх өгөгдлийн сангийн нууц үг
SSO_DEFAULT_CLIENT_SECRET Тийм Production дээр OAuth2 client-д зайлшгүй
DEPLOY_HOST / DEPLOY_USER / DEPLOY_PORT Үгүй Анхдагч: nexus.gerege.mn / deploy / 22
PUBLIC_ORIGIN Үгүй Анхдагч: https://nexus.gerege.mn

Production домэйн нь nexus.gerege.mn. Өмнөх openerp.gerege.mn домэйныг Gerege Nexus нэршилд шилжихэд орлуулсан. PUBLIC_ORIGIN нь CORS, OIDC issuer, eID callback гурвыг нэг дор тодорхойлдог тул түүнийг өөрчлөхөд DNS, TLS гэрчилгээ, issuer-т тулгуурласан client бүр хамт шилжинэ.

Серверт зөвхөн Docker шаардлагатай — эх код ч, Go/Node ч хэрэггүй. Утгуудын жишээг deploy/.env.prod.example-ээс үзнэ үү.


Тохиргооны хувьсагчид

Бүрэн жагсаалтыг .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-д итгэх эсэх
CONTROL_PLANE_HOST Операторын консолын хост. Production дээр хоосон бол консол огт байхгүй (docs/CONTROL_PLANE.md)
PROMETHEUS_URL / ALERTMANAGER_URL / GRAFANA_URL Консолын нүүр хуудсанд хэмжүүр, дохио, гүнзгий линк. Хоосон бол тэр хэсэг "тохируулаагүй" гэж харагдана
GITHUB_DEPLOY_TOKEN / GITHUB_REPOSITORY Консолын deploy товч. Токен нь зөвхөн deploy workflow-д эрхтэй fine-grained байх ёстой
SEED_DEMO_DATA production-оос бусад үед идэвхтэй Туршилтын бүртгэл үүсгэх. Платформ хаалттай (private) горимтой бол зөрчилдөх тул boot дээр анхааруулна
SSO_DEFAULT_CLIENT_SECRET Production дээр заавал шаардлагатай
SSO_CLIENT_ISSUER / SSO_CLIENT_ID Тохируулбал энэ суулгац нэрлэсэн провайдерийн клиент болно: эндэх нэвтрэлт хаагдаж, гарах нь провайдер дээр дуусна
SSO_CLIENT_TENANT Провайдерийн баталгаажуулсан ч энд бүртгэлгүй хүнийг үүсгэх байгууллага. Хоосон бол үүсгэхгүй
GEMINI_API_KEY AI chat, voice, TTS, орчуулгыг идэвхжүүлэх түлхүүр
GEMINI_MODEL / GEMINI_TTS_MODEL Gemini 2.5 Flash загварууд Chat ба дууны model сонголт
EID_MOCK_MODE / DAN_MOCK_MODE / XYP_MOCK_MODE production-оос бусад үед идэвхтэй Төрийн системийн mock горим
OTEL_EXPORTER_OTLP_ENDPOINT Trace-ийг Tempo руу илгээх хаяг. Хоосон бол tracing бүрэн унтарсан
OTEL_TRACES_SAMPLER_ARG 0.1 Trace-ийн хэдэн хувийг хадгалах (0-1)
SENTRY_DSN Алдааны бүртгэл (GlitchTip эсвэл Sentry). Хоосон бол унтарсан
REPORT_SMTP_URL / REPORT_MAIL_FROM Товлосон тайланг илгээх SMTP. Хоосон бол тайлан бэлтгэгдэнэ, илгээгдэхгүй

Мониторингийн стек нь өөрийн орчинтой — платформын .env-д хамаарахгүй. GRAFANA_ADMIN_PASSWORD, MONITORING_DB_PASSWORD болон дохиоллын сувгийн хувьсагчдыг deploy/.env.monitoring.example ба docs/MONITORING.md-ээс үзнэ үү. Тусдаа байгаа шалтгаан нь стек өөрөө тусдаа: платформ түүнгүйгээр бүрэн ажиллана.


API-н тойм

Аргачлал Зам Тайлбар
GET /health, /ready Амьд ба бэлэн байдлын шалгалт
GET /metrics Prometheus хэмжүүрүүд
POST /api/v1/auth/login И-мэйл/нууц үгээр нэвтрэх
POST /api/v1/auth/eid/login Үндэсний E-ID-аар нэвтрэх
POST /api/v1/auth/dan/login ДАН гарцаар нэвтрэх
POST /api/v1/auth/logout Session-ийг цуцлах
GET /api/v1/auth/tenants Хэрэглэгчийн харьяалагдах байгууллагууд
POST /api/v1/auth/switch-tenant Session-ийг өөр байгууллага руу шилжүүлэх
GET /api/v1/menus Тенантад идэвхтэй цэсүүд
GET /api/v1/store/apps Апп сторын жагсаалт
POST /api/v1/ai/chat, /stt, /tts, /translate Tenant-safe Gemini AI pipeline
GET/PUT /api/v1/admin/ai/prompts/{key} AI prompt тохируулах (админ)
GET/POST /api/v1/admin/ai/knowledge AI мэдлэгийн сан (админ)
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 токен
GET /oauth2/logout RP-initiated logout — session хааж, бүртгэлтэй хаяг руу буцаана
GET /api/v1/auth/sso/config Энэ суулгац хэрхэн нэвтрүүлдэг — нэвтрэх дэлгэц уншина
GET /api/v1/auth/sso/start Провайдер дээр нэвтрэлт эхлүүлнэ (PKCE, state, nonce)
GET /api/v1/auth/sso/callback Провайдерээс буцаж ирэх цэг

Нэвтрэлтийн токен нь HttpOnly cookie эсвэл Authorization: Bearer <token> толгойгоор дамжина.


Тест ба чанарын хяналт

# Backend нэгж тестүүд (race detector-тэй)
cd backend && go test -race ./...

# Статик шинжилгээ
cd backend && go vet ./... && golangci-lint run

# Эмзэг байдлын шалгалт
cd backend && govulncheck ./...

# Frontend build
cd frontend && npm run build

CI нь push ба pull request бүр дээр lint, тест, frontend build, Docker образ угсралт, govulncheck ба gosec шалгалтыг ажиллуулна.


Аюулгүй байдал

Эмзэг байдал мэдээлэх журмыг SECURITY.md-ээс үзнэ үү.


Баримт бичгийн индекс

Баримт Тайлбар
Баримт бичгийн төв Бүх баримтын индекс ба орчуулгууд
Архитектурын тодорхойлолт Платформын давхаргууд ба шийдвэрүүд
Модуль хөгжүүлэх заавар Шинэ апп модуль бичих алхмууд
Bridge Contract v1 Native бүрхүүл ба вэб ажлын мужийн гэрээ
Хамтран ажиллах заавар Хувь нэмэр оруулах журам
Аюулгүй байдлын бодлого Эмзэг байдал мэдээлэх
Ёс зүйн дүрэм Хамт олны хэм хэмжээ
Өөрчлөлтийн түүх Хувилбар бүрийн өөрчлөлт

Ашигласан ба санаа авсан төслүүд

  1. snykk/go-rest-boilerplate by @snykk — Go REST API суурь архитектур.
  2. Odoo — модуль апп стор ба хамаарал шийдвэрлэх загвар.
  3. go-zero — cloud-native resilience хөдөлгүүр.

Лиценз

Copyright (c) 2026 Gerege Systems Development Team, Gemini AI & Claude AI. Apache 2.0 лицензээр тараагдана — LICENSE-ийг үзнэ үү.

Тугны дүрсийг Flaticon-оос авсан (оруулсан хувь нэмэр).