# impanyu/adma_geonode_adapted architecture

> Architecture diagram of the GitHub repository impanyu/adma_geonode_adapted, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-25). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/impanyu/adma_geonode_adapted
- Repository: https://github.com/impanyu/adma_geonode_adapted
- Video tour (about a minute): https://gitdiagram.com/impanyu/adma_geonode_adapted/video

## Overview

This repository is a customized GeoNode/Django project template for an agricultural data portal, with ADMA branding and Docker-oriented configuration. The main user workflow is browser access to the Django site, which uses project URL and template customization to present GeoNode’s portal; GeoNode’s geospatial capabilities rely on GeoServer and PostGIS. Celery is registered as an internal asynchronous-work layer. The sampled source shows project setup and integration settings, but not GeoNode’s internal request handlers or data operations, so those links are intentionally high-level.

Main entry points: [`src/adma_geonode_project/settings.py`](https://github.com/impanyu/adma_geonode_adapted/blob/main/src/adma_geonode_project/settings.py) (Django settings), [`src/tasks.py`](https://github.com/impanyu/adma_geonode_adapted/blob/main/src/tasks.py) (Runtime task configuration), [`src/adma_geonode_project/wsgi.py`](https://github.com/impanyu/adma_geonode_adapted/blob/main/src/adma_geonode_project/wsgi.py) (WSGI entry), [`src/adma_geonode_project/urls.py`](https://github.com/impanyu/adma_geonode_adapted/blob/main/src/adma_geonode_project/urls.py) (Project routes)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_web["Portal web layer"]
  node_wsgi["WSGI entry<br/>[wsgi.py]"]
  node_settings["Django settings<br/>[settings.py]"]
  node_routes["Project routes<br/>[urls.py]"]
  node_templates["Portal templates"]
  node_theme["Branding assets"]
  node_mapconfig["MapStore config"]
end

subgraph group_geo["Geospatial platform"]
  node_geonode["GeoNode platform"]
  node_geoserver["GeoServer"]
end

subgraph group_state["Data and jobs"]
  node_postgres[("PostGIS databases")]
  node_celery["Celery app<br/>[celeryapp.py]"]
  node_apphooks["App setup hooks<br/>[apps.py]"]
end

subgraph group_ops["Runtime configuration"]
  node_envbuilder["Environment generator<br/>[create-envfile.py]"]
  node_taskconfig["Runtime task configuration<br/>[tasks.py]"]
  node_envsample["Environment template<br/>[.env.sample]"]
  node_nginx["Web proxy"]
end

node_visitor(("Portal user"))

node_visitor -->|"requests portal"| node_nginx
node_nginx -->|"forwards requests"| node_wsgi
node_wsgi -->|"loads settings"| node_settings
node_settings -->|"selects routes"| node_routes
node_routes -->|"routes portal requests"| node_geonode
node_geonode -->|"renders overrides"| node_templates
node_geonode -->|"serves assets"| node_theme
node_geonode -->|"uses map config"| node_mapconfig
node_settings -->|"extends platform settings"| node_geonode
node_geonode -.->|"geospatial integration"| node_geoserver
node_geonode -.->|"database integration"| node_postgres
node_apphooks -->|"registers app"| node_celery
node_celery -->|"loads configuration"| node_settings
node_envbuilder -->|"fills template"| node_envsample
node_taskconfig -.->|"configures database access"| node_postgres
node_taskconfig -.->|"configures service access"| node_geoserver

click node_wsgi "https://github.com/impanyu/adma_geonode_adapted/blob/main/src/adma_geonode_project/wsgi.py"
click node_settings "https://github.com/impanyu/adma_geonode_adapted/blob/main/src/adma_geonode_project/settings.py"
click node_routes "https://github.com/impanyu/adma_geonode_adapted/blob/main/src/adma_geonode_project/urls.py"
click node_templates "https://github.com/impanyu/adma_geonode_adapted/tree/main/src/adma_geonode_project/templates"
click node_theme "https://github.com/impanyu/adma_geonode_adapted/tree/main/src/adma_geonode_project/static"
click node_mapconfig "https://github.com/impanyu/adma_geonode_adapted/blob/main/src/adma_geonode_project/templates/geonode-mapstore-client/_geonode_config.html"
click node_celery "https://github.com/impanyu/adma_geonode_adapted/blob/main/src/adma_geonode_project/celeryapp.py"
click node_apphooks "https://github.com/impanyu/adma_geonode_adapted/blob/main/src/adma_geonode_project/apps.py"
click node_envbuilder "https://github.com/impanyu/adma_geonode_adapted/blob/main/create-envfile.py"
click node_taskconfig "https://github.com/impanyu/adma_geonode_adapted/blob/main/src/tasks.py"
click node_envsample "https://github.com/impanyu/adma_geonode_adapted/blob/main/.env.sample"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_wsgi,node_settings,node_routes,node_templates,node_theme,node_mapconfig,node_visitor toneBlue
class node_geonode,node_geoserver toneAmber
class node_postgres,node_celery,node_apphooks toneMint
class node_envbuilder,node_taskconfig,node_envsample,node_nginx toneRose
```

## Components

### Portal web layer

- [WSGI entry](https://github.com/impanyu/adma_geonode_adapted/blob/main/src/adma_geonode_project/wsgi.py): `src/adma_geonode_project/wsgi.py`
- [Django settings](https://github.com/impanyu/adma_geonode_adapted/blob/main/src/adma_geonode_project/settings.py): `src/adma_geonode_project/settings.py`
- [Project routes](https://github.com/impanyu/adma_geonode_adapted/blob/main/src/adma_geonode_project/urls.py): `src/adma_geonode_project/urls.py`
- [Portal templates](https://github.com/impanyu/adma_geonode_adapted/tree/main/src/adma_geonode_project/templates): `src/adma_geonode_project/templates`
- [Branding assets](https://github.com/impanyu/adma_geonode_adapted/tree/main/src/adma_geonode_project/static): `src/adma_geonode_project/static`
- [MapStore config](https://github.com/impanyu/adma_geonode_adapted/blob/main/src/adma_geonode_project/templates/geonode-mapstore-client/_geonode_config.html): `src/adma_geonode_project/templates/geonode-mapstore-client/_geonode_config.html`

### Geospatial platform

- **GeoNode platform**
- **GeoServer**

### Data and jobs

- **PostGIS databases**
- [Celery app](https://github.com/impanyu/adma_geonode_adapted/blob/main/src/adma_geonode_project/celeryapp.py): `src/adma_geonode_project/celeryapp.py`
- [App setup hooks](https://github.com/impanyu/adma_geonode_adapted/blob/main/src/adma_geonode_project/apps.py): `src/adma_geonode_project/apps.py`

### Runtime configuration

- [Environment generator](https://github.com/impanyu/adma_geonode_adapted/blob/main/create-envfile.py): `create-envfile.py`
- [Runtime task configuration](https://github.com/impanyu/adma_geonode_adapted/blob/main/src/tasks.py): `src/tasks.py`
- [Environment template](https://github.com/impanyu/adma_geonode_adapted/blob/main/.env.sample): `.env.sample`
- **Web proxy**

### Other components

- **Portal user**

## Connections

- Portal user → Web proxy: requests portal
- Web proxy → WSGI entry: forwards requests
- WSGI entry → Django settings: loads settings
- Django settings → Project routes: selects routes
- Project routes → GeoNode platform: routes portal requests
- GeoNode platform → Portal templates: renders overrides
- GeoNode platform → Branding assets: serves assets
- GeoNode platform → MapStore config: uses map config
- Django settings → GeoNode platform: extends platform settings
- GeoNode platform → GeoServer: geospatial integration
- GeoNode platform → PostGIS databases: database integration
- App setup hooks → Celery app: registers app
- Celery app → Django settings: loads configuration
- Environment generator → Environment template: fills template
- Runtime task configuration → PostGIS databases: configures database access
- Runtime task configuration → GeoServer: configures service access
