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: about 15 hours 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: 8 days ago

Total Commits: 1,443
Total Committers: 19
Avg Commits per committer: 75.947
Development Distribution Score (DDS): 0.355

Commits in past year: 353
Committers in past year: 3
Avg Commits per committer in past year: 117.667
Development Distribution Score (DDS) in past year: 0.133

Name Email Commits
LeonKohli 9****i 931
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: 1 day ago

Total issues: 1
Total pull requests: 15
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: 0.53
Merged pull request: 0
Bot issues: 0
Bot pull requests: 15

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


Dependencies

Dockerfile docker
  • docker.io/oven/bun 1 build
  • docker.io/python 3.13-slim build
uv.lock pypi
  • alabaster 1.0.0
  • alembic 1.18.4
  • babel 2.18.0
  • beautifulsoup4 4.14.3
  • blinker 1.9.0
  • certifi 2026.1.4
  • charset-normalizer 3.4.4
  • click 8.3.1
  • colorama 0.4.6
  • coverage 7.13.4
  • deprecated 1.3.1
  • dnspython 2.8.0
  • docutils 0.22.4
  • email-validator 2.3.0
  • flask 3.1.3
  • flask-favicon 0.1.4
  • flask-limiter 4.1.1
  • flask-mail 0.10.0
  • flask-migrate 4.1.0
  • flask-sqlalchemy 3.1.1
  • flask-wtf 1.2.2
  • geographiclib 2.1
  • geopy 2.4.1
  • greenlet 3.3.2
  • gunicorn 25.1.0
  • heroicons 2.13.0
  • idna 3.11
  • imagesize 1.4.1
  • iniconfig 2.3.0
  • itsdangerous 2.2.0
  • jinja2 3.1.6
  • limits 5.8.0
  • mako 1.3.10
  • mantis 1.1.0
  • markupsafe 3.0.3
  • nodeenv 1.10.0
  • numpy 2.4.2
  • ordered-set 4.1.0
  • packaging 26.0
  • pillow 12.1.1
  • pluggy 1.6.0
  • psycopg 3.3.3
  • psycopg-binary 3.3.3
  • pygments 2.19.2
  • pyright 1.1.408
  • pytest 9.0.2
  • pytest-cov 7.0.0
  • python-dateutil 2.9.0.post0
  • python-dotenv 1.2.1
  • pytz 2025.2
  • pyyaml 6.0.3
  • requests 2.32.5
  • roman-numerals 4.1.0
  • ruff 0.15.2
  • shapely 2.1.2
  • six 1.17.0
  • snowballstemmer 3.0.1
  • soupsieve 2.8.3
  • sphinx 9.1.0
  • sphinx-rtd-theme 3.1.0
  • sphinxcontrib-applehelp 2.0.0
  • sphinxcontrib-devhelp 2.0.0
  • sphinxcontrib-htmlhelp 2.1.0
  • sphinxcontrib-jquery 4.1
  • sphinxcontrib-jsmath 1.0.1
  • sphinxcontrib-qthelp 2.0.0
  • sphinxcontrib-serializinghtml 2.0.0
  • sqlalchemy 2.0.46
  • sqlalchemy-utils 0.42.1
  • svgwrite 1.4.3
  • typing-extensions 4.15.0
  • tzdata 2025.3
  • urllib3 2.6.3
  • werkzeug 3.1.6
  • wrapt 2.1.1
  • wtforms 3.2.1
  • xlsxwriter 3.2.9
pyproject.toml pypi
  • alembic >=1.16.2
  • beautifulsoup4 >=4.14.3
  • blinker >=1.9.0
  • click >=8.2.1
  • email-validator >=2.2.0
  • flask >=3.1.1
  • flask-favicon >=0.1.4
  • flask-limiter >=3.12
  • flask-mail >=0.10.0
  • flask-migrate >=4.1.0
  • flask-sqlalchemy >=3.1.1
  • flask-wtf >=1.2.2
  • geopy >=2.4.1
  • gunicorn >=23.0.0
  • heroicons [jinja]>=2.11.0
  • jinja2 >=3.1.6
  • mako >=1.3.10
  • pillow >=11.2.1
  • psycopg [binary]>=3.2
  • python-dateutil >=2.9.0.post0
  • python-dotenv >=1.1.0
  • pytz >=2025.2
  • pyyaml >=6.0
  • requests >=2.32.4
  • shapely >=2.1.1
  • sqlalchemy >=2.0.41
  • svgwrite >=1.4.3
  • werkzeug >=3.1.3
  • wtforms >=3.2.1
  • xlsxwriter >=3.2.5
bun.lock npm
  • 141 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

Score: -Infinity