Skip to content

Repository Layout

Leonard Ramminger edited this page Aug 9, 2026 · 1 revision

Repository Layout

Beez uses a flat module layout: public headers under include/beez/, implementations under src/, tests mirroring production code. Do not nest extra src/ or include/ folders inside modules.

Top level

PathPurpose
include/beez/Public C++ API headers
src/Implementation (.cpp) grouped by module
tests/Unit, integration, system, performance, fuzz tests
cmake/Shared CMake modules (warnings, sanitizers, coverage)
scripts/QA scripts, CI helpers, shell completion
conan/Conan profiles
report/Generated QA output (gitignored)
build/Build tree (gitignored)

Source modules

ModuleHeadersImplementationResponsibility
coreinclude/beez/core/src/core/Models, registry, orchestrator, cache, config, settings
cliinclude/beez/cli/src/cli/Argument parsing, target execution, listing
logginginclude/beez/logging/src/logging/Output modes, progress UI backend, run logs
plugins/luainclude/beez/plugins/lua/src/plugins/lua/build.lua DSL parsing and settings
plugins/shellinclude/beez/plugins/shell/src/plugins/shell/Shell command execution
app-src/app/main() entry point

Tests

DirectoryBinary / runnerWhat it covers
tests/unit/beez_testsIsolated logic, mirrors src/ structure
tests/integration/beez_integration_testsMulti-component pipelines, CLI subprocess
tests/system/beez_system_testsBlack-box runs against fixture build.lua projects
tests/performance/beez_perf_testsThroughput benchmarks (labeled performance)
tests/fuzz/fuzz_lua_dslRobustness of Lua DSL parser

System fixtures live at tests/system/fixtures/<name>/build.lua.

Fuzz seeds live at tests/fuzz/corpus/lua_dsl/*.lua.

Adding a new file

  1. Place the header in include/beez/<module>/
  2. Place the .cpp in src/<module>/
  3. Register the .cpp in the module CMakeLists.txt
  4. Add tests in the matching tests/<level>/ folder
  5. Register test .cpp files in that level's CMakeLists.txt

Layering rules

Typical dependency direction:

app → cli → core ← plugins (lua, shell)
↑
logging
  • Core must not depend on CLI or plugins.
  • Plugins translate external input (Lua tables, shell) into core models.
  • Touch src/app/main.cpp only when global CLI wiring changes.

Related pages

Clone this wiki locally