Skip to content
Open

e #3

Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
27 commits
Select commit Hold shift + click to select a range
4f87c68
Merge pull request #1 from digitalmonsters/develop
mcutech Oct 19, 2025
5146c9d
Merge pull request #2 from digitalmonsters/develop
mcutech Oct 19, 2025
a2d78c6
Add files via upload
mcutech Oct 20, 2025
842bc4a
Merge pull request #4 from digitalmonsters/mcutech-patch-1
mcutech Oct 20, 2025
279a917
Transferring API Description file from Apiary.io
mcutech Oct 20, 2025
8e30149
Create svg.txt
mcutech Oct 20, 2025
e11ce87
Add files via upload
mcutech Oct 20, 2025
0aa7c65
Add files via upload
mcutech Oct 20, 2025
77e38ce
Add files via upload
mcutech Oct 20, 2025
4ec0f14
Merge pull request #5 from digitalmonsters/develop
mcutech Oct 20, 2025
a14ad5e
Add files via upload
mcutech Oct 20, 2025
ea8335a
Update render-beautiful-diagrams.yml
mcutech Oct 20, 2025
de841fb
Update render-beautiful-diagrams.yml
mcutech Oct 20, 2025
c6bf168
Update render-beautiful-diagrams.yml
mcutech Oct 20, 2025
e56b2f2
Update render-beautiful-diagrams.yml
mcutech Oct 20, 2025
e6ebbeb
Update diagram rendering to use default theme
mcutech Oct 20, 2025
f54d789
Update render-beautiful-diagrams.yml
mcutech Oct 20, 2025
a54cf77
Update render-beautiful-diagrams.yml
mcutech Oct 20, 2025
1fcfcba
Update render-beautiful-diagrams.yml
mcutech Oct 20, 2025
bd4b73f
Update render-beautiful-diagrams.yml
mcutech Oct 20, 2025
f51e1fd
Update presentation.html
mcutech Oct 20, 2025
9418c9f
Update presentation.html
mcutech Oct 20, 2025
baf1a23
Update presentation.html
mcutech Oct 20, 2025
1bf6ab5
Refactor presentation.html for improved layout and styles
mcutech Oct 20, 2025
efcc709
Merge pull request #6 from digitalmonsters/mcutech-patch-2
mcutech Oct 20, 2025
22c6e48
Update presentation.html
mcutech Oct 20, 2025
c027882
Update title and improve diagram rendering
mcutech Oct 20, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
44 changes: 44 additions & 0 deletions .github/workflows/render-beautiful-diagrams.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
name: Render Tropical Mermaid Diagrams

on:
push:
paths:
- 'docs/infra/**/*.mmd'
workflow_dispatch:

jobs:
render:
runs-on: ubuntu-latest
container:
image: ghcr.io/mermaid-js/mermaid-cli:10.9.1
options: --no-sandbox

steps:
- name: Checkout repository
uses: actions/checkout@v4

- name: Create output folder
run: mkdir -p docs/infra/out

