Open yostane opened 2 months ago
graph TD;
Clients
APIs
UnifiedDataStorage(Unified Data Storage)
Actors --"Sends Requests to"--> Clients
Clients --"Makes Requests to"--> APIs
APIs --"Accesses"--> UnifiedDataStorage
flowchart TD
subgraph "Actors"
ThirdPartyApp
Facebook
User
HistoricalRecordsTeam
end
subgraph "Clients"
WebClient(Web Client)
MobileClient(Mobile Client)
end
subgraph "Third-Party Integration"
ThirdPartyAppContainer(Third-Party App Container)
SocialNetworkService(Social Network Integration)
end
subgraph "Services"
ThirdPartyAPIService(Third-Party API Service)
InternalApiService(Internal API Service)
HistoricalRecordsService(Historical Records Service)
end
subgraph "Data Storage"
GenealogicalData(Genealogical Data Storage)
end
User --"Interacts with"--> WebClient
User --"Engages with"--> MobileClient
Facebook --"Utilizes"--> SocialNetworkService
ThirdPartyApp --"Connects to"--> ThirdPartyAppContainer
HistoricalRecordsTeam --"Requests Data from"--> HistoricalRecordsService
WebClient --"Sends Data to"--> ThirdPartyAPIService
MobileClient --"Sends Data to"--> ThirdPartyAPIService
SocialNetworkService --"Sends Data to"--> ThirdPartyAPIService
ThirdPartyAppContainer --"Sends Data to"--> ThirdPartyAPIService
HistoricalRecordsService --"Retrieves Data from"--> InternalApiService
ThirdPartyAPIService --"Accesses"--> GenealogicalData
InternalApiService --"Accesses"--> GenealogicalData
flowchart TD
subgraph "System"
subgraph "Controllers"
ApplicationController(Application Controller)
end
subgraph "Facades"
ThirdPartyFacade(Third-Party Facade)
InternalFacade(Internal Facade)
end
subgraph "Components"
WebAppComponent(Web Application Component)
ThirdPartyAppComponent(Third-Party App Component)
SocialNetworkComponent(Social Network Component)
HistoricalRecordsComponent(Historical Records Component)
end
subgraph "Database"
GenealogicalDatabase(Genealogical Database)
end
end
Actors --"Sends Request to"--> ApplicationController
ApplicationController --"Handles Request for"--> WebAppComponent
ApplicationController --"Handles Request for"--> ThirdPartyAppComponent
ApplicationController --"Handles Request for"--> SocialNetworkComponent
ApplicationController --"Handles Request for"--> HistoricalRecordsComponent
WebAppComponent --"Utilizes"--> ThirdPartyFacade
ThirdPartyAppComponent --"Utilizes"--> ThirdPartyFacade
SocialNetworkComponent --"Utilizes"--> ThirdPartyFacade
HistoricalRecordsComponent --"Utilizes"--> InternalFacade
ThirdPartyFacade --"Accesses"--> GenealogicalDatabase
InternalFacade --"Accesses"--> GenealogicalDatabase
classDiagram
class User{
<<Actor>>
}
class ThirdParty{
<<Actor>>
}
class Genealogist{
<<Actor>>
}
class GraphSystem{
<<Software System>>
}
class FacebookAPI{
<<External API>>
}
User-->GraphSystem:uses
ThirdParty-->GraphSystem:uses
Genealogist-->GraphSystem:contributes through
GraphSystem-->FacebookAPI:uses
classDiagram
class ThirdParty{
<<Actor>>
}
class User{
<<Actor>>
}
class Genealogist{
<<Actor>>
}
namespace GraphSystem{
class GraphWebsite{
<<Website>>
}
class GraphBackOffice{
<<Website>>
}
class GraphDB{
<<Database>>
}
class GraphWebAPI{
<<WebAPI>>
}
}
class FacebookAPI{
<<External API>>
}
ThirdParty-->GraphWebAPI:uses
GraphWebAPI-->FacebookAPI:uses
GraphWebAPI-->GraphDB:uses
Genealogist-->GraphBackOffice:contributes through
GraphBackOffice-->GraphDB:populate
User-->GraphWebsite:uses
GraphWebsite-->GraphWebAPI:uses
classDiagram
class ThirdParty{
<<Actor>>
}
class User{
<<Actor>>
}
class Genealogist{
<<Actor>>
}
namespace GraphWebsite{
class GraphWebsiteFront{
<<Single Page Application>>
}
class GraphWebsiteBack{
<<Website Backend>>
}
}
namespace GraphBackOffice{
class BackOfficeFront{
<<Single Page Application>>
}
class BackOfficeBack{
<<Website Backend>>
}
}
class GraphDB{
<<Database>>
}
namespace GraphWebAPI{
class RelationshipController{
<<API Controller>>
}
class RelationshipService{
<<API Service>>
}
class FacebookService{
<<API Service>>
}
}
class FacebookAPI{
<<External API>>
}
ThirdParty-->RelationshipController:uses
FacebookService-->FacebookAPI:uses
RelationshipService-->GraphDB:uses
User-->GraphWebsiteFront:uses
GraphWebsiteFront-->GraphWebsiteBack:uses
GraphWebsiteBack-->RelationshipController:uses
BackOfficeFront-->BackOfficeBack:uses
Genealogist-->BackOfficeFront:contributes through
BackOfficeBack-->GraphDB:communicates with
RelationshipController-->RelationshipService:uses
RelationshipController-->FacebookService:uses
C4Context
title System Context for architectural kata
Boundary(b0, "Graph System Context") {
Person_Ext(user, "User")
Person_Ext(thirdParty, "Third Party")
Person_Ext(genealogist, "Genealogist")
System(graphSystem, "Graph System")
System_Ext(facebookAPI, "Facebook API")
Rel_D(user, graphSystem, "uses")
Rel_D(thirdParty, graphSystem, "uses")
Rel_D(genealogist, graphSystem, "contributes through")
Rel_D(graphSystem, facebookAPI, "uses")
}
Level 1
Level 2
C1:
C2:
C3:
https://www.architecturalkatas.com/kata.html?kata=WhosYourDaddy.json