1064 lines
70 KiB
Text
1064 lines
70 KiB
Text
workspace "Bluesky" "Bluesky architecture" {
|
|
|
|
model {
|
|
|
|
properties {
|
|
"structurizr.groupSeparator" "/"
|
|
}
|
|
|
|
socialUser = person "Social Media User" "A regular social media user" typical
|
|
socialAdmin = person "Social Media Administrator" "The admin of a social media site" adminey
|
|
socialModerator = person "Social Media Moderator" "The moderator of a social media site" moderation
|
|
|
|
genericSocial = softwareSystem "A generic social media site" "A generic Social media site" typical {
|
|
group genericSocialTypical {
|
|
genericSocialApp = container "Social App" "Application to access the social media site" "" typical
|
|
genericSocialDB = container "Social database" "Database of social media service" "" "database,typical"
|
|
genericSocialAPI = container "Social API" "API for accessing database" "" typical
|
|
}
|
|
|
|
genericSocialAppToGenericSocialDB = genericSocialApp -> genericSocialAPI "Interacts"
|
|
genericSocialAPIToGenericSocialDB = genericSocialAPI -> genericSocialDB "Read and write"
|
|
|
|
socialUserToGenericSocialApp = socialUser -> genericSocialApp "Uses"
|
|
}
|
|
|
|
socialUserToGenericSocial = socialUser -> genericSocial "Enjoys"
|
|
socialAdminToGenericSocial = socialAdmin -> genericSocial "Manages"
|
|
socialModeratorToGenericSocial = socialModerator -> genericSocial "Builds trust"
|
|
|
|
realisticSocial = softwareSystem "A more realistic social media site" "A more realistic social media site" typical {
|
|
group realisticSocialTypical {
|
|
realisticSocialApp = container "Social App" "Application to access the social media site" "" typical
|
|
realisticSocialAPI = container "Social API" "API for accessing database" "" typical
|
|
realisticSocialPostsDB = container "Posts database" "Posts, replies, likes, re-posts, follows, media, etc." "" "database,typical"
|
|
}
|
|
group realisticSocialModeration {
|
|
realisticSocialModeratingApp = container "Moderating App" "Application to label posts or users for moderation" "" moderation
|
|
realisticSocialModerationAPI = container "Social Moderation API" "API for accessing database" "" moderation
|
|
}
|
|
group realisticSocialFeeds {
|
|
realisticSocialFeeds = container "Feed algorithms" "What posts to present, in what order" "" algorithmic
|
|
realisticSocialFeedDesigner = container "Feed algorithm designer" "Tooling for designing algorithms" "" algorithmic
|
|
realisticSocialProfileDB = container "User and use profile database" "Public user profiles, network graphs, viewing histories, like histories, demographics, etc." "" "database,algorithmic"
|
|
}
|
|
|
|
realisticSocialAPI -> realisticSocialFeeds "Reads"
|
|
realisticSocialFeedDesigner -> realisticSocialFeeds "Writes"
|
|
realisticSocialAPI -> realisticSocialPostsDB "Writes"
|
|
realisticSocialAPI -> realisticSocialProfileDB "Writes"
|
|
realisticSocialApp -> realisticSocialAPI "Reads and writes"
|
|
|
|
realisticSocialFeeds -> realisticSocialPostsDB "Consumes"
|
|
realisticSocialFeeds -> realisticSocialProfileDB "Consumes"
|
|
|
|
realisticSocialModerationAPI -> realisticSocialPostsDB "Writes"
|
|
realisticSocialModeratingApp -> realisticSocialModerationAPI "Interacts"
|
|
|
|
socialUserToRealisticSocialApp = socialUser -> realisticSocialApp "Uses"
|
|
socialModeratorToRealisticSocialModeratingApp = socialModerator -> realisticSocialModeratingApp "Labels"
|
|
socialAdminToRealisticSocialFeedDesigner = socialAdmin -> realisticSocialFeedDesigner "Design feeds"
|
|
}
|
|
|
|
socialUserToRealisticSocial = socialUser -> realisticSocial "Enjoys"
|
|
socialAdminToRealisticSocial = socialAdmin -> realisticSocial "Manages"
|
|
socialModeratorToRealisticSocial = socialModerator -> realisticSocial "Builds trust"
|
|
|
|
federatedSocial1User = person "User of a federated service" "User of a federated service" typical
|
|
federatedSocial1Admin = person "Administrator of a federated service" "Administrator of a federated service" adminey
|
|
|
|
federatedSocial2User = person "User of another federated service" "User of a federated service" typical
|
|
federatedSocial2Admin = person "Administrator of another federated service" "Administrator of a federated service" adminey
|
|
|
|
federatedSocial3User = person "User of a third federated service" "User of a federated service" typical
|
|
federatedSocial3Admin = person "Administrator of a third federated service" "Administrator of a federated service" adminey
|
|
|
|
federatedSocial4User = person "User of a fourth federated service" "User of a federated service" typical
|
|
federatedSocial4Admin = person "Administrator of a fourth federated service" "Administrator of a federated service" adminey
|
|
|
|
federatedSocial1 = softwareSystem "A federated social media site" "A federated social media site" federation {
|
|
group federatedSocial1Typical {
|
|
federatedSocial1App = container "Social App" "Application to access the social media site" "" typical
|
|
federatedSocial1API = container "Social API" "API for accessing database" "" typical
|
|
federatedSocial1PostsDB = container "Posts database" "Posts, replies, likes, re-posts, follows, media, etc." "" "database,typical"
|
|
}
|
|
group federatedSocial1Moderation {
|
|
federatedSocial1ModeratingApp = container "Moderating App" "Application to label posts or users for moderation" "" moderation
|
|
federatedSocial1ModerationAPI = container "Social Moderation API" "API for accessing database" "" moderation
|
|
}
|
|
|
|
group federatedSocial1Federation {
|
|
federatedSocial1Federation = container "Federation" "Shares posts with other federated services" "" federation
|
|
federatedSocial1FederationAPI = container "Federation API" "Takes posts from other federated services" "" federation
|
|
federatedSocial1FederatedPostsDB = container "Federated Posts database" "Posts and related metadata from other" "" "database,federation"
|
|
}
|
|
|
|
federatedSocial1Federation -> federatedSocial1PostsDB "Reads"
|
|
federatedSocial1FederationAPI -> federatedSocial1FederatedPostsDB "Writes"
|
|
federatedSocial1API -> federatedSocial1PostsDB "Reads and writes"
|
|
federatedSocial1API -> federatedSocial1FederatedPostsDB "Reads"
|
|
federatedSocial1App -> federatedSocial1API "Reads and writes"
|
|
|
|
federatedSocial1ModerationAPI -> federatedSocial1PostsDB "Writes"
|
|
federatedSocial1ModerationAPI -> federatedSocial1FederatedPostsDB "Writes"
|
|
federatedSocial1ModeratingApp -> federatedSocial1ModerationAPI "Interacts"
|
|
|
|
federatedSocial1UserToFederatedSocial1App = federatedSocial1User -> federatedSocial1App "Uses"
|
|
federatedSocial1AdminToFederatedSocial1ModeratingApp = federatedSocial1Admin -> federatedSocial1ModeratingApp "Labels"
|
|
}
|
|
|
|
federatedSocial1UserToFederatedSocial1 = federatedSocial1User -> federatedSocial1 "Enjoys"
|
|
federatedSocial1AdminToFederatedSocial1Admin = federatedSocial1Admin -> federatedSocial1 "Manages"
|
|
federatedSocial1AdminToFederatedSocial1Moderates = federatedSocial1Admin -> federatedSocial1 "Builds trust"
|
|
|
|
federatedSocial2 = softwareSystem "Another federated social media site" "A federated social media site" federation {
|
|
group federatedSocial2Typical {
|
|
federatedSocial2App = container "Social App" "Application to access the social media site" "" typical
|
|
federatedSocial2API = container "Social API" "API for accessing database" "" typical
|
|
federatedSocial2PostsDB = container "Posts database" "Posts, replies, likes, re-posts, follows, media, etc." "" "database,typical"
|
|
}
|
|
group federatedSocial2Moderation {
|
|
federatedSocial2ModeratingApp = container "Moderating App" "Application to label posts or users for moderation" "" moderation
|
|
federatedSocial2ModerationAPI = container "Social Moderation API" "API for accessing database" "" moderation
|
|
}
|
|
|
|
group federatedSocial2Federation {
|
|
federatedSocial2Federation = container "Federation" "Shares posts with other federated services" "" federation
|
|
federatedSocial2FederationAPI = container "Federation API" "Takes posts from other federated services" "" federation
|
|
federatedSocial2FederatedPostsDB = container "Federated Posts database" "Posts and related metadata from other" "" "database,federation"
|
|
}
|
|
|
|
federatedSocial2Federation -> federatedSocial2PostsDB "Reads"
|
|
federatedSocial2FederationAPI -> federatedSocial2PostsDB "Writes"
|
|
federatedSocial2API -> federatedSocial2PostsDB "Reads and writes"
|
|
federatedSocial2API -> federatedSocial2FederatedPostsDB "Reads"
|
|
federatedSocial2App -> federatedSocial2API "Reads and writes"
|
|
|
|
federatedSocial2ModerationAPI -> federatedSocial2PostsDB "Writes"
|
|
federatedSocial2ModerationAPI -> federatedSocial2FederatedPostsDB "Writes"
|
|
federatedSocial2ModeratingApp -> federatedSocial2ModerationAPI "Interacts"
|
|
|
|
socialUserToFederatedSocial2App = socialUser -> federatedSocial2App "Uses"
|
|
socialAdminToFederatedSocial2ModeratingApp = socialAdmin -> federatedSocial2ModeratingApp "Labels"
|
|
}
|
|
|
|
federatedSocial2UserToFederatedSocial2 = federatedSocial2User -> federatedSocial2 "Enjoys"
|
|
federatedSocial2AdminToFederatedSocial2Admin = federatedSocial2Admin -> federatedSocial2 "Manages"
|
|
federatedSocial2AdminToFederatedSocial2Moderates = federatedSocial2Admin -> federatedSocial2 "Builds trust"
|
|
|
|
federatedSocial3 = softwareSystem "A third federated social media site" "A federated social media site" federation {
|
|
group federatedSocial3Typical {
|
|
federatedSocial3App = container "Social App" "Application to access the social media site" "" typical
|
|
federatedSocial3API = container "Social API" "API for accessing database" "" typical
|
|
federatedSocial3PostsDB = container "Posts database" "Posts, replies, likes, re-posts, follows, media, etc." "" "database,typical"
|
|
}
|
|
group federatedSocial3Moderation {
|
|
federatedSocial3ModeratingApp = container "Moderating App" "Application to label posts or users for moderation" "" moderation
|
|
federatedSocial3ModerationAPI = container "Social Moderation API" "API for accessing database" "" moderation
|
|
}
|
|
|
|
group federatedSocial3Federation {
|
|
federatedSocial3Federation = container "Federation" "Shares posts with other federated services" "" federation
|
|
federatedSocial3FederationAPI = container "Federation API" "Takes posts from other federated services" "" federation
|
|
federatedSocial3FederatedPostsDB = container "Federated Posts database" "Posts and related metadata from other" "" "database,federation"
|
|
}
|
|
|
|
federatedSocial3Federation -> federatedSocial3PostsDB "Reads"
|
|
federatedSocial3FederationAPI -> federatedSocial3PostsDB "Writes"
|
|
federatedSocial3API -> federatedSocial3PostsDB "Reads and writes"
|
|
federatedSocial3API -> federatedSocial3FederatedPostsDB "Reads"
|
|
federatedSocial3App -> federatedSocial3API "Reads and writes"
|
|
|
|
federatedSocial3ModerationAPI -> federatedSocial3PostsDB "Writes"
|
|
federatedSocial3ModerationAPI -> federatedSocial3FederatedPostsDB "Writes"
|
|
federatedSocial3ModeratingApp -> federatedSocial3ModerationAPI "Interacts"
|
|
|
|
socialUserToFederatedSocial3App = socialUser -> federatedSocial3App "Uses"
|
|
socialAdminToFederatedSocial3ModeratingApp = socialAdmin -> federatedSocial3ModeratingApp "Labels"
|
|
}
|
|
|
|
federatedSocial3UserToFederatedSocial3 = federatedSocial3User -> federatedSocial3 "Enjoys"
|
|
federatedSocial3AdminToFederatedSocial3Admin = federatedSocial3Admin -> federatedSocial3 "Manages"
|
|
federatedSocial3AdminToFederatedSocial3Moderates = federatedSocial3Admin -> federatedSocial3 "Builds trust"
|
|
|
|
federatedSocial4 = softwareSystem "A fourth federated social media site" "A federated social media site" federation {
|
|
group federatedSocial4Typical {
|
|
federatedSocial4App = container "Social App" "Application to access the social media site" "" typical
|
|
federatedSocial4API = container "Social API" "API for accessing database" "" typical
|
|
federatedSocial4PostsDB = container "Posts database" "Posts, replies, likes, re-posts, follows, media, etc." "" "database,typical"
|
|
}
|
|
group federatedSocial4Moderation {
|
|
federatedSocial4ModeratingApp = container "Moderating App" "Application to label posts or users for moderation" "" moderation
|
|
federatedSocial4ModerationAPI = container "Social Moderation API" "API for accessing database" "" moderation
|
|
}
|
|
|
|
group federatedSocial4Federation {
|
|
federatedSocial4Federation = container "Federation" "Shares posts with other federated services" "" federation
|
|
federatedSocial4FederationAPI = container "Federation API" "Takes posts from other federated services" "" federation
|
|
federatedSocial4FederatedPostsDB = container "Federated Posts database" "Posts and related metadata from other" "" "database,federation"
|
|
}
|
|
|
|
federatedSocial4Federation -> federatedSocial4PostsDB "Reads"
|
|
federatedSocial4FederationAPI -> federatedSocial4PostsDB "Writes"
|
|
federatedSocial4API -> federatedSocial4PostsDB "Reads and writes"
|
|
federatedSocial4API -> federatedSocial4FederatedPostsDB "Reads"
|
|
federatedSocial4App -> federatedSocial4API "Reads and writes"
|
|
|
|
federatedSocial4ModerationAPI -> federatedSocial4PostsDB "Writes"
|
|
federatedSocial4ModerationAPI -> federatedSocial4FederatedPostsDB "Writes"
|
|
federatedSocial4ModeratingApp -> federatedSocial4ModerationAPI "Interacts"
|
|
|
|
socialUserToFederatedSocial4App = socialUser -> federatedSocial4App "Uses"
|
|
socialAdminToFederatedSocial4ModeratingApp = socialAdmin -> federatedSocial4ModeratingApp "Labels"
|
|
}
|
|
|
|
federatedSocial4UserToFederatedSocial4 = federatedSocial4User -> federatedSocial4 "Enjoys"
|
|
federatedSocial4AdminToFederatedSocial4Admin = federatedSocial4Admin -> federatedSocial4 "Manages"
|
|
federatedSocial4AdminToFederatedSocial4Moderates = federatedSocial4Admin -> federatedSocial4 "Builds trust"
|
|
|
|
federatedSocial1Federation -> federatedSocial2FederationAPI "Sends"
|
|
federatedSocial1Federation -> federatedSocial3FederationAPI "Sends"
|
|
federatedSocial1Federation -> federatedSocial4FederationAPI "Sends"
|
|
federatedSocial2Federation -> federatedSocial1FederationAPI "Sends"
|
|
federatedSocial2Federation -> federatedSocial3FederationAPI "Sends"
|
|
federatedSocial2Federation -> federatedSocial4FederationAPI "Sends"
|
|
federatedSocial3Federation -> federatedSocial1FederationAPI "Sends"
|
|
federatedSocial3Federation -> federatedSocial2FederationAPI "Sends"
|
|
federatedSocial3Federation -> federatedSocial4FederationAPI "Sends"
|
|
federatedSocial4Federation -> federatedSocial1FederationAPI "Sends"
|
|
federatedSocial4Federation -> federatedSocial2FederationAPI "Sends"
|
|
federatedSocial4Federation -> federatedSocial3FederationAPI "Sends"
|
|
|
|
typicalBlueskyUser1 = person "Bluesky User 1" "A typical user of Bluesky, @user1.bsky.social" typical
|
|
typicalBlueskyUser2 = person "Bluesky User 2" "Another typical user of Bluesky, @user2.bsky.social" typical
|
|
otherIDBlueskyUser1 = person "Bluesky User at example.com" "A Bluesky user with ID @user.example.com" federation
|
|
otherIDBlueskyUser2 = person "Bluesky User at example.me" "A Bluesky user with ID @user.example.me" federation
|
|
|
|
blueskyStaffMemberAsAdmin = person "A Bluesky admin" "A member of Bluesky staff operating as an admin" algorithmic
|
|
blueskyStaffMemberAsModerator = person "A Bluesky moderator" "A member of Bluesky staff operating as a moderator" moderation
|
|
|
|
externalBlueskyModerator1 = person "An external Bluesky moderator" "An external labeller" moderation
|
|
|
|
group controlledByBluesky {
|
|
centralBluesky = softwareSystem "Central Bluesky" "The original Bluesky implementation" atproto {
|
|
group blueskyTypical {
|
|
centralBlueskyAppView = container "Central Bluesky App View" "A view into the network for users" "" typical
|
|
group Entryway {
|
|
centralBlueskyPDS1 = container "Central Bluesky PDS" "A Personal Data Server in the Bluesky-hosted environment." "" "database,typical"
|
|
centralBlueskyPDS2 = container "Central Bluesky PDS 2" "Another Personal Data Server in the Bluesky-hosted environment." "" "database,typical"
|
|
centralBlueskyPDS3 = container "Central Bluesky PDS 3" "A third Personal Data Server in the Bluesky-hosted environment." "" "database,typical"
|
|
}
|
|
centralBlueskyIdentityResolver = container "Central Bluesky ID resolver" "Identity resolver for @<user>.bsky.social users" "" typical
|
|
}
|
|
|
|
group blueskyModeration {
|
|
centralBlueskyModeration = container "Central Bluesky moderation" "The network's initial, and non-optional, labelling and moderation service" "" moderation
|
|
}
|
|
|
|
group blueskyFeeds {
|
|
centralBlueskyFeeds = container "Central Bluesky feeds generation" "A service providing subscribable algorithmic feeds" "" algorithmic
|
|
}
|
|
|
|
centralBlueskyAppViewToCentralBlueskyIdentityResolver = centralBlueskyAppView -> centralBlueskyIdentityResolver "Validates"
|
|
|
|
centralBlueskyAppViewToCentralBlueskyPDS1 = centralBlueskyAppView -> centralBlueskyPDS1 "App View reads and writes"
|
|
centralBlueskyAppViewToCentralBlueskyPDS2 = centralBlueskyAppView -> centralBlueskyPDS2 "App View reads and writes"
|
|
centralBlueskyAppViewToCentralBlueskyPDS3 = centralBlueskyAppView -> centralBlueskyPDS3 "App View reads and writes"
|
|
|
|
centralBlueskyAppViewToCentralBlueskyFeeds = centralBlueskyAppView -> centralBlueskyFeeds "App View reads"
|
|
centralBlueskyAppViewToCentralBlueskyModeration = centralBlueskyAppView -> centralBlueskyModeration "App View reads"
|
|
|
|
centralBlueskyFeedsToCentralBlueskyPDS1 = centralBlueskyFeeds -> centralBlueskyPDS1 "Feeds reads"
|
|
centralBlueskyFeedsToCentralBlueskyPDS2 = centralBlueskyFeeds -> centralBlueskyPDS2 "Feeds reads"
|
|
centralBlueskyFeedsToCentralBlueskyPDS3 = centralBlueskyFeeds -> centralBlueskyPDS3 "Feeds reads"
|
|
centralBlueskyFeedsToCentralBlueskyModeration = centralBlueskyFeeds -> centralBlueskyModeration "Feeds reads"
|
|
|
|
centralBlueskyModerationToCentralBlueskyPDS1 = centralBlueskyModeration -> centralBlueskyPDS1 "Moderation reads"
|
|
centralBlueskyModerationToCentralBlueskyPDS2 = centralBlueskyModeration -> centralBlueskyPDS2 "Moderation reads"
|
|
centralBlueskyModerationToCentralBlueskyPDS3 = centralBlueskyModeration -> centralBlueskyPDS3 "Moderation reads"
|
|
|
|
typicalBlueskyUser1ToCentralBlueskyIdentityResolver = typicalBlueskyUser1 -> centralBlueskyIdentityResolver "Registers"
|
|
typicalBlueskyUser2ToCentralBlueskyIdentityResolver = typicalBlueskyUser2 -> centralBlueskyIdentityResolver "Registers"
|
|
|
|
typicalBlueskyUser1ToCentralBlueskyAppView = typicalBlueskyUser1 -> centralBlueskyAppView "Uses"
|
|
typicalBlueskyUser2ToCentralBlueskyAppView = typicalBlueskyUser2 -> centralBlueskyAppView "Uses"
|
|
otherIDBlueskyUser1ToCentralBlueskyAppView = otherIDBlueskyUser1 -> centralBlueskyAppView "Uses"
|
|
otherIDBlueskyUser2ToCentralBlueskyAppView = otherIDBlueskyUser2 -> centralBlueskyAppView "Uses"
|
|
|
|
blueskyStaffMemberAsAdminToCentralBlueskyFeeds = blueskyStaffMemberAsAdmin -> centralBlueskyFeeds "Creates"
|
|
blueskyStaffMemberAsModeratorToCentralBlueskyModeration = blueskyStaffMemberAsModerator -> centralBlueskyModeration "Labels"
|
|
}
|
|
|
|
blueskyAppView = softwareSystem "Bluesky's App View" "Bluesky's App View implementation as a separate application" typical {
|
|
blueskyAppViewApp = container "Bluesky's App View Application" "An App View app for the user" "Web Application" typical
|
|
blueskyAppViewAPI = container "Bluesky's App View API" "An API, for use by third-party applications and bots" "" typical
|
|
blueskyAppViewServices = container "Bluesky's App View Services" "Data retrieval services" "" typical
|
|
blueskyAppViewIndex = container "Bluesky's App View Index" "Index of posts and related data" "" typical
|
|
|
|
blueskyAppViewApp -> blueskyAppViewAPI "Accesses"
|
|
blueskyAppViewAPI -> blueskyAppViewServices "Consumes"
|
|
blueskyAppViewServices -> blueskyAppViewIndex "Consults"
|
|
}
|
|
|
|
blueskyRelay = softwareSystem "A Bluesky Relay" "A service making available all data in the bluesky network" atproto {
|
|
blueskyRelayAPI = container "Relay API" "An API for writing to and reading from the Relay" "" atproto
|
|
blueskyRelayDB = container "Relay database" "The database holding metadata of all posts" "" "database,atproto"
|
|
|
|
blueskyRelayAPI -> blueskyRelayDB "Reads and writes"
|
|
}
|
|
|
|
blueskyFeedsGenerator = softwareSystem "Bluesky's Feed Generation" "A service building and exposing algorithmic feeds" algorithmic {
|
|
blueskyFeedsGeneratorApp = container "Feed generator App" "An application for building algorithmic feeds" "" algorithmic
|
|
blueskyFeedsGeneratorAPI = container "Feed generator API" "An API for accessing algorithmic feeds" "" algorithmic
|
|
blueskyFeedsGeneratorService = container "Feed generator data capture service" "The database holding details of the algorithmic feeds" "" algorithmic
|
|
blueskyFeedsGeneratorDB = container "Feed generator database" "The database holding details of the algorithmic feeds" "" "database,algorithmic"
|
|
|
|
blueskyFeedsGeneratorApp -> blueskyFeedsGeneratorAPI "For management"
|
|
blueskyFeedsGeneratorAPI -> blueskyFeedsGeneratorService "Consumes"
|
|
blueskyFeedsGeneratorService -> blueskyFeedsGeneratorDB "Writes"
|
|
}
|
|
|
|
blueskyModeration = softwareSystem "Bluesky Moderation" "An independent service building and exposing moderation decisions" moderation {
|
|
blueskyModerationApp = container "Moderation labelling app" "An application for labelling items" "" moderation
|
|
blueskyModerationAPI = container "Moderation API" "An API for accessing decisions and for applying labels" "" moderation
|
|
blueskyModerationService = container "Moderation data capture service" "Service to provide access to posts for moderation actions" "" moderation
|
|
blueskyModerationDB = container "Moderation decisions database" "The database holding details of the moderation decisions" "" "database,moderation"
|
|
|
|
blueskyModerationApp -> blueskyModerationAPI "For management"
|
|
blueskyModerationAPI -> blueskyModerationService "Consumes"
|
|
blueskyModerationService -> blueskyModerationDB "Writes"
|
|
}
|
|
}
|
|
|
|
typicalBlueskyUser1ToCentralBluesky = typicalBlueskyUser1 -> centralBluesky "Enjoys"
|
|
typicalBlueskyUser2ToCentralBluesky = typicalBlueskyUser2 -> centralBluesky "Enjoys"
|
|
otherIDBlueskyUser1ToCentralBluesky = otherIDBlueskyUser1 -> centralBluesky "Enjoys"
|
|
otherIDBlueskyUser2ToCentralBluesky = otherIDBlueskyUser2 -> centralBluesky "Enjoys"
|
|
blueskyStaffMemberAsAdminToCentralBluesky = blueskyStaffMemberAsAdmin -> centralBluesky "Manages"
|
|
blueskyStaffMemberAsModeratorToCentralBluesky = blueskyStaffMemberAsModerator -> centralBluesky "Builds trust"
|
|
typicalBlueskyUser1 -> blueskyAppViewApp "Uses"
|
|
typicalBlueskyUser2 -> blueskyAppViewApp "Uses"
|
|
blueskyAppViewServicesToCentralBlueskyPDS1 = blueskyAppViewServices -> centralBlueskyPDS1 "Reads and writes"
|
|
blueskyAppViewServicesToCentralBlueskyPDS2 = blueskyAppViewServices -> centralBlueskyPDS2 "Reads and writes"
|
|
blueskyAppViewServicesToCentralBlueskyPDS3 = blueskyAppViewServices -> centralBlueskyPDS3 "Reads and writes"
|
|
blueskyAppViewServices -> centralBlueskyFeeds "Reads"
|
|
blueskyAppViewServices -> centralBlueskyModeration "Reads"
|
|
|
|
group controlledBySelfHosters {
|
|
independentExampleComIDSystem = softwareSystem "External Identity Management for example.com users" "An external system for managing user identities in example.com" atproto {
|
|
independentExampleComIdentityResolver = container "External ID resolver" "Identity resolver for @<user>.example.com users" ".well-known" typical
|
|
|
|
otherIDBlueskyUser1ToIndependentExampleComIdentityResolver = otherIDBlueskyUser1 -> independentExampleComIdentityResolver "Registers"
|
|
}
|
|
|
|
independentExampleMeIDSystem = softwareSystem "External Identity Management for example.me users" "An external system for managing user identities in example.me" atproto {
|
|
independentExampleMeIdentityResolver = container "External ID resolver" "Identity resolver for @<user>.example.me users" "DNS TXT" typical
|
|
|
|
otherIDBlueskyUser2ToIndependentExampleMeIdentityResolver = otherIDBlueskyUser2 -> independentExampleMeIdentityResolver "Registers"
|
|
}
|
|
|
|
independentPDS1 = softwareSystem "A selfhosted PDS" "A Personal Data Server hosted and maintain by the Bluesky user" atproto {
|
|
independentPDS1PDSAPI = container "PDS API" "The API to access the Personal Data Server for @<user>.example.social." "" typical
|
|
independentPDS1PDSService = container "PDS publish service" "A service to publish activity into the PDS to the Relay" "" typical
|
|
independentPDS1PDSDB = container "PDS DB" "The database for the Personal Data Server for @<user>.example.social." "" "database,typical"
|
|
|
|
independentPDS1PDSAPI -> independentPDS1PDSDB "API Reads and writes"
|
|
independentPDS1PDSService -> independentPDS1PDSDB "Reads"
|
|
}
|
|
|
|
independentPDS2 = softwareSystem "Another selfhosted PDS" "A Personal Data Server hosted and maintain by the Bluesky user" atproto {
|
|
independentPDS2PDSAPI = container "PDS 2 API" "The API to access the Personal Data Server." "" typical
|
|
independentPDS2PDSService = container "PDS 2 publish service" "A service to publish activity into the PDS to the Relay" "" typical
|
|
independentPDS2PDSDB = container "PDS 2 DB" "The database for the Personal Data Server." "" "database,typical"
|
|
|
|
independentPDS2PDSAPI -> independentPDS2PDSDB "API Reads and writes"
|
|
independentPDS2PDSService -> independentPDS2PDSDB "Reads"
|
|
}
|
|
|
|
independentAppView = softwareSystem "An Independent App View" "Bluesky's App View implementation as a separate application" typical {
|
|
independentAppViewApp = container "An Independent App View Application" "An App View app for the user" "Web Application" typical
|
|
independentAppViewAPI = container "An Independent App View API" "An API, for use by third-party applications and bots" "" typical
|
|
independentAppViewServices = container "An Independent App View Services" "Data retrieval services" "" typical
|
|
independentAppViewIndex = container "An Independent App View Index" "Index of posts and related data" "" typical
|
|
|
|
independentAppViewApp -> independentAppViewAPI "Accesses"
|
|
independentAppViewAPI -> independentAppViewServices "Consumes"
|
|
independentAppViewServices -> independentAppViewIndex "Consults"
|
|
}
|
|
|
|
independentFeedGenerator = softwareSystem "Independent Feed Generation" "An independent service building and exposing algorithmic feeds" algorithmic {
|
|
independentFeedGeneratorApp = container "Feed generator App" "An application for building algorithmic feeds" "" algorithmic
|
|
independentFeedGeneratorAPI = container "Feed generator API" "An API for accessing algorithmic feeds" "" algorithmic
|
|
independentFeedGeneratorService = container "Feed generator data capture service" "The database holding details of the algorithmic feeds" "" algorithmic
|
|
independentFeedGeneratorDB = container "Feed generator database" "The database holding details of the algorithmic feeds" "" "database,algorithmic"
|
|
|
|
independentFeedGeneratorApp -> independentFeedGeneratorAPI "For management"
|
|
independentFeedGeneratorAPI -> independentFeedGeneratorService "Consumes"
|
|
independentFeedGeneratorService -> independentFeedGeneratorDB "Writes"
|
|
}
|
|
|
|
independentModeration = softwareSystem "Independent Moderation" "An independent service building and exposing moderation decisions" moderation {
|
|
independentModerationApp = container "Moderation labelling app" "An application for labelling items" "" moderation
|
|
independentModerationAPI = container "Moderation API" "An API for accessing decisions and for applying labels" "" moderation
|
|
independentModerationService = container "Moderation data capture service" "Service to provide access to posts for moderation actions" "" moderation
|
|
independentModerationDB = container "Moderation decisions database" "The database holding details of the moderation decisions" "" "database,moderation"
|
|
|
|
independentModerationApp -> independentModerationAPI "For management"
|
|
independentModerationAPI -> independentModerationService "Consumes"
|
|
independentModerationService -> independentModerationDB "Writes"
|
|
}
|
|
}
|
|
|
|
group genericBSkyServices {
|
|
genericBSkyIDSystem = softwareSystem "Generic Bluesky Identity Management for users" "A generic system for managing user identities for the AT Protocol" atproto {
|
|
genericBSkyIdentityResolver = container "Independent ID resolver" "Identity resolver for" "DNS TXT or .well-known" atproto
|
|
}
|
|
|
|
genericFeedGenerator = softwareSystem "Generic Feed Generation" "An generic service building and exposing algorithmic feeds" algorithmic {
|
|
genericFeedGeneratorApp = container "Feed generator App" "An application for building algorithmic feeds" "" algorithmic
|
|
genericFeedGeneratorAPI = container "Feed generator API" "An API for accessing algorithmic feeds" "" algorithmic
|
|
genericFeedGeneratorService = container "Feed generator data capture service" "The database holding details of the algorithmic feeds" "" algorithmic
|
|
genericFeedGeneratorDB = container "Feed generator database" "The database holding details of the algorithmic feeds" "" "database,algorithmic"
|
|
|
|
genericFeedGeneratorApp -> genericFeedGeneratorAPI "For management"
|
|
genericFeedGeneratorAPI -> genericFeedGeneratorService "Consumes"
|
|
genericFeedGeneratorService -> genericFeedGeneratorDB "Writes"
|
|
}
|
|
|
|
genericAppView = softwareSystem "A Generic App View" "Bluesky's App View implementation as a separate application" typical {
|
|
genericAppViewApp = container "A Generic App View Application" "An App View app for the user" "Web Application" typical
|
|
genericAppViewAPI = container "A Generic App View API" "An API, for use by third-party applications and bots" "" typical
|
|
genericAppViewServices = container "A Generic App View Services" "Data retrieval services" "" typical
|
|
genericAppViewIndex = container "A Generic App View Index" "Index of posts and related data" "" typical
|
|
|
|
genericAppViewApp -> genericAppViewAPI "Accesses"
|
|
genericAppViewAPI -> genericAppViewServices "Consumes"
|
|
genericAppViewServices -> genericAppViewIndex "Consults"
|
|
}
|
|
|
|
genericPDS = softwareSystem "A generic PDS" "A Personal Data Server hosted and maintain by the Bluesky user" atproto {
|
|
genericPDSPDSAPI = container "PDS API" "The API to access the Personal Data Server for @<user>.example.social." "" typical
|
|
genericPDSPDSService = container "PDS publish service" "A service to publish activity into the PDS to the Relay" "" typical
|
|
genericPDSPDSDB = container "PDS DB" "The database for the Personal Data Server for @<user>.example.social." "" "database,typical"
|
|
|
|
genericPDSPDSAPI -> genericPDSPDSDB "API Reads and writes"
|
|
genericPDSPDSService -> genericPDSPDSDB "Reads"
|
|
}
|
|
}
|
|
// AppView reads from moderation API
|
|
genericAppViewServices -> blueskyModerationAPI "App View reads"
|
|
genericAppViewServices -> independentModerationAPI "App View reads"
|
|
// Moderatory uses the app
|
|
blueskyStaffMemberAsModerator -> blueskyModerationApp "Labels"
|
|
externalBlueskyModerator1 -> independentModerationApp "Labels"
|
|
// Moderation reads the relay (not the PDS!)
|
|
blueskyModerationService -> blueskyRelayAPI "Reads and writes"
|
|
independentModerationService -> blueskyRelayAPI "Reads and writes"
|
|
|
|
typicalBlueskyUser1 -> independentAppViewApp "Uses"
|
|
typicalBlueskyUser2 -> independentAppViewApp "Uses"
|
|
independentAppViewServicesToCentralBlueskyPDS1 = independentAppViewServices -> centralBlueskyPDS1 "Reads and writes"
|
|
independentAppViewServicesToCentralBlueskyPDS2 = independentAppViewServices -> centralBlueskyPDS2 "Reads and writes"
|
|
independentAppViewServicesToCentralBlueskyPDS3 = independentAppViewServices -> centralBlueskyPDS3 "Reads and writes"
|
|
independentAppViewServices -> centralBlueskyFeeds "Reads"
|
|
independentAppViewServices -> centralBlueskyModeration "Reads"
|
|
typicalBlueskyUser1 -> genericAppViewApp "Uses"
|
|
typicalBlueskyUser2 -> genericAppViewApp "Uses"
|
|
genericAppViewServicesToCentralBlueskyPDS1 = genericAppViewServices -> centralBlueskyPDS1 "Reads and writes"
|
|
genericAppViewServicesToCentralBlueskyPDS2 = genericAppViewServices -> centralBlueskyPDS2 "Reads and writes"
|
|
genericAppViewServicesToCentralBlueskyPDS3 = genericAppViewServices -> centralBlueskyPDS3 "Reads and writes"
|
|
genericAppViewServices -> centralBlueskyFeeds "Reads"
|
|
genericAppViewServices -> centralBlueskyModeration "Reads"
|
|
centralBlueskyAppViewToIndependentExampleComIdentityResolver = centralBlueskyAppView -> independentExampleComIdentityResolver "Validates"
|
|
|
|
centralBlueskyAppViewToIndependentExampleMeIdentityResolver = centralBlueskyAppView -> independentExampleMeIdentityResolver "Validates"
|
|
typicalBlueskyUser1ToGenericBSkyIdentityResolver = typicalBlueskyUser1 -> genericBSkyIdentityResolver "Registers"
|
|
typicalBlueskyUser2ToGenericBSkyIdentityResolver = typicalBlueskyUser2 -> genericBSkyIdentityResolver "Registers"
|
|
centralBlueskyAppViewToGenericBSkyIdentityResolver = centralBlueskyAppView -> genericBSkyIdentityResolver "Validates"
|
|
|
|
independentPDS1BlueskyUser1 = person "Own PDS Bluesky user" "A Bluesky user hosting their own PDS" federation
|
|
|
|
independentPDS1BlueskyUser1 -> blueskyAppViewApp "Uses"
|
|
independentPDS1BlueskyUser1 -> independentAppViewApp "Uses"
|
|
independentPDS1BlueskyUser1 -> genericAppViewApp "Uses"
|
|
independentPDS1BlueskyUser1 -> independentPDS1 "Manages"
|
|
blueskyAppViewServices -> independentPDS1PDSAPI "Writes"
|
|
independentAppViewServices -> independentPDS1PDSAPI "Writes"
|
|
genericAppViewServices -> independentPDS1PDSAPI "Writes"
|
|
centralBlueskyAppView -> independentPDS1PDSAPI "App View writes"
|
|
|
|
independentPDS1BlueskyUser1 -> genericPDS "Manages"
|
|
blueskyAppViewServices -> genericPDSPDSAPI "Writes"
|
|
independentAppViewServices -> genericPDSPDSAPI "Writes"
|
|
genericAppViewServices -> genericPDSPDSAPI "Writes"
|
|
centralBlueskyAppView -> genericPDSPDSAPI "App View writes"
|
|
|
|
independentPDS2BlueskyUser1 = person "Another Own PDS Bluesky user" "A Bluesky user hosting their own PDS" federation
|
|
|
|
independentPDS2BlueskyUser1 -> blueskyAppViewApp "Uses"
|
|
independentPDS2BlueskyUser1 -> independentAppViewApp "Uses"
|
|
independentPDS2BlueskyUser1 -> genericAppViewApp "Uses"
|
|
independentPDS2BlueskyUser1 -> independentPDS2 "Manages"
|
|
blueskyAppViewServices -> independentPDS2PDSAPI "Writes"
|
|
independentAppViewServices -> independentPDS2PDSAPI "Writes"
|
|
genericAppViewServices -> independentPDS2PDSAPI "Writes"
|
|
centralBlueskyAppView -> independentPDS2PDSAPI "App View writes"
|
|
|
|
externalBlueskyAlgorithmBuilder = person "A feed builder" "An external feed/algorithm builder" algorithmic
|
|
|
|
independentFeedGeneratorServiceToCentralBlueskyPDS1 = independentFeedGeneratorService -> centralBlueskyPDS1 "Reads"
|
|
independentFeedGeneratorServiceToCentralBlueskyPDS2 = independentFeedGeneratorService -> centralBlueskyPDS2 "Reads"
|
|
independentFeedGeneratorServiceToCentralBlueskyPDS3 = independentFeedGeneratorService -> centralBlueskyPDS3 "Reads"
|
|
genericFeedGeneratorServiceToCentralBlueskyPDS1 = genericFeedGeneratorService -> centralBlueskyPDS1 "Reads"
|
|
genericFeedGeneratorServiceToCentralBlueskyPDS2 = genericFeedGeneratorService -> centralBlueskyPDS2 "Reads"
|
|
genericFeedGeneratorServiceToCentralBlueskyPDS3 = genericFeedGeneratorService -> centralBlueskyPDS3 "Reads"
|
|
blueskyFeedsGeneratorServiceToCentralBlueskyPDS1 = blueskyFeedsGeneratorService -> centralBlueskyPDS1 "Reads"
|
|
blueskyFeedsGeneratorServiceToCentralBlueskyPDS2 = blueskyFeedsGeneratorService -> centralBlueskyPDS2 "Reads"
|
|
blueskyFeedsGeneratorServiceToCentralBlueskyPDS3 = blueskyFeedsGeneratorService -> centralBlueskyPDS3 "Reads"
|
|
centralBlueskyAppViewToIndependentFeedGeneratorAPI = centralBlueskyAppView -> independentFeedGeneratorAPI "App View reads"
|
|
blueskyAppViewServices -> independentFeedGeneratorAPI "App View reads"
|
|
externalBlueskyAlgorithmBuilder -> independentFeedGeneratorApp "Creates and manages feeds"
|
|
centralBlueskyAppViewToGenericFeedGeneratorAPI = centralBlueskyAppView -> genericFeedGeneratorAPI "App View reads"
|
|
blueskyAppViewServices -> genericFeedGeneratorAPI "App View reads"
|
|
externalBlueskyAlgorithmBuilder -> genericFeedGeneratorApp "Creates and manages feeds"
|
|
centralBlueskyAppViewToBlueskyFeedsGeneratorAPI = centralBlueskyAppView -> blueskyFeedsGeneratorAPI "App View reads"
|
|
blueskyAppViewServices -> blueskyFeedsGeneratorAPI "App View reads"
|
|
independentAppViewServices -> independentFeedGeneratorAPI "App View reads"
|
|
independentAppViewServices -> genericFeedGeneratorAPI "App View reads"
|
|
independentAppViewServices -> blueskyFeedsGeneratorAPI "App View reads"
|
|
genericAppViewServices -> independentFeedGeneratorAPI "App View reads"
|
|
genericAppViewServices -> genericFeedGeneratorAPI "App View reads"
|
|
genericAppViewServices -> blueskyFeedsGeneratorAPI "App View reads"
|
|
blueskyStaffMemberAsAdmin -> blueskyFeedsGeneratorApp "Creates and manages feeds"
|
|
blueskyStaffMemberAsAdmin -> genericFeedGeneratorApp "Creates and manages feeds"
|
|
|
|
centralBlueskyPDS1 -> blueskyRelayAPI "Writes"
|
|
centralBlueskyPDS2 -> blueskyRelayAPI "Writes"
|
|
centralBlueskyPDS3 -> blueskyRelayAPI "Writes"
|
|
centralBlueskyModeration -> blueskyRelayAPI "Reads"
|
|
blueskyAppViewServices -> blueskyRelayAPI "App View reads"
|
|
independentAppViewServices -> blueskyRelayAPI "App View reads"
|
|
genericAppViewServices -> blueskyRelayAPI "App View reads"
|
|
independentFeedGeneratorService -> blueskyRelayAPI "Reads"
|
|
genericFeedGeneratorService -> blueskyRelayAPI "Reads"
|
|
blueskyFeedsGeneratorService -> blueskyRelayAPI "Reads"
|
|
independentPDS1PDSService -> blueskyRelayAPI "Writes"
|
|
genericPDSPDSService -> blueskyRelayAPI "Writes"
|
|
independentPDS2PDSService -> blueskyRelayAPI "Writes"
|
|
|
|
}
|
|
|
|
views {
|
|
|
|
// Won't be used for presentation
|
|
systemLandscape fullSystemLandscape {
|
|
autolayout
|
|
include *
|
|
}
|
|
|
|
// 001: Generic social media. An overview of a generic social media service
|
|
systemContext genericSocial 001-GenericSocial-01 {
|
|
autolayout
|
|
include *
|
|
// Excluding relationships that make sense only at the next level
|
|
exclude socialUserToGenericSocialApp
|
|
}
|
|
|
|
// 002: Generic social media. A container view of a generic social service
|
|
container genericSocial 002-GenericSocial-02 {
|
|
autolayout
|
|
include *
|
|
}
|
|
|
|
// 003: Realistic social media. Overview of a more realistic social service
|
|
systemContext realisticSocial 003-RealisticSocial-01 {
|
|
autolayout
|
|
include *
|
|
// Excluding relationships that make sense only at the next level
|
|
exclude socialUserToRealisticSocialApp socialModeratorToRealisticSocialModeratingApp socialAdminToRealisticSocialFeedDesigner
|
|
}
|
|
|
|
// 004: Realistic social media. A container view of the more realistic service, showing the basic containers
|
|
container realisticSocial 004-RealisticSocial-02 {
|
|
autolayout
|
|
include *
|
|
// Excluding the admin and the algorithm designer and the moderation activities
|
|
exclude realisticSocialFeedDesigner socialAdmin realisticSocialModerationAPI realisticSocialModeratingApp socialModerator
|
|
}
|
|
|
|
// 005: Realistic social media. A container view of the more realistic service, including algorithm works
|
|
container realisticSocial 005-RealisticSocial-03 {
|
|
autolayout
|
|
include *
|
|
// Excluding the moderation activities
|
|
exclude realisticSocialModerationAPI realisticSocialModeratingApp socialModerator
|
|
}
|
|
|
|
// 006: Realistic social media. A container view of the full more realistic service (typical, algorithm and moderation)
|
|
container realisticSocial 006-RealisticSocial-04 {
|
|
autolayout
|
|
include *
|
|
}
|
|
|
|
// 007: Federated social media. Overview of a federated social media service
|
|
systemContext federatedSocial1 007-FederatedSocial-01 {
|
|
autolayout
|
|
include *
|
|
// Excluding relationships that make sense only at the next level
|
|
exclude federatedSocial1UserToFederatedSocial1App federatedSocial1AdminToFederatedSocial1ModeratingApp
|
|
exclude federatedSocial2 federatedSocial3 federatedSocial4
|
|
}
|
|
|
|
// 008: Federated social media. Container diagram of a basic federated social service, showing administration/moderation
|
|
container federatedSocial1 008-FederatedSocial-02 {
|
|
autolayout
|
|
include *
|
|
exclude federatedSocial1Federation federatedSocial1FederationAPI federatedSocial1FederatedPostsDB
|
|
exclude federatedSocial2 federatedSocial3 federatedSocial4
|
|
}
|
|
|
|
// 009: Federated social media. Container diagram of a basic federated social service, showing administration/moderation and federation components
|
|
container federatedSocial1 009-FederatedSocial-03 {
|
|
autolayout
|
|
include *
|
|
exclude federatedSocial2 federatedSocial3 federatedSocial4
|
|
}
|
|
|
|
// 010: Federated social media. Full container diagram of a basic federated social service, showing another service federating with it
|
|
container federatedSocial1 010-FederatedSocial-04 {
|
|
autolayout
|
|
include * federatedSocial2User
|
|
exclude federatedSocial3 federatedSocial4
|
|
}
|
|
|
|
// 011: Federated social media. Overview of a federated social media service, showing another one federating with it, including its user
|
|
systemContext federatedSocial1 011-FederatedSocial-05 {
|
|
autolayout
|
|
include * federatedSocial2User
|
|
// Excluding relationships that make sense only at the next level
|
|
exclude federatedSocial1UserToFederatedSocial1App federatedSocial1AdminToFederatedSocial1ModeratingApp
|
|
exclude federatedSocial3 federatedSocial4
|
|
}
|
|
|
|
// 012: Federated social media. Overview of a federated social media service, showing another one federating with it, including its user and its admin
|
|
systemContext federatedSocial1 012-FederatedSocial-06 {
|
|
autolayout
|
|
include * federatedSocial2User federatedSocial2Admin
|
|
// Excluding relationships that make sense only at the next level
|
|
exclude federatedSocial1UserToFederatedSocial1App federatedSocial1AdminToFederatedSocial1ModeratingApp
|
|
exclude federatedSocial3 federatedSocial4
|
|
}
|
|
|
|
// 013: Federated social media. Overview of a federated social media service, showing 2 others federating with it, including their users and admins
|
|
systemContext federatedSocial1 013-FederatedSocial-07 {
|
|
autolayout
|
|
include * federatedSocial2User federatedSocial2Admin federatedSocial3User federatedSocial3Admin
|
|
// Excluding relationships that make sense only at the next level
|
|
exclude federatedSocial1UserToFederatedSocial1App federatedSocial1AdminToFederatedSocial1ModeratingApp
|
|
exclude federatedSocial4
|
|
}
|
|
|
|
// 014: Federated social media. Overview of a federated social media service, showing 3 others federating with it, including their users and admins
|
|
systemContext federatedSocial1 014-FederatedSocial-08 {
|
|
autolayout
|
|
include * federatedSocial2User federatedSocial2Admin federatedSocial3User federatedSocial3Admin federatedSocial4User federatedSocial4Admin
|
|
// Excluding relationships that make sense only at the next level
|
|
exclude federatedSocial1UserToFederatedSocial1App federatedSocial1AdminToFederatedSocial1ModeratingApp
|
|
}
|
|
|
|
// 015: Bluesky. Basic overview of Bluesky. User, Admin, Moderator.
|
|
systemContext centralBluesky 015-BlueskyBasic-01 {
|
|
autolayout
|
|
include *
|
|
// Services to exclude
|
|
exclude blueskyAppView blueskyFeedsGenerator blueskyRelay
|
|
exclude independentAppView independentExampleComIDSystem independentExampleMeIDSystem independentFeedGenerator independentPDS1 independentPDS2
|
|
exclude genericAppView genericBSkyIDSystem genericFeedGenerator genericPDS
|
|
// Users to exclude
|
|
exclude independentPDS1BlueskyUser1 independentPDS2BlueskyUser1 typicalBlueskyUser2
|
|
exclude otherIDBlueskyUser1 otherIDBlueskyUser2
|
|
// Excluding relationships that make sense only at the next level
|
|
exclude typicalBlueskyUser1ToCentralBlueskyAppView typicalBlueskyUser2ToCentralBlueskyAppView
|
|
exclude blueskyStaffMemberAsModeratorToCentralBlueskyModeration blueskyStaffMemberAsAdminToCentralBlueskyFeeds
|
|
exclude typicalBlueskyUser1ToCentralBlueskyIdentityResolver typicalBlueskyUser2ToCentralBlueskyIdentityResolver
|
|
exclude otherIDBlueskyUser1ToCentralBlueskyAppView otherIDBlueskyUser2ToCentralBlueskyAppView
|
|
}
|
|
|
|
// 016: Bluesky. Container diagram introducing Bluesky
|
|
container centralBluesky 016-BlueskyBasic-02 {
|
|
autolayout
|
|
include *
|
|
// Services to exclude
|
|
exclude centralBlueskyPDS2 centralBlueskyPDS3
|
|
exclude blueskyAppView blueskyFeedsGenerator blueskyRelay
|
|
exclude independentAppView independentExampleComIDSystem independentExampleMeIDSystem independentFeedGenerator independentPDS1 independentPDS2
|
|
exclude genericAppView genericFeedGenerator genericBSkyIDSystem genericPDS
|
|
// Users to exclude
|
|
exclude independentPDS1BlueskyUser1 independentPDS2BlueskyUser1 otherIDBlueskyUser1 otherIDBlueskyUser2 typicalBlueskyUser2
|
|
}
|
|
|
|
// 017: Bluesky, independent identity. Overview of Bluesky with externally-identified user
|
|
systemContext centralBluesky 017-BlueskyIdentity-01 {
|
|
autolayout
|
|
include *
|
|
// Services to exclude
|
|
exclude blueskyAppView blueskyFeedsGenerator blueskyRelay
|
|
exclude independentAppView independentExampleMeIDSystem independentFeedGenerator independentPDS1 independentPDS2
|
|
exclude genericAppView genericFeedGenerator genericBSkyIDSystem genericPDS
|
|
// Users to exclude
|
|
exclude independentPDS1BlueskyUser1 independentPDS2BlueskyUser1
|
|
exclude otherIDBlueskyUser2
|
|
exclude blueskyStaffMemberAsAdmin blueskyStaffMemberAsModerator typicalBlueskyUser2
|
|
// Excluding relationships that make sense only at the next level
|
|
exclude typicalBlueskyUser1ToCentralBlueskyAppView typicalBlueskyUser2ToCentralBlueskyAppView
|
|
exclude blueskyStaffMemberAsModeratorToCentralBlueskyModeration blueskyStaffMemberAsAdminToCentralBlueskyFeeds
|
|
exclude typicalBlueskyUser1ToCentralBlueskyIdentityResolver typicalBlueskyUser2ToCentralBlueskyIdentityResolver
|
|
exclude otherIDBlueskyUser1ToCentralBlueskyAppView otherIDBlueskyUser2ToCentralBlueskyAppView
|
|
}
|
|
|
|
// 018: Bluesky, independent identity. Container diagram showing externally-identified user
|
|
container centralBluesky 018-BlueskyIdentity-02 {
|
|
autolayout
|
|
include *
|
|
// Services to exclude
|
|
exclude centralBlueskyPDS2 centralBlueskyPDS3
|
|
exclude blueskyAppView blueskyFeedsGenerator blueskyRelay
|
|
exclude independentAppView independentExampleMeIDSystem independentFeedGenerator independentPDS1 independentPDS2
|
|
exclude genericAppView genericBSkyIDSystem genericFeedGenerator genericPDS
|
|
// Users to exclude
|
|
exclude independentPDS1BlueskyUser1 independentPDS2BlueskyUser1 otherIDBlueskyUser2 typicalBlueskyUser2
|
|
}
|
|
|
|
// 019: Bluesky, independent identity. Container diagram showing 2 externally-identified users
|
|
container centralBluesky 019-BlueskyIdentity-03 {
|
|
autolayout
|
|
include *
|
|
// Services to exclude
|
|
exclude centralBlueskyPDS2 centralBlueskyPDS3
|
|
exclude blueskyAppView blueskyFeedsGenerator blueskyRelay
|
|
exclude independentAppView independentFeedGenerator independentPDS1 independentPDS2
|
|
exclude genericAppView genericBSkyIDSystem genericFeedGenerator genericPDS
|
|
// Users to exclude
|
|
exclude independentPDS1BlueskyUser1 independentPDS2BlueskyUser1 typicalBlueskyUser2
|
|
}
|
|
|
|
// 020: Bluesky, independent identity. Container diagram showing 2 typical users with identities in the independent ID system
|
|
container centralBluesky 020-BlueskyIdentity-04 {
|
|
autolayout
|
|
include *
|
|
// Services to exclude
|
|
exclude centralBlueskyIdentityResolver centralBlueskyPDS2 centralBlueskyPDS3
|
|
exclude blueskyAppView blueskyFeedsGenerator blueskyRelay
|
|
exclude independentAppView independentExampleComIDSystem independentExampleMeIDSystem independentFeedGenerator independentPDS1 independentPDS2
|
|
exclude genericAppView genericFeedGenerator genericPDS
|
|
// Users to exclude
|
|
exclude independentPDS1BlueskyUser1 independentPDS2BlueskyUser1 otherIDBlueskyUser1 otherIDBlueskyUser2
|
|
}
|
|
|
|
// 021: Bluesky, independent Feed Generation. Container diagram showing the independent Feed Generation service as a separate software system
|
|
container centralBluesky 021-BlueskyFeeds-01 {
|
|
autolayout
|
|
include * externalBlueskyAlgorithmBuilder
|
|
// Services to exclude
|
|
exclude centralBlueskyIdentityResolver centralBlueskyPDS2 centralBlueskyPDS3
|
|
exclude blueskyAppView blueskyFeedsGenerator blueskyRelay
|
|
exclude independentAppView independentExampleComIDSystem independentExampleMeIDSystem independentPDS1 independentPDS2
|
|
exclude genericAppView genericBSkyIDSystem genericFeedGenerator genericPDS
|
|
// Users to exclude
|
|
exclude independentPDS1BlueskyUser1 independentPDS2BlueskyUser1 otherIDBlueskyUser1 otherIDBlueskyUser2
|
|
}
|
|
|
|
// 022: Bluesky, independent Feed Generation. Container diagram of independent Feed Generation Service
|
|
container independentFeedGenerator 022-BlueskyFeeds-02 {
|
|
autolayout
|
|
include *
|
|
// Services to exclude
|
|
exclude blueskyAppView blueskyRelay
|
|
exclude independentAppView
|
|
exclude genericAppView
|
|
// Relationships to exclude
|
|
// exclude blueskyAppViewServicesToCentralBlueskyPDS1
|
|
}
|
|
|
|
// 023: Bluesky, independent Feed Generation. Container
|
|
// diagram showing the independent Feed Generation service as
|
|
// a separate software system, eliding the internal service
|
|
container centralBluesky 023-BlueskyFeeds-03 {
|
|
autolayout
|
|
include * externalBlueskyAlgorithmBuilder
|
|
// Services to exclude
|
|
exclude centralBlueskyFeeds centralBlueskyIdentityResolver centralBlueskyPDS2 centralBlueskyPDS3
|
|
exclude blueskyAppView blueskyRelay
|
|
exclude independentAppView independentExampleComIDSystem independentExampleMeIDSystem independentPDS1 independentPDS2
|
|
exclude genericAppView genericBSkyIDSystem genericFeedGenerator genericPDS
|
|
// Users to exclude
|
|
exclude independentPDS1BlueskyUser1 independentPDS2BlueskyUser1 otherIDBlueskyUser1 otherIDBlueskyUser2
|
|
}
|
|
|
|
// 024: Bluesky, independent Feed Generation. Container
|
|
// diagram showing a generic Feed Generation service
|
|
container centralBluesky 024-BlueskyFeeds-04 {
|
|
autolayout
|
|
include * externalBlueskyAlgorithmBuilder
|
|
// Services to exclude
|
|
exclude centralBlueskyFeeds centralBlueskyIdentityResolver centralBlueskyPDS2 centralBlueskyPDS3
|
|
exclude blueskyAppView blueskyFeedsGenerator blueskyRelay
|
|
exclude independentAppView independentExampleComIDSystem independentExampleMeIDSystem independentFeedGenerator independentPDS1 independentPDS2
|
|
exclude genericAppView genericBSkyIDSystem genericPDS
|
|
// Users to exclude
|
|
exclude independentPDS1BlueskyUser1 independentPDS2BlueskyUser1 otherIDBlueskyUser1 otherIDBlueskyUser2
|
|
}
|
|
|
|
// 025: Bluesky, independent App View. Container diagram
|
|
// showing the Bluesky's separate appview as a separate
|
|
// software system
|
|
container centralBluesky 025-BlueskyAppView-01 {
|
|
autolayout
|
|
include * externalBlueskyAlgorithmBuilder
|
|
// Services to exclude
|
|
exclude centralBlueskyAppView centralBlueskyFeeds centralBlueskyIdentityResolver centralBlueskyPDS2 centralBlueskyPDS3
|
|
exclude blueskyFeedsGenerator blueskyRelay
|
|
exclude independentAppView independentExampleComIDSystem independentExampleMeIDSystem independentFeedGenerator independentPDS1 independentPDS2
|
|
exclude genericAppView genericBSkyIDSystem genericPDS
|
|
// Users to exclude
|
|
exclude independentPDS1BlueskyUser1 independentPDS2BlueskyUser1 otherIDBlueskyUser1 otherIDBlueskyUser2
|
|
}
|
|
|
|
// 026: Bluesky, independent App View. Container diagram of independent App View
|
|
container blueskyAppView 026-BlueskyAppView-02 {
|
|
autolayout
|
|
include *
|
|
// Services to exclude
|
|
exclude blueskyFeedsGenerator blueskyRelay
|
|
exclude independentFeedGenerator independentPDS1 independentPDS2
|
|
exclude genericAppView genericPDS
|
|
// Relationships to exclude
|
|
exclude typicalBlueskyUser1ToCentralBlueskyIdentityResolver typicalBlueskyUser2ToCentralBlueskyIdentityResolver
|
|
exclude typicalBlueskyUser1ToCentralBluesky typicalBlueskyUser2ToCentralBluesky
|
|
// Users to exclude
|
|
exclude independentPDS1BlueskyUser1 independentPDS2BlueskyUser1
|
|
}
|
|
|
|
// 027: Bluesky, independent App View. Container diagram
|
|
// showing the Bluesky's separate appview as a separate
|
|
// software system alongside a separate independent AppView
|
|
container centralBluesky 027-BlueskyAppView-03 {
|
|
autolayout
|
|
include * externalBlueskyAlgorithmBuilder
|
|
// Services to exclude
|
|
exclude centralBlueskyAppView centralBlueskyFeeds centralBlueskyIdentityResolver centralBlueskyPDS2 centralBlueskyPDS3
|
|
exclude blueskyFeedsGenerator blueskyRelay
|
|
exclude independentExampleComIDSystem independentExampleMeIDSystem independentFeedGenerator independentPDS1 independentPDS2
|
|
exclude genericAppView genericBSkyIDSystem genericPDS
|
|
// Users to exclude
|
|
exclude independentPDS1BlueskyUser1 independentPDS2BlueskyUser1 otherIDBlueskyUser1 otherIDBlueskyUser2
|
|
}
|
|
|
|
// 028: Bluesky, independent App View. Container diagram
|
|
// showing the a Generic AppView representing both independent
|
|
// AppViews and Bluesky's own AppView
|
|
container centralBluesky 028-BlueskyAppView-04 {
|
|
autolayout
|
|
include * externalBlueskyAlgorithmBuilder
|
|
// Services to exclude
|
|
exclude centralBlueskyAppView centralBlueskyFeeds centralBlueskyIdentityResolver centralBlueskyPDS2 centralBlueskyPDS3
|
|
exclude blueskyAppView blueskyFeedsGenerator blueskyRelay
|
|
exclude independentAppView independentExampleComIDSystem independentExampleMeIDSystem independentFeedGenerator independentPDS1 independentPDS2
|
|
exclude genericPDS genericBSkyIDSystem
|
|
// Users to exclude
|
|
exclude independentPDS1BlueskyUser1 independentPDS2BlueskyUser1 otherIDBlueskyUser1 otherIDBlueskyUser2
|
|
}
|
|
|
|
// 029: Bluesky, Relay. Container diagram showing multiple PDSs in the internal system
|
|
container centralBluesky 029-BlueskyRelay-01 {
|
|
autolayout
|
|
include *
|
|
// Services to exclude
|
|
exclude centralBlueskyAppView centralBlueskyFeeds centralBlueskyIdentityResolver
|
|
exclude blueskyAppView blueskyFeedsGenerator blueskyRelay
|
|
exclude independentAppView independentExampleComIDSystem independentExampleMeIDSystem independentFeedGenerator independentPDS1 independentPDS2
|
|
exclude genericBSkyIDSystem genericPDS
|
|
// Users to exclude
|
|
exclude blueskyStaffMemberAsAdmin independentPDS1BlueskyUser1 independentPDS2BlueskyUser1 otherIDBlueskyUser1 otherIDBlueskyUser2
|
|
}
|
|
|
|
// 030: Bluesky, Relay. Container diagram showing multiple PDSs in the internal system, feeding into the Relay
|
|
container centralBluesky 030-BlueskyRelay-02 {
|
|
autolayout
|
|
include *
|
|
// Services to exclude
|
|
exclude centralBlueskyAppView centralBlueskyFeeds centralBlueskyIdentityResolver
|
|
exclude blueskyAppView blueskyFeedsGenerator
|
|
exclude independentAppView independentExampleComIDSystem independentExampleMeIDSystem independentFeedGenerator independentPDS1 independentPDS2
|
|
exclude genericBSkyIDSystem genericPDS
|
|
// Users to exclude
|
|
exclude blueskyStaffMemberAsAdmin independentPDS1BlueskyUser1 independentPDS2BlueskyUser1 otherIDBlueskyUser1 otherIDBlueskyUser2
|
|
// Relationships to exclude
|
|
exclude blueskyAppViewServicesToCentralBlueskyPDS1 blueskyAppViewServicesToCentralBlueskyPDS2 blueskyAppViewServicesToCentralBlueskyPDS3
|
|
exclude independentAppViewServicesToCentralBlueskyPDS1 independentAppViewServicesToCentralBlueskyPDS2 independentAppViewServicesToCentralBlueskyPDS3
|
|
exclude independentFeedGeneratorServiceToCentralBlueskyPDS2 independentFeedGeneratorServiceToCentralBlueskyPDS2 independentFeedGeneratorServiceToCentralBlueskyPDS3
|
|
exclude centralBlueskyModerationToCentralBlueskyPDS1 centralBlueskyModerationToCentralBlueskyPDS2 centralBlueskyModerationToCentralBlueskyPDS3
|
|
}
|
|
|
|
// 031: Bluesky, Relay. Container diagram of Relay.
|
|
container blueskyRelay 031-BlueskyRelay-03 {
|
|
autolayout
|
|
include *
|
|
// Services to exclude
|
|
exclude blueskyAppView blueskyFeedsGenerator
|
|
exclude independentAppView independentFeedGenerator independentPDS1 independentPDS2
|
|
exclude genericPDS
|
|
// Relationships to exclude
|
|
exclude centralBlueskyAppViewToIndependentFeedGeneratorAPI centralBlueskyAppViewToBlueskyFeedsGeneratorAPI blueskyFeedsGeneratorServiceToCentralBlueskyPDS1
|
|
exclude blueskyFeedsGeneratorServiceToCentralBlueskyPDS2 blueskyFeedsGeneratorServiceToCentralBlueskyPDS3 independentFeedGeneratorServiceToCentralBlueskyPDS1
|
|
exclude independentFeedGeneratorServiceToCentralBlueskyPDS2 independentFeedGeneratorServiceToCentralBlueskyPDS3
|
|
}
|
|
|
|
// 032: Bluesky, Independent PDS. Container diagram showing independent PDS
|
|
container centralBluesky 032-BlueskyPDS-01 {
|
|
autolayout
|
|
include * independentPDS1BlueskyUser1
|
|
// Services to exclude
|
|
exclude centralBlueskyAppView centralBlueskyFeeds centralBlueskyIdentityResolver
|
|
exclude blueskyAppView blueskyFeedsGenerator
|
|
exclude independentAppView independentExampleComIDSystem independentExampleMeIDSystem independentFeedGenerator independentPDS2
|
|
exclude genericBSkyIDSystem genericPDS
|
|
// Users to exclude
|
|
exclude blueskyStaffMemberAsAdmin independentPDS2BlueskyUser1 otherIDBlueskyUser1 otherIDBlueskyUser2
|
|
// Relationships to exclude
|
|
exclude blueskyAppViewServicesToCentralBlueskyPDS1 blueskyAppViewServicesToCentralBlueskyPDS2 blueskyAppViewServicesToCentralBlueskyPDS3
|
|
exclude independentFeedGeneratorServiceToCentralBlueskyPDS1 independentFeedGeneratorServiceToCentralBlueskyPDS2 independentFeedGeneratorServiceToCentralBlueskyPDS3
|
|
exclude blueskyFeedsGeneratorServiceToCentralBlueskyPDS1 blueskyFeedsGeneratorServiceToCentralBlueskyPDS2 blueskyFeedsGeneratorServiceToCentralBlueskyPDS3
|
|
exclude centralBlueskyModerationToCentralBlueskyPDS1 centralBlueskyModerationToCentralBlueskyPDS2 centralBlueskyModerationToCentralBlueskyPDS3
|
|
}
|
|
|
|
// 033: Bluesky, Independent PDS. Container diagram of an independent PDS.
|
|
container independentPDS1 033-BlueskyPDS-02 {
|
|
autolayout
|
|
include *
|
|
// Services to exclude
|
|
exclude centralBluesky
|
|
exclude blueskyAppView blueskyFeedsGenerator
|
|
exclude independentAppView independentFeedGenerator
|
|
}
|
|
|
|
// 034: Bluesky, Independent PDS. Container diagram showing 2 independent PDSs
|
|
container centralBluesky 034-BlueskyPDS-03 {
|
|
autolayout
|
|
include * independentPDS1BlueskyUser1 independentPDS2BlueskyUser1
|
|
// Services to exclude
|
|
exclude centralBlueskyAppView centralBlueskyFeeds centralBlueskyIdentityResolver
|
|
exclude blueskyAppView blueskyFeedsGenerator
|
|
exclude independentAppView independentExampleComIDSystem independentExampleMeIDSystem independentFeedGenerator
|
|
exclude genericBSkyIDSystem genericPDS
|
|
// Users to exclude
|
|
exclude blueskyStaffMemberAsAdmin otherIDBlueskyUser1 otherIDBlueskyUser2
|
|
// Relationships to exclude
|
|
exclude blueskyAppViewServicesToCentralBlueskyPDS1 blueskyAppViewServicesToCentralBlueskyPDS2 blueskyAppViewServicesToCentralBlueskyPDS3
|
|
exclude independentFeedGeneratorServiceToCentralBlueskyPDS1 independentFeedGeneratorServiceToCentralBlueskyPDS2 independentFeedGeneratorServiceToCentralBlueskyPDS3
|
|
exclude blueskyFeedsGeneratorServiceToCentralBlueskyPDS1 blueskyFeedsGeneratorServiceToCentralBlueskyPDS2 blueskyFeedsGeneratorServiceToCentralBlueskyPDS3
|
|
exclude centralBlueskyModerationToCentralBlueskyPDS1 centralBlueskyModerationToCentralBlueskyPDS2 centralBlueskyModerationToCentralBlueskyPDS3
|
|
}
|
|
|
|
// 035: Bluesky, Independent PDS. Container diagram showing 2 independent PDSs
|
|
container centralBluesky 035-BlueskyPDS-04 {
|
|
autolayout
|
|
include * independentPDS1BlueskyUser1 independentPDS2BlueskyUser1
|
|
// Services to exclude
|
|
exclude centralBlueskyAppView centralBlueskyFeeds centralBlueskyIdentityResolver centralBlueskyPDS1 centralBlueskyPDS2 centralBlueskyPDS3
|
|
exclude blueskyAppView blueskyFeedsGenerator
|
|
exclude independentAppView independentExampleComIDSystem independentExampleMeIDSystem independentFeedGenerator independentPDS1 independentPDS2
|
|
exclude genericBSkyIDSystem
|
|
// Users to exclude
|
|
exclude blueskyStaffMemberAsAdmin independentPDS2BlueskyUser1 otherIDBlueskyUser1 otherIDBlueskyUser2
|
|
// Relationships to exclude
|
|
exclude blueskyAppViewServicesToCentralBlueskyPDS1 blueskyAppViewServicesToCentralBlueskyPDS2 blueskyAppViewServicesToCentralBlueskyPDS3
|
|
exclude independentFeedGeneratorServiceToCentralBlueskyPDS1 independentFeedGeneratorServiceToCentralBlueskyPDS2 independentFeedGeneratorServiceToCentralBlueskyPDS3
|
|
exclude blueskyFeedsGeneratorServiceToCentralBlueskyPDS1 blueskyFeedsGeneratorServiceToCentralBlueskyPDS2 blueskyFeedsGeneratorServiceToCentralBlueskyPDS3
|
|
exclude centralBlueskyModerationToCentralBlueskyPDS1 centralBlueskyModerationToCentralBlueskyPDS2 centralBlueskyModerationToCentralBlueskyPDS3
|
|
}
|
|
|
|
// 036: Bluesky, Independent Moderation. Container diagram showing a separated-out bluesky moderation service
|
|
container centralBluesky 036-BlueskyModeration-01 {
|
|
autolayout
|
|
include * independentPDS1BlueskyUser1 independentPDS2BlueskyUser1 blueskyModeration
|
|
// Services to exclude
|
|
exclude centralBlueskyAppView centralBlueskyFeeds centralBlueskyIdentityResolver centralBlueskyModeration centralBlueskyPDS1 centralBlueskyPDS2 centralBlueskyPDS3
|
|
exclude blueskyAppView blueskyFeedsGenerator
|
|
exclude independentAppView independentExampleComIDSystem independentExampleMeIDSystem independentFeedGenerator independentPDS1 independentPDS2
|
|
exclude genericBSkyIDSystem
|
|
// Users to exclude
|
|
exclude blueskyStaffMemberAsAdmin independentPDS2BlueskyUser1 otherIDBlueskyUser1 otherIDBlueskyUser2
|
|
// Relationships to exclude
|
|
exclude blueskyAppViewServicesToCentralBlueskyPDS1 blueskyAppViewServicesToCentralBlueskyPDS2 blueskyAppViewServicesToCentralBlueskyPDS3
|
|
exclude independentFeedGeneratorServiceToCentralBlueskyPDS1 independentFeedGeneratorServiceToCentralBlueskyPDS2 independentFeedGeneratorServiceToCentralBlueskyPDS3
|
|
exclude blueskyFeedsGeneratorServiceToCentralBlueskyPDS1 blueskyFeedsGeneratorServiceToCentralBlueskyPDS2 blueskyFeedsGeneratorServiceToCentralBlueskyPDS3
|
|
exclude centralBlueskyModerationToCentralBlueskyPDS1 centralBlueskyModerationToCentralBlueskyPDS2 centralBlueskyModerationToCentralBlueskyPDS3
|
|
}
|
|
|
|
// 037: Bluesky, Independent Moderation. Container diagram of moderation service.
|
|
container blueskyModeration 037-BlueskyModeration-02 {
|
|
autolayout
|
|
include *
|
|
}
|
|
|
|
// 038: Bluesky, Independent Moderation. System Landscape, including independent moderation.
|
|
systemLandscape 038-BlueskyModeration-03 {
|
|
autolayout
|
|
include *
|
|
// Services to exclude
|
|
exclude genericSocial realisticSocial federatedSocial1 federatedSocial2 federatedSocial3 federatedSocial4 centralBluesky
|
|
exclude blueskyAppView blueskyFeedsGenerator
|
|
exclude independentAppView independentExampleComIDSystem independentExampleMeIDSystem independentFeedGenerator independentPDS1 independentPDS2
|
|
// Users to exclude
|
|
exclude socialAdmin socialModerator socialUser
|
|
exclude federatedSocial1User federatedSocial1Admin federatedSocial2User federatedSocial2Admin
|
|
exclude federatedSocial3User federatedSocial3Admin federatedSocial4User federatedSocial4Admin
|
|
exclude blueskyStaffMemberAsAdmin
|
|
exclude independentPDS1BlueskyUser1 independentPDS2BlueskyUser1 otherIDBlueskyUser1 otherIDBlueskyUser2
|
|
}
|
|
|
|
styles {
|
|
|
|
element database {
|
|
shape Cylinder
|
|
}
|
|
|
|
element atproto {
|
|
colour #213d53
|
|
background #e2b5a7
|
|
}
|
|
|
|
element federation {
|
|
colour #6de518
|
|
background #5d4d5c
|
|
}
|
|
|
|
element algorithmic {
|
|
colour #7fe495
|
|
background #923821
|
|
}
|
|
|
|
element moderation {
|
|
colour #2b0743
|
|
background #4092bf
|
|
}
|
|
|
|
element adminey {
|
|
background #582893
|
|
colour #c4dfec
|
|
}
|
|
|
|
element typical {
|
|
colour #110303
|
|
background #e8dd9b
|
|
}
|
|
|
|
element "Person" {
|
|
shape person
|
|
background #08427b
|
|
colour #ffffff
|
|
}
|
|
}
|
|
}
|
|
}
|