From 29c6f724b36110d4610f663a7033a4feeb60aa51 Mon Sep 17 00:00:00 2001 From: Mike Kell Date: Mon, 30 Mar 2026 07:30:50 -0400 Subject: [PATCH] Add social media management component architecture --- .../components-social-media-management.puml | 77 +++++++++++++++++++ .../components/social-media-management.md | 44 +++++++++++ mkdocs.yml | 3 +- 3 files changed, 123 insertions(+), 1 deletion(-) create mode 100644 architecture/workspace/components-social-media-management.puml create mode 100644 docs/architecture/components/social-media-management.md diff --git a/architecture/workspace/components-social-media-management.puml b/architecture/workspace/components-social-media-management.puml new file mode 100644 index 0000000..39222d5 --- /dev/null +++ b/architecture/workspace/components-social-media-management.puml @@ -0,0 +1,77 @@ +@startuml +!include https://raw.githubusercontent.com/plantuml-stdlib/C4-PlantUML/master/C4_Component.puml + +LAYOUT_WITH_LEGEND() + +title Social Media Management - Component Diagram + +Person(owner, "Business Owner", "Approves campaigns, reviews messaging, and oversees brand presence") +Person(staff, "Operations Staff", "Creates content, schedules posts, and manages publishing workflows") + +ContainerDb(txdb, "Transaction Database", "Database", "Stores campaigns, content records, schedules, engagement metrics, and workflow history") +Container(auth, "Authentication Service", "Shared Service", "Provides authentication and identity controls") +Container(datarepo, "Shared Data Repository", "Shared Service", "Provides access to shared business entities and reference data") +Container(api, "API Orchestrator", "API / Integration Service", "Coordinates internal and external integrations") +Container(audit, "Audit & Logging Service", "Observability Service", "Captures publishing, approval, and compliance-relevant events") +Container(notify, "Notification Service", "Shared Service", "Generates alerts, reminders, approvals, and exception notifications") + +System_Ext(facebook, "Facebook", "@kellcreation", "Social publishing platform") +System_Ext(instagram, "Instagram", "@kellcreations", "Social publishing platform") +System_Ext(xsocial, "X", "@kellcreations", "Social publishing platform") + +Container_Boundary(social_app, "Social Media Management") { + Component(ui, "Social Media Management UI", "Web UI", "Provides campaign views, scheduling controls, approval status, and engagement dashboards") + Component(campaign_service, "Campaign Management Service", "Application Service", "Manages campaign plans, themes, objectives, and lifecycle state") + Component(content_service, "Content Planning Service", "Application Service", "Maintains post drafts, captions, hashtags, creative associations, and publishing metadata") + Component(schedule_service, "Publishing Schedule Service", "Application Service", "Controls publish timing, queue state, cadence, and readiness") + Component(approval_service, "Approval Workflow Service", "Application Service", "Manages review, approval, rejection, and exception handling for publishable content") + Component(publish_service, "Social Publishing Service", "Application Service", "Publishes approved content to external social platforms") + Component(engagement_service, "Engagement Tracking Service", "Application Service", "Collects and analyzes post status, reach, and engagement metrics") + Component(reporting_service, "Social Reporting Service", "Application Service", "Produces campaign performance, schedule status, and exception reports") + Component(repository, "Social Media Repository", "Data Access Component", "Reads and writes social-media-related data") +} + +Rel(owner, ui, "Uses") +Rel(staff, ui, "Uses") + +Rel(ui, campaign_service, "Sends requests to") +Rel(ui, content_service, "Sends requests to") +Rel(ui, schedule_service, "Sends requests to") +Rel(ui, approval_service, "Sends requests to") +Rel(ui, publish_service, "Sends requests to") +Rel(ui, engagement_service, "Sends requests to") +Rel(ui, reporting_service, "Sends requests to") + +Rel(campaign_service, repository, "Reads from and writes to") +Rel(content_service, repository, "Reads from and writes to") +Rel(schedule_service, repository, "Reads from and writes to") +Rel(approval_service, repository, "Reads from and writes to") +Rel(publish_service, repository, "Reads from and writes to") +Rel(engagement_service, repository, "Reads from and writes to") +Rel(reporting_service, repository, "Reads from") + +Rel(repository, txdb, "Reads from and writes to") + +Rel(campaign_service, datarepo, "Uses shared business data from") +Rel(content_service, datarepo, "Uses shared business data from") +Rel(schedule_service, datarepo, "Uses shared business data from") +Rel(approval_service, datarepo, "Uses shared business data from") + +Rel(ui, auth, "Authenticates through") +Rel(approval_service, notify, "Triggers approval and exception notifications through") +Rel(publish_service, api, "Publishes external platform events through") +Rel(engagement_service, api, "Receives external engagement data through") +Rel(reporting_service, api, "Sends reporting outputs through") + +Rel(publish_service, facebook, "Publishes content to") +Rel(publish_service, instagram, "Publishes content to") +Rel(publish_service, xsocial, "Publishes content to") + +Rel(campaign_service, audit, "Logs campaign changes to") +Rel(content_service, audit, "Logs content changes to") +Rel(schedule_service, audit, "Logs scheduling activity to") +Rel(approval_service, audit, "Logs approval decisions to") +Rel(publish_service, audit, "Logs publishing activity to") +Rel(engagement_service, audit, "Logs engagement collection activity to") + +@enduml \ No newline at end of file diff --git a/docs/architecture/components/social-media-management.md b/docs/architecture/components/social-media-management.md new file mode 100644 index 0000000..e39ff8e --- /dev/null +++ b/docs/architecture/components/social-media-management.md @@ -0,0 +1,44 @@ +# Social Media Management Components + +This diagram shows the major internal components of the Social Media Management application. + +## Purpose + +This view breaks the Social Media Management application into its primary campaign, content planning, scheduling, approval, publishing, engagement, reporting, and data-access responsibilities. + +## Diagram Source + +The source for this diagram is maintained as architecture code in: + +`architecture/workspace/components-social-media-management.puml` + +## Included Components + +- Social Media Management UI +- Campaign Management Service +- Content Planning Service +- Publishing Schedule Service +- Approval Workflow Service +- Social Publishing Service +- Engagement Tracking Service +- Social Reporting Service +- Social Media Repository + +## Connected Shared Services + +- Transaction Database +- Authentication Service +- Shared Data Repository +- API Orchestrator +- Audit & Logging Service +- Notification Service + +## Connected External Systems + +- Facebook `@kellcreation` +- Instagram `@kellcreations` +- X `@kellcreations` + +## Notes + +This component view establishes the detailed social publishing and campaign-management architecture for the Kell Creations platform. Future refinements should align this model with campaign lifecycle states, approval logic, scheduling rules, content associations, engagement collection, and operational exception handling across the social media workflow. \ No newline at end of file diff --git a/mkdocs.yml b/mkdocs.yml index 5b9d274..f27f2dc 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -45,7 +45,8 @@ nav: - Components: - Inventory Components: "architecture/components/inventory.md" - Craft Manufacturing / MRP Components: "architecture/components/mrp.md" - - WordPress Management Components: "architecture/components/wordpress-management.md" + - WordPress Management Components: "architecture/components/wordpress-management.md" + - Social Media Management Components: "architecture/components/social-media-management.md" - Deployment: - Production Deployment: "architecture/deployment/production.md" - Dynamic: