Skip to content

Architecture

@startuml
!include <C4/C4_Container>

Person(user, "User")
System_Boundary(c1, "Android App") {
    Container(app, "Application", "Android Module", "Loads application dependency graph")
    Container(navigation, "Navigation", "Android Module", "Declares navigation state machine")
    Container(feature_1, "Feature 1", "Android Module", "Shows some feature screens")
    Container(feature_2, "Feature 2", "Android Module", "Shows some feature screens")
    Container(lib_1, "Lib 1", "Android Module", "Manages business rules and data for some bounded context")
    Container(lib_2, "Lib 2", "Android Module", "Manages business rules and data for some bounded context")
    Container(core, "Core Lib", "Android Module", "Manages rules and data for some mobile-standard bounded context. Unlike business libs, they are not related to the business. Thus, they could be shared and used by any app. They are candidates for open source code. E.g.: logging, push notification")
}

Rel(user, app, "Uses")
Rel(app, navigation, "Launches")
Rel(navigation, feature_1, "Implements routing for")
Rel(navigation, feature_2, "Implements routing for")
Rel(feature_1, lib_1, "Uses")
Rel(feature_1, lib_2, "Uses")
Rel(feature_2, lib_2, "Uses")
Rel(lib_2, core, "Uses")
@enduml

Last update: August 24, 2021
Back to top