Code Wiki
Everything in this section is read out of backend/ and frontend/ at build time. Nothing here is written by hand, which is the point: 92 entities and 457 endpoints cannot be maintained as prose, and a hand-written list of them would be wrong within a week.
| Count | |
|---|---|
| Modules | 9 |
| Entities | 92 |
| Controllers | 86 |
| Endpoints | 457 |
| Repositories | 89 |
| Frontend routes | 98 |
Where to start
- Modules — the top-down view. One page per API group, listing the controllers it exposes, the tables behind them and the screens in front of them.
- Data Model — one page per entity: columns, relationships, the repository declared over it, and every endpoint that can reach it.
- Endpoints — one page per controller: its routes, the permission each demands, and the call chain from handler to table.
How it relates to the rest of the site
| Section | Answers | Written by |
|---|---|---|
| Architecture | Why the system is shaped this way | Hand |
| Backend | How to work in the codebase | Hand |
| API Reference | What an endpoint accepts and returns | Generated from OpenAPI |
| Code Wiki | What exists right now, and what calls what | Generated from source |
The API reference and the Code Wiki are generated from different things and answer different questions. The spec is produced by booting the backend and reading springdoc, so it knows request and response schemas; it cannot see which service a controller injects or which table that service writes. This section is parsed from the source, so it can.
Accuracy
The extractor understands the conventions this codebase actually follows — one public type per file, Lombok constructor injection, annotations on their own lines. Code that departs from them is under-reported rather than misreported, and the build fails if the extractor suddenly finds far less than it should. Two things are worth knowing when reading these pages:
- Call chains are static. An edge means a bean holds a reference, not that every endpoint on the page uses it. "Tables reached" is the upper bound of what a controller can touch, which is the useful number for a review or an audit.
- Access is three-valued. Permission, authenticated, and public are different states, and the absence of
@PreAuthorizemeans the second, never the third.
This page is rebuilt from the source on every docs build by docs-site/scripts/gen-code-wiki.mjs. Editing it has no effect — change the code, or, if what you want to say is prose, write it in docs/.