====== 4.3 Source Directories ======
[[fxdemo:05-part:start | Go To Top ]]
[[fxdemo:05-part:04-repository-layout:start | Return to Repository Layout ]]
The ''src/'' directory should contain handwritten implementation source files. Developers should place [[dido:99_annexes:annex-b-terms-and-definitions:n:node|Node]] implementations, reusable runtime utilities, shared constants, command handlers, status publishers, [[dido:99_annexes:annex-b-terms-and-definitions:c:configuration|Configuration]] readers, logging helpers, and other handwritten runtime code under this directory.
The team should organise ''src/'' by implementation concern and, where useful, by language. For example, if Phase 0 uses more than one implementation language, the [[dido:99_annexes:annex-b-terms-and-definitions:r:repository|Repository]] may separate source code into language-specific subdirectories.
A representative structure is:
src/
nodes/
common/
control-plane/
data-plane/
The ''src/nodes/'' directory should contain Node-specific implementation code. The ''src/common/'' directory should contain reusable support code that more than one Node uses. The ''src/control-plane/'' directory should contain [[dido:99_annexes:annex-b-terms-and-definitions:c:control_plane|Control Plane]] support code, such as status reporting and command handling. The ''src/data-plane/'' directory should contain [[dido:99_annexes:annex-b-terms-and-definitions:d:data_plane|Data Plane]] support code where Phase 0 requires it.
Developers should not place generated code in ''src/''. Generated code should live under ''generated/'' so that reviewers can distinguish handwritten implementation from reproducible generation output.
----
© 2026 Dido Solutions, Inc. and Jackrabbit Consulting, Inc.