UNEP
SDG 632
GEMS
Open Source
Amir Yousefi
M.Sc. Geoscience
B.Sc. Ressource Management
Software Developer
Consultant for IT & Hydrology
The system had to meet both technical and domain-specific standards:
| Category | Requirement |
|---|---|
| Development | Best practices for software development |
| Compliance | Integrate stakeholder & compliance requirements |
| Standards | Geoinformation standards (OGC, GEOS) |
| Architecture | Decentralized architecture |
| Operations | Cross-platform operation |
| Integration | Increase interoperability with other systems |
| Maintenance | Maintainable codebase |
A way to rapidly generate maintainable, standards-compliant backends without starting from scratch each time.
Break Complicated → Complex → Simple Chunks
Build backends from data schemas (user-defined)
Base functionality around a Deployment model
Versioning independent of any platform; zip-based deployment options
Organization
└── Project
├── Application
├── Domain
├── Namespace
└── Deployment
MCP server communicates with OpenAPI REST framework. Backend hosts flatpages for user-defined instructions and documentation.
Cluster setup for open-source software testing. Collected solutions and analyzed dependencies.
Recognized bottlenecks → development process is highly inefficient per organization. Recurring problems needed automation:
Complicated → Complex → Simple Chunks → Reorganize to Complex → Bundle
Define Django models as JSON — fields, data types, parent classes, serializers, and viewsets. No Django boilerplate code needed. From schema → full REST API + admin + Swagger in one click.
Entity–Attribute–Value handles sparse, user-defined, and evolving data schemas at runtime — exactly what CSV, XML, and database schemas need without fixed design.
Every deployment produces: cli.sh helm argocd Dockerfile docker-compose.yaml — ready to spin up anywhere.
Programmatic creation and management of organizations and repositories — versioned independently of any platform, with zip-based deployment.
PyPI packages for specialized domains: django-sensorthings django-hydrosheds django-ct-ontology — reuse without reinventing infrastructure standards.
Multi-tenant hierarchy: Organization → Project (app, domain, namespace) → standalone or bundled zip downloads at every level.
Write a system that writes a system -> MONOTREMATA
The Monotremata. Our software solution design is inspired by these lovely creatures. That's why we named our package after it. It symbolizes that a system can consist of the best solutions that are available across species.
picture and diagram from: https://ihp-itp.blogspot.com/2019/10/monotremata-ordo-mamalia-bertelur.html
The generated backend exposes a REST API with these core endpoints:
| Endpoint | Purpose |
|---|---|
|
🌏
GET /domain/ |
Logical grouping / metadata namespace |
|
🌐
GET /namespace/ |
Npaces tied to domains |
|
🧭
GET /organization/ |
Top-level organization container |
|
📑
GET /document/ |
document upload, download, process schema |
|
🦦
GET /project/ |
Projects with apps and domain config |
|
🦫
GET /application/ |
Application definitions |
|
🦔
GET /presetmodel/ |
Declarative model definitions (className, classParent, fields) |
|
🦆
GET /presetmodelfield/ |
Model fields (CharField, JSONField, GeometryField, etc.) |
|
🥚
GET /deployment/ |
Deploy records (auth required) |
django-sensorthings →
django-hydrosheds →
django-ct-ontology
setup, git, parserQuick live demonstration of the deployed software stack:
Let me show you the deployed system in action
The stack runs Monotremata as the parent backend with child backends generated
from deployment configs, all managed through ArgoCD on Kubernetes, source-controlled in Forgejo.
Thank you!
Questions?