Diagrams#

A picture is worth a thousand words.

—Conventional wisdom

There you go – the essential diagrams. They follow the C4 model so “there’s no argument on what’s in them, only the way to show it”.

They use mermaid, so if you don’t like the order of the elements, you know whom to blame 🙂

Similarly, switch to light mode if they are not well-readable in dark mode.

System Context#

C4Context title System Context diagram for Tattler Enterprise_Boundary(b0, "Enterprise context") { Person(ProdMan, "Product manager", "Owns the customer journey.") Person(TemplDev, "Template developer", "Implements graphical<br/>and voice brand.") Person(SWDev, "Software Developer", "Codes systems which,<br/>trigger notifications") Person(SysAdm, "System Administrator", "Deploy and operate systems.") System(Tattler, "Tattler", "Sends notifications<br/>over various vectors.") System_Ext(WebApp, "WebApp") System_Ext(BillSys, "Billing System") System_Ext(BookingSys, "Booking System") Rel(ProdMan, Tattler, "Define notifications<br/>across customer journey.") Rel(TemplDev, Tattler, "Author and style<br/>notifications.") Rel(SWDev, Tattler, "Build notification triggers<br/>into existing systems.") Rel(SysAdm, Tattler, "Deploy, configure,<br/>secure.") Rel(WebApp, Tattler, "Trigger notification") Rel(BillSys, Tattler, "Trigger notification") Rel(BookingSys, Tattler, "Trigger notification") } Person(User, "User", "Consumes services of enterprise.") System(SMTP, "SMTP", "E-mail delivery<br/>system") System(SMS, "SMS", "SMS delivery<br/>system") Rel(Tattler, SMTP, "Deliver email<br/>notification") Rel(Tattler, SMS, "Deliver SMS<br/>notification") Rel(User, Tattler, "Receive<br/>notifications.")

Deployment#

C4Context title Container diagram for Tattler Person(TemplDev, "Template developer", "Implements graphical<br/>and voice brand.") Person(SWDev, "Software Developer", "Codes systems which,<br/>trigger notifications") System_Boundary(TattlerCont, "Tattler container") { System(Tattler, "Tattler", "Sends notifications<br/>over various vectors.") SystemDb_Ext(TattlerTempl, "Notification templates", "Text and style to deliver.") System_Ext(TattlerPlugins, "Custom plug-ins", "Look up user contacts<br/>and other data.") Rel(Tattler, TattlerTempl, "Loads from") Rel(Tattler, TattlerPlugins, "Loads info from") Rel(SWDev, TattlerPlugins, "Develops and maintains.") } Rel(TemplDev, TattlerTempl, "Writes") Rel(SWDev, BookingSys, "Develops and maintains.") System_Boundary(Client_Sys, "Client system") { System_Ext(BookingSys, "Booking System", "Manages reservations by users.") } Rel(BookingSys, Tattler, "Request to notify")