Glossary — Ubiquitous Language
Core Terms
| Term |
Code Name |
Definition |
Scope |
| Generator |
Generator |
Interface with the single method PopulateRepository(). Contract for all code-generation delegates. NOT a factory - it does not create descriptors, it consumes them. |
D |
| Project Descriptor |
ProjectDescriptor |
Validated, immutable description of a project to be generated. Carries all user-supplied and inferred parameters. The single input to the generator pipeline. NOT a config file - it is an in-memory value. |
D |
| Generation Request |
GenerationRequest |
The raw, unvalidated user intent expressed via CLI flags. Validated and assembled into a ProjectDescriptor. NOT the same as ProjectDescriptor - a request may be invalid; a descriptor is always valid. |
A |
| Presentation Model |
PresentationModel |
Flat, template-ready data structure derived from a ProjectDescriptor. Fed directly into Go's text/template engine. NOT a domain model - contains no business logic, only data shaped for rendering. |
D |
| Template |
(embedded file) |
A text file containing Go text/template directives, embedded in the generator binary. Instantiated by the template engine to produce a generated file. Always refers to a text/template file, not a concept. |
I |
| Template Engine |
engine (package) |
The engine package that combines a template with a PresentationModel to produce a generated file. Handles file I/O and error propagation. |
I |
| Target Repository |
TargetPath |
The absolute or relative path of the empty Git repository to be populated. All generated and copied files are written here. NOT the generator's own repository. |
D |
| Artifact Name |
ArtifactName |
Technical identifier of the build output - the name of the executable binary or library archive. Derived from the Git remote slug when not supplied explicitly. In C++ projects hyphens are replaced by underscores. |
D |
| Delegate |
(pattern) |
A Generator implementation that handles a specific sub-scope (language or project type) by being called from its parent generator. NOT a general design pattern here - always a node in the delegate chain. |
D |
| Version Marker |
(content convention) |
The string Generated by prjinit, version X.Y.Z embedded in every generated file. Italic in Markdown; a comment in source and config files. Distinguishes generated files from hand-authored ones. |
ALL |
| Guideline |
(file concept) |
A Markdown document encoding a quality or process standard (e.g. testing.md, security.md). Copied verbatim to every generated project's specs/guidelines/ folder. NOT generated from a template. |
ALL |
| Scaffolding |
(process) |
The act of populating an empty repository with standard structure, boilerplate, and guidelines. The result is a scaffolded project. Includes both file generation and static file copying. |
ALL |
| User |
|
Human beeing that is using an application |
ALL |
| Developer |
|
A specific type of User. Uses this generator to initialize Git repositories to start development |
ALL |
| AI Assistant |
|
Technology to support the human Developer in his goals |
ALL |
| Repository |
|
Directory with subdirectory and files tracked by SCM Git. |
ALL |
| SCM |
|
Short for Source Code Management, versioning of development artifacts |
ALL |
Value Objects
Value objects are applicable here: project_descriptor.go defines typed string aliases
for each constrained input. Every alias is a value object — no identity, validated on
construction.
| Term |
Code Name |
Validation / Constraints |
| Project Name |
ProjectName |
Must not be blank (BR-001) |
| Project Short Description |
ProjectShortDescription |
Must not be blank (BR-002) |
| Target Path |
TargetPath |
Must not be blank (BR-003) |
| Artifact Name |
ArtifactName |
Must not be blank; derived from Git remote slug when absent (BR-009) |
| Go Module Path |
GoModulePath |
Must not be blank; derived from Git remote URL when absent (BR-010); Go only |
| C++ Namespace |
CPPNamespace |
Derived from ArtifactName; hyphens replaced by underscores (BR-013); C++ only |
Enumerations
Enumerations are applicable here: Language, ProjectType, and CIType are all
typed int constants defined in the internal package.
| Enum Name |
Code Name |
Values |
Notes |
| Language |
Language |
LANGUAGE_CPP, LANGUAGE_GO, LANGUAGE_JAVA |
Validated at CLI boundary (BR-004) |
| Project Type |
ProjectType |
PROJECT_TYPE_EMBEDDED, PROJECT_TYPE_LIBRARY, PROJECT_TYPE_SERVICE, PROJECT_TYPE_TOOL |
Validated at CLI boundary (BR-005) |
| CI Type |
CIType |
CI_TYPE_GITHUB, CI_TYPE_GITLAB |
Inferred from Git remote when absent (BR-008) |