- name: Render diagrams
run: |
echo "Rendering Mermaid diagrams..."
for f in docs/infra/*.mmd; do
base=$(basename "$f" .mmd)
echo "🖼️ Rendering $f → docs/infra/out/${base}.svg"
mmdc -i "$f" \
-o "docs/infra/out/${base}.svg" \
-t default \
-b transparent \
-w 1600 -H 1000 \
--scale 2
done
echo "✅ All diagrams rendered!"

- name: Commit updated SVGs
run: |
git config --global user.name "Mermaid Bot"
git config --global user.email "bot@digitalmonsters.com"
git add docs/infra/out/*.svg || true
git diff --cached --quiet && echo "No SVG changes to commit" || git commit -m "Auto-update Mermaid diagrams"
git push || echo "No push (maybe running in PR or no changes)"
22 changes: 19 additions & 3 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,20 @@
# litit-mono
# LitIt Infrastructure Visualization

Build: 2025-10-15T02:31:27
deploy ping 2025-10-15T04:18:52
Interactive, dual-theme (Tropical × Midnight) presentation of the LitIt Platform architecture.

## View Online
👉 https://digitalmonsters.github.io/litit-mono/presentation.html

## Edit or Extend
Each diagram lives in `/docs/infra/*.mmd`.
Edit with any Mermaid-compatible editor or insert via [draw.io](https://app.diagrams.net) → Arrange › Insert › Mermaid.

## Auto-Rendering
GitHub Actions (`.github/workflows/render-beautiful-diagrams.yml`) automatically regenerates high-definition SVGs into `docs/infra/out/`.

## Deploy
1. Push to `main`.
2. Go to **Settings → Pages → Deploy from branch → main**.
3. Your presentation will appear at <https://digitalmonsters.github.io/litit-mono/presentation.html>.

*(Optional)* Add a `CNAME` file in `/docs` to map a custom domain like `digitalmonsters.com/litit-mono`.
80 changes: 80 additions & 0 deletions apiary.apib
Original file line number Diff line number Diff line change
@@ -0,0 +1,80 @@
FORMAT: 1A
HOST: https://polls.apiblueprint.org/

# litit-mono

Polls is a simple API allowing consumers to view polls and vote in them.

## Questions Collection [/questions]

### List All Questions [GET]

+ Response 200 (application/json)

[
{
"question": "Favourite programming language?",
"published_at": "2015-08-05T08:40:51.620Z",
"choices": [
{
"choice": "Swift",
"votes": 2048
}, {
"choice": "Python",
"votes": 1024
}, {
"choice": "Objective-C",
"votes": 512
}, {
"choice": "Ruby",
"votes": 256
}
]
}
]

### Create a New Question [POST]

You may create your own question using this action. It takes a JSON
object containing a question and a collection of answers in the
form of choices.

+ Request (application/json)

{
"question": "Favourite programming language?",
"choices": [
"Swift",
"Python",
"Objective-C",
"Ruby"
]
}

+ Response 201 (application/json)

+ Headers

Location: /questions/2

+ Body

{
"question": "Favourite programming language?",
"published_at": "2015-08-05T08:40:51.620Z",
"choices": [
{
"choice": "Swift",
"votes": 0
}, {
"choice": "Python",
"votes": 0
}, {
"choice": "Objective-C",
"votes": 0
}, {
"choice": "Ruby",
"votes": 0
}
]
}
53 changes: 53 additions & 0 deletions docs/infra/01_overview.mmd
Original file line number Diff line number Diff line change
@@ -0,0 +1,53 @@
%%{init: {
"theme": "base",
"themeVariables": {
"primaryColor": "#FF6F61",
"primaryTextColor": "#FFFFFF",
"primaryBorderColor": "#D35400",
"secondaryColor": "#FFE66D",
"secondaryTextColor": "#23303B",
"tertiaryColor": "#4ABDAC",
"edgeLabelBackground": "#FCE38A",
"fontFamily": "Poppins, sans-serif",
"fontSize": "14px",
"lineColor": "#F46036",
"background": "#FFFFFF"
},
"flowchart": {
"defaultRenderer": "elk",
"htmlLabels": true,
"curve": "basis"
}
}}%%

%%{init: {"themeVariables":{}}}%%
graph TD
subgraph "Clients (Mobile & Web)"
A1["Android / iOS / PWA"]
A2["Web Admin Portal (Next.js)"]
end
subgraph "Network"
B1["Caddy / Nginx<br>(HTTP/2, TLS, Brotli)"]
end
subgraph "Backend"
C1["Go Fiber Monolith"]
C2["REST API + WebSocket Hub"]
end
subgraph "Services"
D1["PostgreSQL"]
D2["Redis"]
D3["Meilisearch"]
D4["Gotify"]
D5["Bunny CDN"]
end
subgraph "DevOps & Monitoring"
E1["GitHub Actions"]
E2["Portainer + Watchtower"]
F1["Prometheus / Grafana / Loki"]
end

A1 -->|HTTPS| B1 --> C1
A2 -->|Admin| B1
C1 --> D1 & D2 & D3 & D4 & D5
E1 --> E2 --> C1
C1 --> F1
36 changes: 36 additions & 0 deletions docs/infra/02_backend_monolith.mmd
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
%%{init: {
"theme": "base",
"themeVariables": {
"primaryColor": "#FF6F61",
"primaryTextColor": "#FFFFFF",
"primaryBorderColor": "#D35400",
"secondaryColor": "#FFE66D",
"secondaryTextColor": "#23303B",
"tertiaryColor": "#4ABDAC",
"edgeLabelBackground": "#FCE38A",
"fontFamily": "Poppins, sans-serif",
"fontSize": "14px",
"lineColor": "#F46036",
"background": "#FFFFFF"
},
"flowchart": {
"defaultRenderer": "elk",
"htmlLabels": true,
"curve": "basis"
}
}}%%

graph LR
subgraph "Go Fiber Monolith"
A["/internal/common<br>Config · DB · Logger · Redis"]
B["/internal/ws<br>Gotify Bridge + Fallback Hub"]
C["/internal/api<br>Public REST (v1)"]
D["/internal/admin<br>Role-based Routes"]
E["/internal/content<br>Media Pipeline"]
F["/internal/auth<br>JWT + Device Binding"]
G["/internal/payments<br>Braintree / Stripe"]
H["/internal/ai<br>Gemini & ML Utilities"]
end
A --> B & C & D & E & F & G & H
E -->|Uploads| Bunny
F -->|Tokens| Redis
37 changes: 37 additions & 0 deletions docs/infra/03_internal_services.mmd
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
%%{init: {
"theme": "base",
"themeVariables": {
"primaryColor": "#FF6F61",
"primaryTextColor": "#FFFFFF",
"primaryBorderColor": "#D35400",
"secondaryColor": "#FFE66D",
"secondaryTextColor": "#23303B",
"tertiaryColor": "#4ABDAC",
"edgeLabelBackground": "#FCE38A",
"fontFamily": "Poppins, sans-serif",
"fontSize": "14px",
"lineColor": "#F46036",
"background": "#FFFFFF"
},
"flowchart": {
"defaultRenderer": "elk",
"htmlLabels": true,
"curve": "basis"
}
}}%%

graph TD
subgraph "Internal Services"
A["content.service.go"]
B["auth.service.go"]
C["payments.service.go"]
D["search.indexer.go"]
E["notification.service.go"]
F["scheduler.cron.go"]
end
A -->|Media Uploads| Bunny
B -->|JWT Issue| Redis
C -->|Sync| Postgres
D -->|Index Build| Meilisearch
E -->|Push| Gotify
F -->|Cache Cleanup| Redis
32 changes: 32 additions & 0 deletions docs/infra/04_database_storage.mmd
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
%%{init: {
"theme": "base",
"themeVariables": {
"primaryColor": "#FF6F61",
"primaryTextColor": "#FFFFFF",
"primaryBorderColor": "#D35400",
"secondaryColor": "#FFE66D",
"secondaryTextColor": "#23303B",
"tertiaryColor": "#4ABDAC",
"edgeLabelBackground": "#FCE38A",
"fontFamily": "Poppins, sans-serif",
"fontSize": "14px",
"lineColor": "#F46036",
"background": "#FFFFFF"
},
"flowchart": {
"defaultRenderer": "elk",
"htmlLabels": true,
"curve": "basis"
}
}}%%

graph LR
A["PostgreSQL<br>Primary ACID DB"]
B["Redis 7<br>Cache / Sessions"]
C["Meilisearch<br>Search Index"]
D["Bunny.net<br>CDN / Object Storage"]
E["Backups → Azure Blob"]
A --> E
B --> A
C --> A
D --> A
33 changes: 33 additions & 0 deletions docs/infra/05_mobile_app_ui.mmd
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
%%{init: {
"theme": "base",
"themeVariables": {
"primaryColor": "#FF6F61",
"primaryTextColor": "#FFFFFF",
"primaryBorderColor": "#D35400",
"secondaryColor": "#FFE66D",
"secondaryTextColor": "#23303B",
"tertiaryColor": "#4ABDAC",
"edgeLabelBackground": "#FCE38A",
"fontFamily": "Poppins, sans-serif",
"fontSize": "14px",
"lineColor": "#F46036",
"background": "#FFFFFF"
},
"flowchart": {
"defaultRenderer": "elk",
"htmlLabels": true,
"curve": "basis"
}
}}%%

graph TD
subgraph "Mobile App (Flutter)"
A1["Login / Register<br>/api/auth/*"]
A2["Dashboard<br>/api/feed/*"]
A3["Casting Calls<br>/api/cast/*"]
A4["Messages<br>/api/chat/*"]
A5["Profile Edit<br>/api/user/*"]
A6["Media Upload<br>/api/content/upload"]
end
A1 --> A2 --> A3 --> A4 --> A5 --> A6
A4 -->|WebSocket /ws| Gotify
36 changes: 36 additions & 0 deletions docs/infra/06_ci_cd_monitoring.mmd
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
%%{init: {
"theme": "base",
"themeVariables": {
"primaryColor": "#FF6F61",
"primaryTextColor": "#FFFFFF",
"primaryBorderColor": "#D35400",
"secondaryColor": "#FFE66D",
"secondaryTextColor": "#23303B",
"tertiaryColor": "#4ABDAC",
"edgeLabelBackground": "#FCE38A",
"fontFamily": "Poppins, sans-serif",
"fontSize": "14px",
"lineColor": "#F46036",
"background": "#FFFFFF"
},
"flowchart": {
"defaultRenderer": "elk",
"htmlLabels": true,
"curve": "basis"
}
}}%%

graph LR
subgraph "CI/CD"
A["GitHub Actions"]
B["Docker Build + Push (GHCR)"]
C["Portainer Deploy"]
D["Watchtower Auto-Update"]
end
subgraph "Monitoring"
E["Prometheus"]
F["Grafana"]
G["Loki Logs"]
end
A --> B --> C --> D
D --> E --> F --> G
Loading
Loading