Skip to main content

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 branch
  • pypi.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)

Source distribution for imo-vmdb 2.1.0
File Size Uploaded
imo_vmdb-2.1.0.tar.gz 7.9 MB Details

Built distribution (wheel)

Table of built distributions (wheels) for imo-vmdb 2.1.0
File Interpreter ABI Platform
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 log

Release 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

Release history Release notifications | RSS feed

This release

2.1.0 This release

2 release files

2.0.0

2 release files

1.8.0

2 release files

1.7.2

2 release files

1.7.1

2 release files

1.7.0

2 release files

1.6.0

2 release files

1.5.2

2 release files

1.5.1

2 release files

1.4.0

2 release files

1.3.1

1 release file

1.3.0

1 release file

1.2.1

1 release file

1.2.0

1 release file

1.1.0

1 release file

1.0.3

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page