# Project layout (/docs/reference/project-layout)

Map the source tree to the runtime responsibilities it owns.

```text
src/
├── main.cpp                         entry point and launch options
├── config.{hpp,cpp}                 JSON profiles and menu preferences
├── app/                             frame orchestration and feature modules
├── menu/                            Dear ImGui settings UI
├── overlay/                         window, input, reader and visibility helpers
├── renderer/                        OpenGL passes, chams, ESP and profiling
├── math/                            projection, distance and bone helpers
├── vpk/                             VPK, KV3, VMDL and navmesh parsing
├── model_cache.{hpp,cpp}            asynchronous model loading and caching
└── external/                        Dear ImGui, meshoptimizer, NanoSVG and zstd
```

Supporting directories:

| Path         | Purpose                                                                      |
| ------------ | ---------------------------------------------------------------------------- |
| `assets/`    | Fonts, SVG icons, grenade data, sounds and the default config.               |
| `protocols/` | Wayland protocol XML files used to generate client code at configure time.   |
| `tests/cpp/` | C++ unit-test entry point and test cases.                                    |
| `build/`     | CMake output, generated Wayland sources, executable and copied runtime data. |
| `.claude/`   | Architecture, build-system, workflow and style notes.                        |
