# Developer guide

How the repository is built, tested, documented and contributed to.
`AGENTS.md` at the repository root records the design rules of the native
library and the operator layer in more detail.

| Page | Purpose |
| --- | --- |
| {doc}`prerequisites` | Git, Python, compilers, CMake, OpenMP and CUDA for a source build |
| {doc}`installation` | Editable installation, and building and testing without installing |
| {doc}`layout` | What each directory of the repository and each module of the package holds |
| {doc}`workflow` | Branches, generated files, the BART and FINUFFT submodules and the checks to run |
| {doc}`bart-fork` | The downstream BART fork: its branches, what belongs in it, and syncing with Codeberg |
| {doc}`pre-commit` | Local hooks, and bypassing them |
| {doc}`style` | Python and C conventions |
| {doc}`documentation` | Documentation types, scientific writing and docstrings |
| {doc}`terminology` | The vocabulary and conventions used across code and documentation |
| {doc}`pull-requests` | What a pull request contains and how it is validated |
| {doc}`code-of-conduct` | Conduct in project spaces |

```{toctree}
:hidden:

prerequisites
installation
layout
workflow
bart-fork
pre-commit
style
documentation
terminology
pull-requests
code-of-conduct
```
