Dokumentasi

Spesifikasi Teknis

Diperbarui 20 Juli 2026

Spesifikasi Teknis

Halaman ini ditujukan untuk Admin, IT, dan pengembang yang memerlukan detail teknis implementasi geoMDB-hub.

Stack Teknologi

KomponenTeknologi
FrameworkNext.js (App Router) — server-side rendering + API routes
DatabasePostgreSQL 15+
ORMPrisma 7.x
Object StorageMinIO (kompatibel S3) — penyimpanan PDF
Cache / Rate LimitingRedis (via CacheService)
Tanda Tangan Digitalnode-signpdf (PKI), BSRE API (TTE BSSN)
PDF Generation@react-pdf/renderer
CSW ProviderBuilt-in (custom) atau pycsw (Docker)
AuthSession-based, cookie HTTP-only
LisensiAGPL-3.0

Standar Metadata yang Diimplementasikan

StandarVersiImplementasi
ISO 19115-12014Model data internal (elemen inti)
SNI ISO 19115-32016Ekspor XML MDB (format utama)
ISO 19115-32018Ekspor XML MDB 2018
ISO 191392007Ekspor XML GMD (legacy, kompatibilitas luas)
ISO 191572013Elemen kualitas data (DQ) untuk QC/QE
OGC CSW2.0.2Layanan katalog (GetCapabilities, GetRecords, GetRecordById)
Dublin Core1.1Output schema alternatif untuk CSW

Format Ekspor XML

FormatSlugSkemaKeterangan
GMDgmdhttp://www.isotc211.org/2005/gmdLegacy, dukungan GIS paling luas
MDB 2016mdb2016SNI ISO 19115-3:2016Default, format nasional
MDB 2018mdb2018ISO 19115-3:2018Internasional terbaru
XSLTCustom via Saxon-JSHanya bila XSLT dikonfigurasi Admin

Batas & Kuota

ItemBatas
Upload dokumen (QC/QE/QA/SPD)10 MB per file (PDF)
Upload logo instansi5 MB (PNG/JPG/SVG)
Upload sertifikat PKI2 MB (.p12/.pfx)
Kata kunci per metadataTidak dibatasi
Kontak per metadataTidak dibatasi
Paginasi CSW GetRecordsMaks. 500 record
Rate limit verify20 req/menit/IP

Format Token

TokenAlgoritmaPanjangTTL
Token konfirmasi atasanHMAC-SHA256 → base64url43 karakter14 hari
Token verifikasi TTEHMAC-SHA256 → base64url43 karakterPermanen
OTP login6 digit numerik6 karakter~5 menit
Reset passwordUUID v436 karakter1 jam

Variabel Environment Utama

VariabelKeteranganWajib
DATABASE_URLPostgreSQL connection string
REDIS_URLRedis connection string (rate limiting, cache)
MINIO_ENDPOINTMinIO/S3 endpoint
MINIO_ACCESS_KEYMinIO access key
MINIO_SECRET_KEYMinIO secret key
MINIO_BUCKETNama bucket MinIO
SESSION_SECRETSecret untuk enkripsi session
HMAC_SECRETSecret untuk generasi token HMAC
SYSTEM_CERT_P12_PATHPath file sertifikat PKI sistemOpsional
SYSTEM_CERT_PASSWORDPassphrase sertifikat PKI sistemOpsional
NEXT_PUBLIC_APP_URLURL publik aplikasi (untuk link email, QR)
NEXT_PUBLIC_BASE_PATHBase path bila deploy di sub-pathOpsional
EXT_SERV_URLURL layanan eksternal (email/WA sender)Opsional

Arsitektur Direktori (Utama)

src/
  app/
    (app)/          — halaman dashboard (requires login)
    (auth)/         — halaman login/register
    api/            — API routes Next.js
    dokumentasi/    — halaman dokumentasi publik
    katalog/        — halaman katalog publik
    verify/         — halaman verifikasi TTE
  lib/
    auth.ts         — session management
    db.ts           — Prisma client
    notify/         — email & WA notification
    pdf/            — PDF generation
    sign/           — PKI, BSRE, auto-sign, token
    verify-data.ts  — logic verifikasi TTE
  repositories/     — data access layer
  services/         — business logic services
  components/       — shared UI components
prisma/
  schema.prisma     — database schema
  seed-docs.ts      — source dokumentasi (update via db:seed:docs)

Konfigurasi CSP (Content Security Policy)

Header CSP dikonfigurasi untuk mencegah XSS. Kunci:

  • default-src 'self'
  • Script hanya dari domain sendiri + nonce untuk inline scripts Next.js
  • Image dari domain sendiri + data URIs (thumbnail)
  • Koneksi API ke domain sendiri + CDN yang diizinkan

Deployment

Aplikasi mendukung deployment sebagai:

  • Standalone Next.js (output: 'standalone') — single process, deploy via PM2/Docker
  • Docker Compose — stack lengkap (app + PostgreSQL + MinIO + Redis + pycsw opsional)

Lihat deploy.sh dan docker-compose.yml di repositori untuk detail deployment.