Gottesanbeterin Gesucht

An interactive web application to track Mantis Religiosa sightings in Brandenburg.
https://github.com/opendata-apps/mantis

Category: Biosphere
Sub Category: Biodiversity Citizen Science

Keywords

brandenburg flask gottesanbeterin mantis mantis-religiosa nature open-data open-data-science opendata postgresql public-science

Last synced: 3 days ago
JSON representation

Repository metadata

READONLY COPY (https://gitlab.com/opendata-apps/mantis) | An interactive web application to track Mantis Religiosa sightings in Brandenburg.

README.md

🦗 Gottesanbeterin Gesucht (Mantis Tracker)

Project header

Mantis Tracker is a Flask web application for collecting, reviewing, and
publishing sightings of the European mantis (Mantis religiosa).

Project website: gottesanbeterin-gesucht.de

Features

  • Public multi-step report form (/melden)
  • Reviewer workflow for quality control (/reviewer)
  • Public map and statistics for accepted reports (/auswertungen, /statistik)
  • Image upload pipeline with WebP storage
  • PostgreSQL full-text search and export tools for reviewers

Quick Start (Container)

Prerequisites:

cp .env.example .env
# Set a secure SECRET_KEY, e.g.:
# python -c "import secrets; print(secrets.token_hex(32))"

just up --build

App URL: http://localhost:5000

Useful commands:

just down
just logs
just shell
just db
just migrate
just seed
just prod --build
just prod-down

Local Development (No Container)

Prerequisites:

  • Python 3.13+
  • uv
  • bun
  • PostgreSQL 16+
cp .env.example .env
uv sync --extra dev
bun install

Create databases:

CREATE USER mantis_user WITH PASSWORD 'mantis' CREATEDB;
CREATE DATABASE mantis_tracker OWNER mantis_user;

Run migrations and seed base data:

uv run flask db upgrade
uv run flask create_all_data_view
uv run flask seed
# optional demo data:
uv run flask seed --demo

Start app:

uv run python run.py

run.py starts Flask and the frontend watcher (bun run watch).

Reviewer quick login (local dev): http://localhost:5000/reviewer/9999

Architecture (Short)

Browser
  |
  v
Flask App (Blueprints)
  |         \
  v          v
PostgreSQL   app/datastore (WebP)
  ^
  |
Vite Build (app/static/build + manifest)

Core areas:

  • app/routes/: HTTP endpoints (main, report, data, statistics, provider, admin, regionen)
  • app/database/: SQLAlchemy models, materialized view, seed/populate logic
  • app/tools/: domain utilities (coordinates, MTB, mail, Vite helpers)
  • migrations/: Alembic migrations

Quality and Tests

uv run ruff check .
uv run pyright
uv run pytest
uv run pytest -m unit
uv run pytest --cov=app --cov-report=term-missing

Tests use a separate PostgreSQL database: mantis_tester.

Documentation

Build docs:

uv sync --extra docs
make -C docs html

Strict docs check:

uv run sphinx-build -W --keep-going -b html docs /tmp/mantis-docs-build

Main docs entry points:

  • docs/index.rst
  • docs/userinterface/index.rst
  • docs/develop/index.rst

Project Structure

mantis/
├── app/
│   ├── routes/
│   ├── database/
│   ├── templates/
│   ├── static/
│   └── tools/
├── docs/
├── infrastructure/
├── migrations/
└── tests/

License

MIT, see LICENCE.md.


Owner metadata


GitHub Events

Total
Last Year

Committers metadata

Last synced: about 1 month ago

Total Commits: 1,403
Total Committers: 19
Avg Commits per committer: 73.842
Development Distribution Score (DDS): 0.365

Commits in past year: 355
Committers in past year: 3
Avg Commits per committer in past year: 118.333
Development Distribution Score (DDS) in past year: 0.144

Name Email Commits
LeonKohli 9****i 891
PeterK p****r@k****m 326
PeterK g****b@k****m 52
Willi w****4@g****m 31
CA c****h@g****m 21
SignumGG l****n@w****e 15
Magic-Burkhard j****2@g****m 15
Dreyex m****f@g****e 14
Janneck 4****d 11
jeremys.social 7****l 8
Tanyaa Tanyaa c****1@g****m 5
m4rt1ni k****n@g****m 5
Lukas l****l@z****e 2
Luca y****r@g****m 2
user608 u****8@s****e 1
user606 u****6@s****e 1
PeterK p****r@t****e 1
Peter Koppatz p****z@t****e 1
Daniel Ruttloff m****5@g****t 1

Committer domains:


Issue and Pull Request metadata

Last synced: 11 months ago

Total issues: 1
Total pull requests: 8
Average time to close issues: about 22 hours
Average time to close pull requests: 2 minutes
Total issue authors: 1
Total pull request authors: 1
Average comments per issue: 4.0
Average comments per pull request: 1.0
Merged pull request: 0
Bot issues: 0
Bot pull requests: 8

Past year issues: 0
Past year pull requests: 0
Past year average time to close issues: N/A
Past year average time to close pull requests: N/A
Past year issue authors: 0
Past year pull request authors: 0
Past year average comments per issue: 0
Past year average comments per pull request: 0
Past year merged pull request: 0
Past year bot issues: 0
Past year bot pull requests: 0

More stats: https://issues.ecosyste.ms/repositories/lookup?url=https://github.com/opendata-apps/mantis

Top Issue Authors

  • Primajin (1)

Top Pull Request Authors

  • dependabot[bot] (15)

Top Issue Labels

Top Pull Request Labels

  • dependencies (15)

Package metadata

proxy.golang.org: github.com/opendata-apps/mantis

  • Homepage:
  • Documentation: https://pkg.go.dev/github.com/opendata-apps/mantis#section-documentation
  • Licenses: other
  • Latest release: v1.1.0 (published 3 months ago)
  • Last Synced: 2026-06-29T13:32:40.470Z (about 1 month ago)
  • Versions: 21
  • Dependent Packages: 0
  • Dependent Repositories: 0
  • Rankings:
    • Dependent packages count: 5.395%
    • Average: 5.576%
    • Dependent repos count: 5.758%

Dependencies

package-lock.json npm
  • 290 dependencies
package.json npm
  • @tailwindcss/aspect-ratio ^0.4.2 development
  • @tailwindcss/forms ^0.5.3 development
  • flowbite ^1.6.6
  • tailwind ^4.0.0
  • tailwindcss ^3.3.3
docs/develop/files/requirements.txt pypi
  • Babel ==2.12.1 development
  • Flask ==2.2.3 development
  • Flask-Migrate ==4.0.4 development
  • Flask-SQLAlchemy ==3.0.3 development
  • Flask-Testing ==0.8.1 development
  • Flask-WTF ==1.1.1 development
  • Jinja2 ==3.1.2 development
  • Mako ==1.2.4 development
  • MarkupSafe ==2.1.2 development
  • Pillow ==9.5.0 development
  • PySocks ==1.7.1 development
  • Pygments ==2.15.1 development
  • SQLAlchemy ==2.0.7 development
  • Sphinx ==7.0.1 development
  • WTForms ==3.0.1 development
  • Werkzeug ==2.2.3 development
  • XlsxWriter ==3.1.2 development
  • alabaster ==0.7.13 development
  • alembic ==1.10.2 development
  • appdirs ==1.4.4 development
  • async-generator ==1.10 development
  • attrs ==23.1.0 development
  • blinker ==1.6.2 development
  • cattrs ==22.2.0 development
  • certifi ==2023.5.7 development
  • charset-normalizer ==3.1.0 development
  • click ==8.1.3 development
  • colorama ==0.4.6 development
  • coverage ==7.2.5 development
  • dnspython ==2.3.0 development
  • docutils ==0.20 development
  • email-validator ==2.0.0.post2 development
  • esbonio ==0.16.1 development
  • et-xmlfile ==1.1.0 development
  • exceptiongroup ==1.1.1 development
  • greenlet ==2.0.2 development
  • gunicorn ==20.1.0 development
  • h11 ==0.14.0 development
  • idna ==3.4 development
  • imagesize ==1.4.1 development
  • iniconfig ==2.0.0 development
  • itsdangerous ==2.1.2 development
  • lsprotocol ==2023.0.0a1 development
  • numpy ==1.24.3 development
  • openpyxl ==3.1.2 development
  • outcome ==1.2.0 development
  • packaging ==23.1 development
  • pandas ==2.0.1 development
  • pluggy ==1.0.0 development
  • psycopg2-binary ==2.9.6 development
  • pygls ==1.0.2 development
  • pyspellchecker ==0.7.2 development
  • pytest ==7.3.1 development
  • pytest-cov ==4.0.0 development
  • pytest-cover ==3.0.0 development
  • pytest-coverage ==0.0 development
  • pytest-flask ==1.2.0 development
  • python-dateutil ==2.8.2 development
  • python-dotenv ==1.0.0 development
  • pytz ==2023.3 development
  • requests ==2.30.0 development
  • selenium ==4.9.1 development
  • six ==1.16.0 development
  • sniffio ==1.3.0 development
  • snowballstemmer ==2.2.0 development
  • sortedcontainers ==2.4.0 development
  • sphinxcontrib-applehelp ==1.0.4 development
  • sphinxcontrib-devhelp ==1.0.2 development
  • sphinxcontrib-htmlhelp ==2.0.1 development
  • sphinxcontrib-jsmath ==1.0.1 development
  • sphinxcontrib-qthelp ==1.0.3 development
  • sphinxcontrib-serializinghtml ==1.1.5 development
  • tqdm ==4.65.0 development
  • trio ==0.22.0 development
  • trio-websocket ==0.10.2 development
  • typeguard ==3.0.2 development
  • typing_extensions ==4.5.0 development
  • tzdata ==2023.3 development
  • urllib3 ==2.0.2 development
  • webdriver-manager ==3.8.6 development
  • wsproto ==1.2.0 development
docs/requirements.txt pypi
  • Babel ==2.12.1
  • Jinja2 ==3.1.2
  • MarkupSafe ==2.1.2
  • Pygments ==2.15.1
  • Sphinx ==6.2.1
  • alabaster ==0.7.13
  • certifi ==2023.5.7
  • charset-normalizer ==3.1.0
  • docutils ==0.18.1
  • idna ==3.4
  • imagesize ==1.4.1
  • packaging ==23.1
  • requests ==2.30.0
  • snowballstemmer ==2.2.0
  • sphinx-rtd-theme ==1.2.0
  • sphinxcontrib-applehelp ==1.0.4
  • sphinxcontrib-devhelp ==1.0.2
  • sphinxcontrib-htmlhelp ==2.0.1
  • sphinxcontrib-jquery ==4.1
  • sphinxcontrib-jsmath ==1.0.1
  • sphinxcontrib-qthelp ==1.0.3
  • sphinxcontrib-serializinghtml ==1.1.5
  • urllib3 ==2.0.2
requirements.txt pypi
  • Babel ==2.13.1
  • Flask ==3.0.0
  • Flask-Migrate ==4.0.5
  • Flask-SQLAlchemy ==3.1.1
  • Flask-Testing ==0.8.1
  • Flask-WTF ==1.2.1
  • Jinja2 ==3.1.2
  • Mako ==1.3.0
  • MarkupSafe ==2.1.3
  • Pillow ==10.1.0
  • PySocks ==1.7.1
  • Pygments ==2.17.2
  • SQLAlchemy ==2.0.23
  • Sphinx ==7.2.6
  • WTForms ==3.1.1
  • Werkzeug ==3.0.1
  • XlsxWriter ==3.1.9
  • alabaster ==0.7.13
  • alembic ==1.12.1
  • appdirs ==1.4.4
  • async-generator ==1.10
  • attrs ==23.1.0
  • blinker ==1.7.0
  • cattrs ==23.2.3
  • certifi ==2023.11.17
  • charset-normalizer ==3.3.2
  • click ==8.1.7
  • colorama ==0.4.6
  • coverage ==7.3.2
  • dnspython ==2.4.2
  • docutils ==0.20.1
  • email-validator ==2.1.0.post1
  • esbonio ==0.16.3
  • et-xmlfile ==1.1.0
  • exceptiongroup ==1.2.0
  • greenlet ==3.0.1
  • gunicorn ==21.2.0
  • h11 ==0.14.0
  • idna ==3.6
  • imagesize ==1.4.1
  • iniconfig ==2.0.0
  • itsdangerous ==2.1.2
  • lsprotocol ==2023.0.0
  • numpy ==1.26.2
  • openpyxl ==3.1.2
  • outcome ==1.3.0.post0
  • packaging ==23.2
  • pandas ==2.1.3
  • platformdirs ==4.0.0
  • pluggy ==1.3.0
  • psycopg2-binary ==2.9.9
  • pygls ==1.2.1
  • pyspellchecker ==0.7.2
  • pytest ==7.4.3
  • pytest-cov ==4.1.0
  • pytest-cover ==3.0.0
  • pytest-coverage ==0.0
  • pytest-flask ==1.3.0
  • python-dateutil ==2.8.2
  • python-dotenv ==1.0.0
  • pytz ==2023.3.post1
  • requests ==2.31.0
  • selenium ==4.15.2
  • setuptools ==69.0.2
  • six ==1.16.0
  • sniffio ==1.3.0
  • snowballstemmer ==2.2.0
  • sortedcontainers ==2.4.0
  • sphinxcontrib-applehelp ==1.0.7
  • sphinxcontrib-devhelp ==1.0.5
  • sphinxcontrib-htmlhelp ==2.0.4
  • sphinxcontrib-jsmath ==1.0.1
  • sphinxcontrib-qthelp ==1.0.6
  • sphinxcontrib-serializinghtml ==1.1.9
  • tqdm ==4.66.1
  • trio ==0.23.1
  • trio-websocket ==0.11.1
  • typeguard ==4.1.5
  • typing_extensions ==4.8.0
  • tzdata ==2023.3
  • urllib3 ==2.1.0
  • webdriver-manager ==4.0.1
  • wsproto ==1.2.0

Score: -Infinity