Thanks for your interest in contributing! This document provides guidelines for contributing to OpenPlex.
git clone https://github.com/Rfannn/OpenPlex.git
cd OpenPlex
python -m venv venv && source venv/bin/activate
pip install -r requirements.txt -r requirements-dev.txt
cp .env.example .env
make run- Python: Follow PEP 8, use ruff for linting (
make lint) - Formatting: Run
make formatbefore committing - Type hints: Use Python 3.10+ syntax (
list[str],dict[str, Any]) - Async: Use
async/awaitfor all I/O operations - Imports: Sorted by isort (via ruff)
- Routers: One file per feature in
app/routers/ - Services: Business logic in
app/services/ - Models: SQLAlchemy ORM in
app/models/ - Templates: Jinja2 in
templates/ - Static files: CSS/JS in
static/ - Tests: pytest in
tests/
- Create a feature branch from
main - Make your changes with tests
- Run
make testandmake lint - Update documentation if needed
- Submit a PR with a clear description
- Use GitHub Issues
- Include steps to reproduce
- Include your environment (OS, Python version, browser)
- Include error messages/screenshots
- Tests (currently minimal)
- Documentation
- Mobile responsiveness improvements
- Accessibility (ARIA labels, keyboard nav)
- Performance optimizations
- New scraper sources
- UI/UX improvements