Skip to content

Contributing

Contributions are welcome. QuOptuna is Apache 2.0 licensed. This page covers the dev environment, the Make targets, the quality checks, and the PR flow.

  • Python 3.11–3.12
  • Node 18+ — only needed for frontend development

Install the package with dev extras:

Terminal window
uv pip install -e ".[dev]"

Backend and frontend dependencies can also be installed via Make:

Terminal window
make install_backend
make install_frontend
TargetWhat it does
make dev / make run_cliRun backend + frontend together
make run_backendRun the FastAPI server
make run_frontendRun the Next.js dev server
make run_streamlitLaunch the legacy Streamlit UI
make buildBuild wheel / sdist
make build_packageBuild frontend, bundle into package, then build the wheel (needed for uvx)
make formatFormat the code
make lintLint with ruff + mypy
make lint-fixAuto-fix lint issues
make testsRun the pytest suite
make coverageRun tests with coverage
make pre-commitRun pre-commit hooks

Run these before opening a PR:

Terminal window
uv run pytest # coverage fail-under 35
uv run ruff check .
uv run mypy .
  • src/quoptuna/ — the canonical shipped package: backend engine, server, CLI, web/ (built UI), and the legacy frontend/.
  • frontend/ — Next.js dev source.
  • backend/ — legacy dev sub-project (its server code now lives in src/quoptuna/server).
  • db/ — SQLite stores.
  • docs-site/ — this Astro docs site.
  • tests/ — the pytest suite.

Documentation is Markdown under docs-site/src/content/docs/. To preview locally:

Terminal window
cd docs-site
npm install
npm run dev
  1. Fork the repository.
  2. Create a feature branch.
  3. Make your change and ensure tests pass and ruff + mypy are clean.
  4. Open a PR against main.

QuOptuna is released under the Apache 2.0 license.