- header.svg rebuilt blue-dominant (gold demoted to accent) - new assets: desktop-preview.svg, architecture.svg, os-screenshot.png (real render) - README: blue badges, embedded hero + diagram, wiki link - fix dead Tabler icon-font CDN (cdnjs 404 -> jsdelivr) in live + repo OS desktop - fix broken ./docs/ai-stack.md badge link (file now exists) - add docs/academy.md, docs/islamic-layer.md, docs/ai-stack.md - SERVICES.md: Academy + Islamic layer sections Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
95 lines
6.2 KiB
XML
95 lines
6.2 KiB
XML
<svg width="1200" height="640" viewBox="0 0 1200 640" xmlns="http://www.w3.org/2000/svg" role="img" aria-label="Atlas OS architecture">
|
|
<defs>
|
|
<linearGradient id="abg" x1="0" y1="0" x2="0" y2="1">
|
|
<stop offset="0%" stop-color="#0a1832"/>
|
|
<stop offset="100%" stop-color="#050c1e"/>
|
|
</linearGradient>
|
|
<linearGradient id="caddy" x1="0" y1="0" x2="0" y2="1"><stop offset="0%" stop-color="#2b6fc4"/><stop offset="100%" stop-color="#1c4fae"/></linearGradient>
|
|
<linearGradient id="ak" x1="0" y1="0" x2="0" y2="1"><stop offset="0%" stop-color="#3a7d57"/><stop offset="100%" stop-color="#2c6043"/></linearGradient>
|
|
<style>
|
|
.t{font-family:'Segoe UI',Helvetica,Arial,sans-serif;fill:#dbe8ff}
|
|
.h{font-family:'Segoe UI',Helvetica,Arial,sans-serif;fill:#7fa8d8;font-size:12px;letter-spacing:2px;font-weight:700}
|
|
.b{font-family:'Segoe UI',Helvetica,Arial,sans-serif;fill:#cfe0fb;font-size:13px}
|
|
.s{font-family:'Segoe UI',Helvetica,Arial,sans-serif;fill:#90aede;font-size:10.5px}
|
|
.flow{stroke:#4a9fe2;stroke-opacity:.55;fill:none;stroke-width:1.6}
|
|
.dash{stroke:#9b8cf0;stroke-opacity:.5;fill:none;stroke-width:1.4;stroke-dasharray:5 4;animation:march 1.2s linear infinite}
|
|
@keyframes march{to{stroke-dashoffset:-18}}
|
|
</style>
|
|
<marker id="arr" markerWidth="9" markerHeight="9" refX="7" refY="4.5" orient="auto"><path d="M0 0 L9 4.5 L0 9 z" fill="#4a9fe2" fill-opacity="0.7"/></marker>
|
|
</defs>
|
|
|
|
<rect width="1200" height="640" fill="url(#abg)"/>
|
|
<text x="40" y="44" class="t" font-size="20" font-weight="700">Atlas OS — One Box, One Identity</text>
|
|
<text x="40" y="66" class="s" font-size="12.5">Hetzner CPX32 · 8 vCPU · 16 GB · Nuremberg — the entire stack on a single hardened server</text>
|
|
|
|
<!-- clients -->
|
|
<text x="40" y="110" class="h">CLIENTS</text>
|
|
<g>
|
|
<rect x="40" y="124" width="150" height="52" rx="10" fill="#11244a" stroke="#4a9fe2" stroke-opacity=".35"/>
|
|
<text x="115" y="148" class="b" text-anchor="middle">🌐 Browser</text>
|
|
<text x="115" y="166" class="s" text-anchor="middle">any device, HTTPS</text>
|
|
<rect x="40" y="190" width="150" height="52" rx="10" fill="#11244a" stroke="#9b8cf0" stroke-opacity=".4"/>
|
|
<text x="115" y="214" class="b" text-anchor="middle">📱 iOS / Laptop</text>
|
|
<text x="115" y="232" class="s" text-anchor="middle">Tailscale mesh</text>
|
|
</g>
|
|
|
|
<!-- Caddy -->
|
|
<text x="250" y="110" class="h">EDGE · TLS</text>
|
|
<rect x="250" y="124" width="150" height="118" rx="10" fill="url(#caddy)"/>
|
|
<text x="325" y="172" class="t" font-size="16" font-weight="700" text-anchor="middle">Caddy</text>
|
|
<text x="325" y="194" class="s" text-anchor="middle" fill="#cfe0fb">auto HTTPS</text>
|
|
<text x="325" y="210" class="s" text-anchor="middle" fill="#cfe0fb">sole public port</text>
|
|
|
|
<!-- Authentik -->
|
|
<text x="460" y="110" class="h">IDENTITY · SSO</text>
|
|
<rect x="460" y="124" width="150" height="118" rx="10" fill="url(#ak)"/>
|
|
<text x="535" y="166" class="t" font-size="16" font-weight="700" text-anchor="middle">Authentik</text>
|
|
<text x="535" y="188" class="s" text-anchor="middle" fill="#d6ecdf">forward_auth</text>
|
|
<text x="535" y="204" class="s" text-anchor="middle" fill="#d6ecdf">OIDC · MFA</text>
|
|
<text x="535" y="220" class="s" text-anchor="middle" fill="#d6ecdf">gates everything</text>
|
|
|
|
<!-- flows -->
|
|
<path class="flow" d="M190 150 H250" marker-end="url(#arr)"/>
|
|
<path class="dash" d="M190 216 C 220 216, 220 360, 110 360"/>
|
|
<path class="flow" d="M400 183 H460" marker-end="url(#arr)"/>
|
|
<path class="flow" d="M610 183 H680" marker-end="url(#arr)"/>
|
|
|
|
<!-- service tiers -->
|
|
<text x="680" y="110" class="h">SERVICES — behind SSO</text>
|
|
<g>
|
|
<rect x="680" y="124" width="480" height="58" rx="10" fill="#13294f" stroke="#4a9fe2" stroke-opacity=".3"/>
|
|
<text x="694" y="146" class="h" fill="#5f7bb0">CORE BUSINESS</text>
|
|
<text x="694" y="168" class="b">Odoo 19 · Nextcloud · Stalwart Mail · Forgejo · Vaultwarden</text>
|
|
|
|
<rect x="680" y="192" width="480" height="58" rx="10" fill="#13294f" stroke="#4a9fe2" stroke-opacity=".3"/>
|
|
<text x="694" y="214" class="h" fill="#5f7bb0">FINANCE & OPS</text>
|
|
<text x="694" y="236" class="b">Firefly III · Enable Banking · Paperless · n8n · Uptime Kuma</text>
|
|
|
|
<rect x="680" y="260" width="480" height="72" rx="10" fill="#13294f" stroke="#9b8cf0" stroke-opacity=".4"/>
|
|
<text x="694" y="282" class="h" fill="#8a7ce0">AI & INTELLIGENCE</text>
|
|
<text x="694" y="304" class="b">LiteLLM · Open-WebUI · Langfuse · Atlas Brain (15-min cycle)</text>
|
|
<text x="694" y="322" class="s">local Ollama → Groq/Cerebras (free) → Claude (paid) · NATS event bus</text>
|
|
|
|
<rect x="680" y="342" width="480" height="58" rx="10" fill="#13294f" stroke="#e0a234" stroke-opacity=".4"/>
|
|
<text x="694" y="364" class="h" fill="#c9921f">FLEET & DESKTOP</text>
|
|
<text x="694" y="386" class="b">MeshCentral · Webtop Linux desktop · POS terminals · heartbeats</text>
|
|
</g>
|
|
|
|
<!-- Atlas Brain cycle -->
|
|
<text x="40" y="300" class="h">ATLAS BRAIN · every 15 min</text>
|
|
<rect x="40" y="314" width="360" height="96" rx="10" fill="#101f42" stroke="#9b8cf0" stroke-opacity=".4"/>
|
|
<text x="56" y="340" class="b">📧 7 mailboxes → 🏢 Odoo CRM → 🏦 bank feed</text>
|
|
<text x="56" y="362" class="s">↓ atlas-state.json</text>
|
|
<text x="56" y="382" class="b">🤖 LLM synthesis → daily brief</text>
|
|
<text x="56" y="400" class="s">→ Today · Money · Inbox · Pipeline panels</text>
|
|
|
|
<!-- managed sites -->
|
|
<text x="40" y="452" class="h">11 MANAGED SITES</text>
|
|
<rect x="40" y="466" width="1120" height="58" rx="10" fill="#0e1d3c" stroke="#4a9fe2" stroke-opacity=".25"/>
|
|
<text x="56" y="490" class="b">atlasworks.nl · atlascorporation.nl · atlasagency.nl · atlasacademy.nl · atlaspos.nl · atlashub.nl</text>
|
|
<text x="56" y="510" class="s">bicosagency.nl · budgetenergiecoach.nl · hkintercare.nl · jouwenergieadvies.nl · reclamemans.nl — all via Caddy</text>
|
|
|
|
<!-- footer rule -->
|
|
<rect x="40" y="560" width="1120" height="44" rx="10" fill="#0c1830"/>
|
|
<text x="60" y="588" class="s" fill="#7fa8d8">🔒 Public services pass Authentik forward_auth · root-level (SSH, remote desktop) is Tailscale-only · secrets chmod 600 · no bare basic-auth on the public internet</text>
|
|
</svg>
|