Gerege Nexus
Үйлчилгээ, үйл ажиллагаа, системийн нэгдсэн платформ
Gerege Nexus нь төрийн болон хувийн хэвшлийн байгууллагын үйлчилгээ, үйл ажиллагаа, систем, өгөгдлийг нэгтгэх модульт платформ юм. Cloud-native экосистемээс санаа авсан, өндөр бүтээмжтэй, Монгол Улсын цахим дэд бүтэц (ДАН, E-ID, ХУР / XYP)-тэй шууд холбогдох боломжтой, монгол хэлийг үндсэн хэл болгосон нээлттэй эхийн шийдэл.
Nexus гэдэг нь холбох цэг — байгууллага, үйлчилгээ, ажлын урсгал, систем, хэрэглэгч, өгөгдөл нэг дор уулзах цэгийг хэлнэ. Платформ өөрөө нэг салбарт зориулагдаагүй: дээр нь ажиллах модулиуд л тухайн байгууллагын хэрэгцээг тодорхойлно.
Нэг Go бинари дотор модулиуд компиллогдож, тенант бүрт аль апп идэвхтэйг PostgreSQL дээрх апп стор шийднэ — сүлжээний нэмэлт дуудлагагүй, микросервисийн нарийн төвөгтэй байдалгүйгээр модуль хуваарилалт хийнэ.
Хэлний бодлого: монгол хэл + НҮБ-ын албан ёсны 6 хэл — араб, хятад, англи, франц, орос, испани. Нийт 7 хэл. Монгол хэл эх сурвалж; баримт бичиг долуулаа байдаг бол програм хангамж нь монгол, англи хоёроор ирж, үлдсэнийг нь Тохиргоо → Харагдац дотроос асаана. Дэлгэрэнгүйг орчуулгын гарын авлага-аас үзнэ үү.
Монгол
·
العربية
·
中文
·
English
·
Français
·
Русский
·
Español
Баримт бичиг: gerege-systems.github.io/open-gerege-nexus — энэ репод байгаа бүх баримт долоон хэлээр, хайхад хялбар вэб хэлбэрээр.
Хамаарах сервисүүд
Апп стор нь тусдаа репод байрладаг бөгөөд энэ платформ түүнээс каталогоо
гарын үсэгтэйгээр татдаг (APP_CATALOG_URL; тохируулаагүй бол
catalog/apps.json файлаараа ажиллана):
appstore-gerege-mn— registry API ба нээлттэй storefront (appstore.gerege.mn)developer-gerege-nexus— хөгжүүлэгчийн консол (developer.gerege.mn)
Агуулга
- Хөгжүүлэгчид
- Үндсэн боломжууд
- Бэлэн бизнес аппликейшнүүд
- Төслийн бүтэц
- Desktop бүрхүүлүүд
- Ажиллуулах заавар
- Тохиргооны хувьсагчид
- API-н тойм
- Тест ба чанарын хяналт
- Аюулгүй байдал
- Баримт бичгийн индекс
Хөгжүүлэгчид
| Оролцогч | Үүрэг |
|---|---|
| Gerege Systems Development Team (@gerege-systems) | Архитектур, платформын цөм |
| Gemini AI | Код үүсгэлт, баримтжуулалт |
| Claude AI | Код шинжилгээ, аюулгүй байдлын аудит |
Үндсэн боломжууд
1. Өндөр бүтээмжтэй модуль монолит архитектур
- Compile-time Go апп модулиуд — модулиуд (
contacts,products,inventory,billing,documents,sso_clients) нэг бинарид компиллогдож, процесс дотроо дуудагдана. - Тенант бүрийн апп стор — тенант тус бүрийн апп эрх, меню, RBAC тохиргоо
PostgreSQL (
app_installations) дээр динамикаар удирдагдана. - Хамаарал шийдвэрлэх хөдөлгүүр — DAG (Directed Acyclic Graph) дээр тулгуурласан рекурсив шийдвэрлэлт, мөчлөг илрүүлэлт, semver шалгалт.
- Каталог синк —
catalog/apps.jsonнь цорын ганц эх сурвалж;appsхүснэгт ачаалал бүрт үүнээс шинэчлэгдэнэ.
2. Cloud-native тэсвэрлэлтийн хөдөлгүүр
| Модуль | Зориулалт |
|---|---|
resilience/breaker.go |
Google SRE загварын adaptive circuit breaker |
resilience/loadshedder.go |
Ачаалал хэтэрсэн үед 503 + Retry-After |
resilience/singleflight.go |
Давхардсан хүсэлтийг нэгтгэж кэшийн ачаалал бууруулах |
resilience/retry.go |
Экспоненциал ухралттай давталт |
3. Төрийн цахим дэд бүтцийн интеграци
- ХУР — Төрийн мэдээлэл солилцооны систем (
platform/gerege/xyp.go): иргэний бүртгэл (WS100101), хуулийн этгээдийн баталгаажуулалт (WS100201). Клиент нь платформд үлдэж, хэрэглэгчид харагдах нүүр ньapps/egov— лавлагаа, сувгийн төлөв, лавлагааны түүх гурван дэлгэц (/egov). - Үндэсний E-ID ба ДАН (
developer.gerege.mn,eidmongolia.mn) — тоон гарын үсэг (PKI), нэг удаагийн код (Mobile OTP), банкны суваг (Bank SSO), царай танилт (Biometric). - Платформын өөрийн OAuth2 / OIDC provider
(
/.well-known/openid-configuration) — гуравдагч системд client credentials урсгалаар токен олгоно. - Мөн өөр провайдерийн SSO клиент болж чадна (
SSO_CLIENT_ISSUER) — өөр Gerege Nexus суулгац ч байж болно. Хоёр хагас нь бие биеэсээ хамааралгүй: аймгийн суулгац улсын нэгдсэн рүү дээшээ холбогдоод, өөрөө өөр дээрээ суусан аппуудад identity өгсөөр байна. Клиент болсон үед эндэх нэвтрэлт хаагдаж, гарах үед провайдер дээрээс гарч буцаж ирнэ —docs/SSO_FEDERATION.md. - И-мэйл баталгаажуулалт (
platform/emailverify) — хаяг эзэмшлийг батлах нэгдсэн урсгал, платформын бүх апп модуль Go дуудлагаар ашиглана. Захидлыг хостинг үйлчилгээ (enigma.mn) илгээх тул платформ SMTP нууц үг, илгээгчийн хаяг эзэмшихгүй. Хэрэглэгч буцаж ирэхэд баталгаажуулалт бүртгэгдэнэ — буцах утга нэг л удаа ажиллана. Тохиргоо → И-мэйл баталгаажуулалт дотор харагдана.
Анхаар. E-ID / ДАН / ХУР-ын mock горим зөвхөн хөгжүүлэлтийн орчинд ажиллана.
ENVIRONMENT=productionүед mock горим автоматаар унтарч, хуурамч иргэний мэдээллээр нэвтрэх боломжгүй болно.
4. AI Copilot ба бизнес аналитик
- AI туслах (
platform/ai/copilot.go) — тенантын өгөгдлийн сангийн бодит төлөвт холбогдсон, зорилго ангилдаг харилцан яриа. - Агуулахын эрэлт таамаглагч (
platform/ai/inventory_forecaster.go) — түүхэн хөдөлгөөнд тулгуурлан аюулгүйн үлдэгдэл ба дахин захиалгын цэгийг санал болгоно.
Бэлэн бизнес аппликейшнүүд
| # | Апп | 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 ажил.
Ажиллуулах заавар
Шаардлагатай програмууд
- Go 1.26+
- Node.js 20+
- PostgreSQL 16+ (эсвэл Docker Compose)
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
ажиллана:
- Backend ба frontend образыг GHCR руу угсарч илгээнэ (
:latestба:<sha>). docker-compose.prod.yml-ийг серверт хуулна.- Серверт
.env-ийг GitHub secret-ээс шинээр бичиж, образуудыг татна. - Миграц бүрэн дуусмагц API ба frontend солигдоно.
/healthба/ready-г шалгаж, амжилтгүй бол лог хэвлээд алдаа өгнө.
Гараар ажиллуулахдаа Actions → Deploy to Production → Run 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 шалгалтыг ажиллуулна.
Аюулгүй байдал
- Session токен нь 256 бит санамсаргүй утга бөгөөд өгөгдлийн санд зөвхөн SHA-256 хэш нь хадгалагдана.
- Нууц үг bcrypt-ээр хэшлэгдэнэ; нэвтрэх хүсэлтэд IP-д суурилсан хурдны хязгаарлалт үйлчилнэ.
- Апп суулгах, идэвхжүүлэх, интеграц бүртгэх үйлдэл тенантын админ эрх шаардана.
- OAuth2 client танилт тогтмол хугацааны харьцуулалтаар (constant-time) шалгагдана.
Эмзэг байдал мэдээлэх журмыг SECURITY.md-ээс үзнэ үү.
Баримт бичгийн индекс
| Баримт | Тайлбар |
|---|---|
| Баримт бичгийн төв | Бүх баримтын индекс ба орчуулгууд |
| Архитектурын тодорхойлолт | Платформын давхаргууд ба шийдвэрүүд |
| Модуль хөгжүүлэх заавар | Шинэ апп модуль бичих алхмууд |
| Bridge Contract v1 | Native бүрхүүл ба вэб ажлын мужийн гэрээ |
| Хамтран ажиллах заавар | Хувь нэмэр оруулах журам |
| Аюулгүй байдлын бодлого | Эмзэг байдал мэдээлэх |
| Ёс зүйн дүрэм | Хамт олны хэм хэмжээ |
| Өөрчлөлтийн түүх | Хувилбар бүрийн өөрчлөлт |
Ашигласан ба санаа авсан төслүүд
- snykk/go-rest-boilerplate by @snykk — Go REST API суурь архитектур.
- Odoo — модуль апп стор ба хамаарал шийдвэрлэх загвар.
- go-zero — cloud-native resilience хөдөлгүүр.
Лиценз
Copyright (c) 2026 Gerege Systems Development Team, Gemini AI &
Claude AI. Apache 2.0 лицензээр тараагдана — LICENSE-ийг үзнэ үү.
Тугны дүрсийг Flaticon-оос авсан (оруулсан хувь нэмэр).