🧭 “Data Flow at a Glance”

🎯 Purpose

A high-level overview of how data flows through my ecosystem: ingestion, storage, notification, and display—covering both infrastructure and design principles.

📡 Real-Time Pipeline

Data Flow (Blue links are one time, at start-up only):

flowchart LR
  subgraph Kubernetes
    Microservice -- PUB update --> Redis
    Redis -- SUB update --> KV-Updater
    KV-Updater -- WRITE KV --> Redis
    Redis -- SUB update --> APIServer
    APIServer -- READ KV --> Redis
  end
  Client -- READ API --> APIServer
  APIServer -- SSE update --> Client
style Microservice fill:#08f,color:#fff
style Redis fill:#e22,color:#fff
style KV-Updater fill:#eea,color:#000
style APIServer fill:#3d3,color:#fff
style Client fill:#fe1,color:#000
style Kubernetes fill:#fff,stroke:eea,stroke-width:1px,color:#444
linkStyle 4,5 stroke:#00F,color:blue

Sequence Diagram:

sequenceDiagram
    participant Microservice
    participant Redis  as Redis 🧠
    participant Redis Snapshot as ⬆️ Redis Snapshot
    participant KV Updater as 🔁 KV Updater
    participant APIserver as 🖥️ APIserver
    participant Web/Matrix Client as 🌐 Web/Matrix Client
    Redis Snapshot->>+Redis: Load Snapshot
    APIserver->>+Redis: Read KV state (startup only)
    KV Updater->>+Redis: SUBSCRIBE 'update:{rich}'
    APIserver->>+Redis: SUBSCRIBE 'update:{rich}'
    APIserver->>+Web/Matrix Client: READ State
    Web/Matrix Client->>+APIserver: REQUEST SSE
    Microservice->>+Redis: PUBLISH 'update:{rich}'
    Redis->>+KV Updater: REPUBLISH 'update:{rich}'
    note over APIserver,Web/Matrix Client: SSE streams until disconnect
    KV Updater->>+Redis: WRITE KV Update
    Redis->>+Redis Snapshot: WRITE Snapshot
    Redis->>+APIserver: REPUBLISH 'update:{rich}'
    APIserver->>+Web/Matrix Client: SEND SSE
    note over Redis, Redis Snapshot: Internal to Redis

🧩 Tech Stack Highlights

🚀 Design Goals

Project Plan:

---
config:
  kanban:
---
kanban
  [Todo]
    id10[WebDisplay: Swicth to a shared eventSource for SSE]@{priority: "High"}
    id11[WebDisplay: Process updates from SSE]@{priority: "High"}
  [In progress]
    id12[MatrixClient: Process Startup from NodeAPI]@{priority: "High"}
    id13[MatrixClient: Subscribe to SSE/Process Updates via SSE]@{priority: "High"}
    id14[MatrixClient: Remove DataSource]@{priority: "Low"}
    id15[MatrixClient: Remove Redis connection]@{priority: "Low"}
  [Ready for unit test]
    id6[NodeAPI: Read State from KV]@{priority: "High"}
    id7[NodeAPI: Read full message, update internal state]@{priority: "High"}
    id8[NodeAPI: Send full message via SSE]@{priority: "High"}
    id9[NodeAPI: Remove PostgreSQL handler]@{priority: "Low"}
  [Test cluster deployment]
    id1[ServerPage: Publish full message via Redis]@{priority: "High"}
    id2[ServerPage: Remove DataSource]@{priority: "Medium"}
    id3[ServerPage: Read update period from YAML deployment environment]@{priority: "Low"}
    id4[ServerPage: Read Health Check port number from secrets]@{priority: "Low"}
    id5[KV Updater: Create new app to subscribe to updates, and post to KV]@{priority: "High"}
    id16[DisplayPage: Remove DataSource]@{priority: "Low"}
  [Done]
    id0[Prototype Pub Full message, Receive Full message, write KV, read KV]@{priority: "High"}

Note: kanban state is for illustrative purposes. All tasks are actually complete.