# What does a project need? 1. Source Code - put packages inside a `src/` directory 2. Development Environment and Language Tools - package manager: `uv` - editor/lsp client: neovim - lsp/type checker: `pyright` and `mypy` (looking into `ty`) - linter/formatter: `ruff` (equivalent to `isort` and `black`) - debugger: `pdb` 3. Tests and testing environment - Docker and docker-compose to create and run tests in environment 4. CI - github actions to run docker-compose service - rerun sphinx+autodoc to regenerate API docs - rerun static site generator 5. CD - github actions? 5. API Documentation Generator - Sphinx and autodoc 6. Other docs - markdown in doc/ folder - static site generator (Hugo or Mkdocs) - hosted on github pages. updated via CI - document installation, devops/maintenance commands, etc. - generally a fan of documentation over makefiles 7. Package Management - using `uv` - pyproject.toml 8. Dependencies - pyproject.toml - requirements.txt