@startuml header Chassis Code Generator (https://github.com/hoffipublic/chassis) title Chassis Code Generator : Deployment Diagram skinparam linetype polyline /' ortho '/ top to bottom direction /' left to right direction '/ node node_chassis #Red-Khaki [ root-project: chassis ---- chassis root project ==== nothing in here yet .... depends only on chassismodel yet ] node node_chassismodel [ subproject: chassismodel ---- thought as the "public" api ==== stuff also used outside chassis .... depends on nothing ] node node_codegen #MediumSpringGreen/Yellow [ subproject: codegen ---- generating code from `GenCtx` ==== DTO like objects Exposed Table like objects .... depends ] rectangle "" as dbwrappers { node node_dbwrappers #GhostWhite [ subproject: dbwrappers ---- common abstract DB definitions ==== independent of specific used DB Framework e.g. kotlinPoet Member-/ClassNames ... .... depends ] node node_dbwrappers_exposed #GhostWhite [ subproject: dbwrappers/exposed ---- specific definitions for used DB Framework ==== Exposed specific .... depends ] node_dbwrappers_exposed -up-> node_dbwrappers } node node_docs [ subproject: docs ---- markdown based docs website .... ruby, jekyll, ... ] node node_dsl #Yellow\MediumSpringGreen [ subproject: dsl ---- def&parsing of chassis DSL ==== uses `DslCtx` eventually produces `GenCtx` .... depends ] node node_examples [ subproject: examples ---- examples of Chassis DSLs ==== main methods for examples .... depends ] node node_shared #Yellow-MediumSlateBlue [ subproject: shared ---- internally shared stuff ==== used by multiple subprojects .... depends ] node node_external_projects [ external git repos: ==== binaryImages from plantuml/drawio ---- generated code: from suproject examples ] node_chassis .. node_chassismodel node_chassis .down. node_dsl node_chassis .down. node_codegen node_chassis .. node_shared node_chassis .. dbwrappers node_dbwrappers .down. node_dbwrappers_exposed node_dbwrappers_exposed ..[hidden]right.. node_chassismodel node_chassis .down. node_examples node_chassis ..left.. node_docs /' layout variant node_chassis -[norank]-> node_chassismodel node_dsl -[norank]-> node_chassismodel '/ node_chassis --> node_chassismodel node_dsl --> node_chassismodel node_dsl --> node_shared node_codegen --> node_chassismodel node_codegen --> node_shared node_codegen --> dbwrappers node_shared --> node_chassismodel node_shared -left-> dbwrappers dbwrappers --> node_chassismodel node_examples --> node_chassismodel node_examples --> node_shared node_examples --> node_dsl node_examples --> node_codegen note "no direct dependency to codegen \n(only populating shared GenCtx\n within DslCtx in PASS.FINISH...)" as comment_independent_for_dsl note "no direct dependency to dsl \n(only using shared GenCtx)" as comment_independent_for_codegen node_dsl <-[dotted]up-> comment_independent_for_dsl node_codegen <-[dotted]up-> comment_independent_for_codegen node_dsl <-[dotted,hidden]left-> node_codegen : NO(!!!) direct dependency\l(only using shared GenCtx) legend right Legend: - - - subproject dependency end legend @enduml