Contributing
August 1, 2026 · View on GitHub
When contributing to this repository, please first discuss the change you wish to make via issue, email, or any other method with the owners of this repository before making a change.
Development Setup
# Clone the repository
git clone https://github.com/progovoy/vmn.git
cd vmn
# Create a virtual environment
python3 -m venv ./venv
source ./venv/bin/activate
# Install dependencies
pip install -r ./tests/requirements.txt
pip install -r ./tests/test_requirements.txt
pip install -e ./
# Verify installation
vmn --version # Should print 0.0.0
Running Tests
Tests require Docker and run in parallel (29 workers by default) using pytest-xdist.
# Full test suite
./tests/run_pytest.sh
# Run a specific test
./tests/run_pytest.sh --specific_test <test_name>
# Skip a test
./tests/run_pytest.sh --skip_test <test_name>
Code Structure
version_stamp/cli/— CLI entry point, arg parsing, command handlers, config TUI, output/displayversion_stamp/stamping/— IVersionsStamper, VersionControlStamper, Jinja2 template generationversion_stamp/backends/— VCS abstraction (Git/LocalFile backends)version_stamp/core/— Constants, models, logging, utilities, version mathversion_stamp/ui/—vmn uiFastAPI server, readers, subprocess job runner, and the built SPA understatic/webui/— React/Vite source for the UI;npm run buildwrites intoversion_stamp/ui/static/version_stamp/version.py— vmn's own version stringtests/— Test suite with Docker-based isolated git environmentsdocs/— Long-form guides (experiments.md,ui.md) and migration guides
Working on the Web UI
pip install -e ".[ui]"
vmn ui --no-browser # leave running
# Python changes under version_stamp/ui/ → just refresh the browser
# Changes under webui/src/ → rebuild, then refresh (no server restart needed)
cd webui && npm run build
The built assets under version_stamp/ui/static/ are committed, so rebuild and
include them in any PR that touches webui/src/.
Submitting Changes
- Fork the repository
- Create a feature branch
- Make your changes
- Run the test suite
- Submit a Pull Request
We will thank you for every contribution :)