Skip to content

Commit cfa560f

Browse files
committed
Add D2 architecture diagram
1 parent 03ed1d8 commit cfa560f

File tree

2 files changed

+260
-0
lines changed

2 files changed

+260
-0
lines changed

docs/architecture.d2

Lines changed: 131 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,131 @@
1+
direction: up
2+
3+
title: "Ace Archive Architecture" {
4+
shape: text
5+
near: top-center
6+
style: {
7+
font-size: 40
8+
}
9+
}
10+
11+
legend: "Legend" {
12+
user: "User" {
13+
shape: "person"
14+
}
15+
16+
compute: "Compute" {
17+
shape: "queue"
18+
}
19+
20+
storage: "Storage" {
21+
shape: "cylinder"
22+
}
23+
24+
service: "Service" {
25+
shape: "cloud"
26+
}
27+
28+
repository: "Source\nRepository" {
29+
shape: "package"
30+
}
31+
}
32+
33+
visitor: "Visitor" {
34+
shape: "person"
35+
}
36+
37+
api-user: "API User" {
38+
shape: "person"
39+
}
40+
41+
submitter: "Contributor" {
42+
shape: "person"
43+
}
44+
45+
cf: Cloudflare {
46+
cdn: "CDN" {
47+
shape: "cloud"
48+
}
49+
50+
db: "SQLite DB" {
51+
shape: "cylinder"
52+
}
53+
54+
client-worker: "Client\nWorker" {
55+
shape: "queue"
56+
}
57+
58+
files-worker: "Files\nWorker" {
59+
shape: "queue"
60+
}
61+
62+
api-worker: "API\nWorker" {
63+
shape: "queue"
64+
}
65+
66+
submission-worker: "Artifact\nSubmission\nWorker" {
67+
shape: "queue"
68+
}
69+
70+
db-backup-worker: "DB\nBackup\nWorker" {
71+
shape: "queue"
72+
}
73+
74+
db-backup-bucket: "DB\nBackup\nBucket" {
75+
shape: "cylinder"
76+
}
77+
78+
files-bucket: "Files\nBucket" {
79+
shape: "cylinder"
80+
}
81+
}
82+
83+
gh: GitHub {
84+
site-repo: "Static\nSite\nRepo" {
85+
shape: "package"
86+
}
87+
88+
submission-repo: "Artifact\nSubmission\nRepo" {
89+
shape: "package"
90+
}
91+
92+
hugo-repo: "Hugo\nArtifact\nRepo" {
93+
shape: "package"
94+
}
95+
96+
hugo-action: "Hugo\nArtifact\nAction" {
97+
shape: "queue"
98+
}
99+
100+
submit-action: "Artifact\nSubmission\nAction" {
101+
shape: "queue"
102+
}
103+
}
104+
105+
visitor -> cf.client-worker: "Visit https://acearchive.lgbt"
106+
visitor -> cf.files-worker: "Download a file"
107+
108+
cf.client-worker -> cf.cdn: "Request static assets"
109+
110+
cf.files-worker -> cf.db: "Query file metadata"
111+
cf.files-worker -> cf.files-bucket: "Fetch file data"
112+
113+
api-user -> cf.api-worker: "Call API"
114+
cf.api-worker -> cf.db: "Query artifact metadata"
115+
116+
cf.db-backup-worker -> cf.db: "Dump database"
117+
cf.db-backup-worker -> cf.db-backup-bucket: "Store backup"
118+
cf.db-backup-worker -> cf.db-backup-worker: "Cron trigger"
119+
120+
gh.submit-action -> cf.submission-worker: "Upload artifact metadata"
121+
cf.submission-worker -> cf.db: "Store artifact metadata"
122+
gh.submit-action -> cf.files-bucket: "Upload artifact files"
123+
124+
submitter -> gh.submission-repo: "Submit artifact"
125+
gh.submission-repo -> gh.submit-action: "Trigger artifact submission"
126+
gh.submission-repo -> gh.hugo-action: "Generate static assets"
127+
gh.submission-repo -> gh.site-repo: "Trigger site rebuild"
128+
gh.hugo-action -> gh.hugo-repo: "Push generated assets"
129+
gh.hugo-action -> cf.api-worker: "Fetch artifact metadata"
130+
gh.site-repo -> gh.hugo-repo: "Load generated assets"
131+
gh.site-repo -> cf.cdn: "Deploy static site"

0 commit comments

Comments
 (0)