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.
- Host: GitHub
- URL: https://github.com/opendata-apps/mantis
- Owner: opendata-apps
- License: other
- Created: 2024-01-24T11:48:32.000Z (over 2 years ago)
- Default Branch: main
- Last Pushed: 2026-06-21T18:21:48.000Z (about 2 months ago)
- Last Synced: 2026-06-21T20:11:33.583Z (about 2 months ago)
- Topics: brandenburg, flask, gottesanbeterin, mantis, mantis-religiosa, nature, open-data, open-data-science, opendata, postgresql, public-science
- Language: Python
- Homepage: https://gottesanbeterin-gesucht.de
- Size: 241 MB
- Stars: 7
- Watchers: 1
- Forks: 0
- Open Issues: 0
- Releases: 0
-
Metadata Files:
- Readme: README.md
- Agents: AGENTS.md
README.md
🦗 Gottesanbeterin Gesucht (Mantis Tracker)

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+
uvbun- 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 logicapp/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.rstdocs/userinterface/index.rstdocs/develop/index.rst
Project Structure
mantis/
├── app/
│ ├── routes/
│ ├── database/
│ ├── templates/
│ ├── static/
│ └── tools/
├── docs/
├── infrastructure/
├── migrations/
└── tests/
License
MIT, see LICENCE.md.
Owner metadata
- Name: OpenData-Apps
- Login: opendata-apps
- Email:
- Kind: organization
- Description: Advancing open-source solutions for freely accessible data, powered by a collaborative community
- Website: https://gottesanbeterin-gesucht.de
- Location: Germany
- Twitter:
- Company:
- Icon url: https://avatars.githubusercontent.com/u/157598851?v=4
- Repositories: 2
- Last ynced at: 2024-04-16T02:59:18.335Z
- Profile URL: https://github.com/opendata-apps
GitHub Events
Total
- Delete event: 16
- Push event: 163
- Create event: 9
Last Year
- Delete event: 8
- Push event: 56
- Create event: 4
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 | 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:
- th-wildau.de: 2
- sz.zitbb.lvnbb.de: 2
- koppatz.com: 2
- gmx.net: 1
- zit-bb.brandenburg.de: 1
- gmx.de: 1
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
Top Issue Authors
- Primajin (1)
Top Pull Request Authors
- dependabot[bot] (15)
Top Issue Labels
Top Pull Request Labels
- dependencies (15)
Package metadata
- Total packages: 1
- Total downloads: unknown
- Total dependent packages: 0
- Total dependent repositories: 0
- Total versions: 21
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
- 290 dependencies
- @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
- 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
- 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
- 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