imo-vmdb
imo-vmdb imports data from the Visual Meteor Database (VMDB) of the International Meteor Organization (IMO) into a relational SQL database.
The data is enriched with computed properties (radiant positions, sun/moon position and illumination) and validated for plausibility. The processed data is accessible via a public Python API, a REST interface, CLI commands, and a Web UI.
For full documentation see https://imo-vmdb.readthedocs.io/en/stable/.
Quick Start (Docker)
No Python required. Pull and run the web UI:
docker run --rm \
-p 8000:8000 \
-v ./data:/data \
-e IMO_VMDB_DATABASE_DATABASE=/data/vmdb.db \
ghcr.io/jankorichter/imo-vmdb
Open http://localhost:8000.
Developer Setup
Prerequisites: Python 3.10+, Poetry
git clone https://github.com/jankorichter/imo-vmdb.git
cd imo-vmdb
poetry install
poetry run python -m imo_vmdb
With documentation extras (required to build Sphinx docs):
poetry install --extras docs
Run the web UI and REST API locally:
IMO_VMDB_DATABASE_DATABASE=./data/vmdb.db poetry run python -m imo_vmdb web_server
Opens the control panel at http://localhost:8000; the REST API is available at http://localhost:8000/api/v1.
Test the production WSGI deployment:
The production setup uses Gunicorn with imo_vmdb.httpd:wsgi_app. To verify locally:
poetry install --extras web
IMO_VMDB_DATABASE_DATABASE=./data/vmdb.db \
poetry run gunicorn --workers 1 --threads 4 \
--bind 127.0.0.1:8000 "imo_vmdb.httpd:wsgi_app()"
Always use --workers 1 — see docs/api.rst for details.
Run the linter:
poetry run ruff check .
poetry run ruff format --check .
To auto-fix issues:
poetry run ruff check --fix .
poetry run ruff format .
Run the test suite:
poetry run pytest
No server needs to be started beforehand. The tests use Flask's built-in test client, which calls the application directly in-process — no network, no port. A temporary SQLite database is created automatically for each test run.
Build Docker image locally:
docker compose up --build
Release
Releases are triggered by pushing a version tag. The GitHub Actions workflows in
.github/workflows/ handle CI and publishing automatically:
tests.yml— runs lint and tests on every push to any branchpypi.yml— builds the package and publishes it to PyPI (version tags only)docker.yml— builds and pushes the Docker image to GitHub Container Registry (version tags only)
Before tagging, build and verify the package locally:
make # builds docs, then runs poetry build
Then tag and push:
git tag v1.x.y
git push origin v1.x.y
Release files for imo-vmdb 2.1.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| imo_vmdb-2.1.0.tar.gz | 7.9 MB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| imo_vmdb-2.1.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 15.8 MB
Release files / imo_vmdb-2.1.0.tar.gz
| Download URL | imo_vmdb-2.1.0.tar.gz |
|---|---|
| Size | 7.9 MB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
b734a28af99f5fd316f89ca598c6a9c30f07acf54ae0284c3a2af5e8af8dae24
|
|
BLAKE2b-256 checksum How to use checksums |
b00c9831e747135ba292343bde002ce33b81b3bb65ddbbeee4d398aa357521b5
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.12
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on May 21, 2026.
Transparency logRelease files / imo_vmdb-2.1.0-py3-none-any.whl
| Download URL | imo_vmdb-2.1.0-py3-none-any.whl |
|---|---|
| Size | 7.9 MB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
ce4a19108adc3c4ca6de20380b9f35a4988743a647be2945ed7fa24ac5d127ae
|
|
BLAKE2b-256 checksum How to use checksums |
7e63801006229415d74c370508d09bd476e866b813e4ac77e9bfba0082ed877b
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.12
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on May 21, 2026.
Transparency log