Read-only mirror of https://github.com/kanton-bern/geo-metadata-engine — Bern. Issues & pull requests at the source.
  • Python 94.6%
  • HTML 2.9%
  • JavaScript 1.6%
  • Dockerfile 0.8%
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
2026-08-25 08:05:27 +02:00
.github/workflows Merge latest develop state into main 2026-08-17 18:33:00 +02:00
deploy chore: bump prod image to main-20260817163315-f3d5964 2026-08-25 08:05:27 +02:00
docs Merge latest develop state into main 2026-08-17 18:33:00 +02:00
editor Merge develop into main (#51) 2026-07-06 14:49:06 +02:00
metadata Merge latest develop state into main 2026-08-17 18:33:00 +02:00
scripts WIP: apply model changes and cleanup 2025-11-13 08:31:08 +01:00
.dockerignore Merge latest develop state into main 2026-08-17 18:33:00 +02:00
.gitignore chore: remove .DS_Store files, fix repo URL and Python version in readme (#3) 2026-03-30 14:39:45 +02:00
CLAUDE.md Merge latest develop state into main 2026-08-17 18:33:00 +02:00
CODE-OF-CONDUCT.md docs: satisfy open-source publication checklist requirements 2026-03-26 11:21:34 +01:00
CONTRIBUTING.md chore: add CONTRIBUTING guidelines. 2026-03-26 10:39:50 +01:00
Dockerfile Merge develop into main (#51) 2026-07-06 14:49:06 +02:00
LICENSE chore: add BSD 3-Clause License 2026-03-26 10:40:45 +01:00
manage.py feat: initial commit 2025-03-26 15:14:57 +01:00
README.md build: add .dockerignore and require --env-file when running the image 2026-06-16 07:35:49 +02:00
requirements.txt build: pin dependencies to latest versions and add django-auth-adfs 2026-06-16 07:35:49 +02:00
THIRD-PARTY-LICENSES.md docs: satisfy open-source publication checklist requirements 2026-03-26 11:21:34 +01:00

GEO Metadata Engine

metadata

Open-source metadata management platform for the WIS-BE project of the Bereich Geoinformation, Amt für Wald und Naturgefahren, Canton of Bern. It provides a structured way to capture, manage, and retrieve geospatial metadata through a web-based admin interface.

GEO Metadata Engine is open-source software, licensed under the BSD 3-Clause License.

Key Features

  • Manage geospatial metadata (topics, geo packages, layers, attributes, value tables) via a Django admin interface
  • Hierarchical data model: Thema → Geopäckli → Ebene / Attribut / Wertetabelle
  • Bilingual support (German / French)
  • PostgreSQL backend with full migration history

Development Status

The application is production-ready. The remaining open item is ADFS (Active Directory Federation Services) authentication support.

Demo

No public demo instance is currently available.

Contact

The technical contact for GEO Metadata Engine is Pascal Ehrler of the Bereich Geoinformation, Amt für Wald und Naturgefahren, Canton of Bern.

Project owner: Kanton Bern Amt für Wald und Naturgefahren Abteilung Fachdienste und Ressourcen Bereich Geoinformation

Using GEO Metadata Engine

Prerequisites

To run this project, we recommend the conda package manager. See the conda documentation for installation instructions.

Installation

Clone the repository:

git clone https://github.com/kanton-bern/geo-metadata-engine.git
cd geo-metadata-engine

Create and activate a virtual environment:

conda create -n bgi_metadata python=3.14
conda activate bgi_metadata

Install dependencies:

conda install --yes --file requirements.txt

Create a .env file in the project root:

SECRET_KEY=<your Django secret key>
DEBUG=<True for development, False for production>
DB_HOST=<hostname of your PostgreSQL server>
DB_NAME=<name of your PostgreSQL database>
DB_USER=<PostgreSQL user>
DB_PASSWORD=<PostgreSQL password>
DB_PORT=<PostgreSQL port, typically 5432>

Apply migrations and create an admin user:

python manage.py migrate
python manage.py createsuperuser

Start the development server:

python manage.py runserver

Open http://localhost:8000/ in your browser.

Docker

A Dockerfile is available for containerised deployments.

# Build the image
docker build -t geo_metadata_engine .

# Run the container
# --env-file .env passes the runtime configuration (SECRET_KEY, DB_*, etc.) into
# the container. It is required: the image does not bundle .env (see .dockerignore),
# so without it Django has no settings and gunicorn workers hang/time out.
# --network=host is required on Linux so the container can reach the PostgreSQL
# instance running on the host machine (localhost inside the container refers
# to the container itself, not the host).
docker run -d --network=host --env-file .env geo_metadata_engine

Contributing to GEO Metadata Engine

Please read the following documents before contributing:

Contributors

(in alphabetical order)

Third-Party Licenses

See THIRD-PARTY-LICENSES.md for a list of open-source libraries used by this project.