Contributing to OmniDocs¶
Thank you for your interest in contributing to OmniDocs!
Quick Links¶
- Development Workflow - 6-phase implementation process
- Testing Guide - How to run tests (local, MLX, Modal GPU)
- Adding Models - How to add new model support
- Style Guide - Code standards and conventions
Development Setup¶
1. Clone the repository¶
2. Install dependencies with uv¶
# Install uv if you don't have it
curl -LsSf https://astral.sh/uv/install.sh | sh
# Sync dependencies
uv sync
3. Run tests¶
# Run pytest unit tests
uv run pytest tests/ -v
# Run local CPU/MLX tests
uv run python -m tests.runners.local_runner \
--image tests/fixtures/images/test_simple.png \
--cpu-only
# See full testing guide
For comprehensive testing instructions including GPU tests on Modal, see the Testing Guide.
Project Structure¶
Omnidocs/
├── omnidocs/ # Main package
│ ├── document.py # Document loading
│ ├── tasks/ # Task extractors
│ ├── inference/ # Backend implementations
│ └── utils/ # Utilities
├── tests/ # Test suite
│ ├── fixtures/ # Test data (PDFs, images)
│ └── tasks/ # Task tests
└── docs/ # Documentation
Design Documents¶
Read Before Implementing
Before implementing new features, read the architecture docs:
- Architecture Overview - System design
- Backend System - Multi-backend support
- Config Pattern - Configuration design
Building Documentation¶
# Install docs dependencies
uv sync --group docs
# Serve docs with live reload
uv run mkdocs serve
# Open http://127.0.0.1:8000
Need Help?¶
- Open an issue
- Check the Roadmap
License¶
By contributing, you agree that your contributions will be licensed under the Apache 2.0 License.