Files
web-frontend/docs/public/diagrams/system-architecture.svg
2026-05-01 12:11:04 +07:00

86 lines
7.5 KiB
XML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<svg width="1400" height="860" viewBox="0 0 1400 860" fill="none" xmlns="http://www.w3.org/2000/svg">
<rect width="1400" height="860" fill="#F6F7F9"/>
<rect x="40" y="32" width="1320" height="796" rx="28" fill="white" stroke="#D9DEE7" stroke-width="2"/>
<text x="80" y="88" fill="#111827" font-family="Arial, sans-serif" font-size="30" font-weight="700">Схема архитектуры программного продукта</text>
<rect x="84" y="150" width="220" height="96" rx="20" fill="#F9FAFB" stroke="#C7D2E0" stroke-width="2"/>
<text x="194" y="190" text-anchor="middle" fill="#111827" font-family="Arial, sans-serif" font-size="24" font-weight="700">Браузер клиента</text>
<text x="194" y="220" text-anchor="middle" fill="#4B5563" font-family="Arial, sans-serif" font-size="18">desktop / mobile</text>
<rect x="372" y="130" width="280" height="140" rx="22" fill="#EEF5FF" stroke="#8FB3E8" stroke-width="2"/>
<text x="512" y="180" text-anchor="middle" fill="#111827" font-family="Arial, sans-serif" font-size="26" font-weight="700">web-frontend</text>
<text x="512" y="212" text-anchor="middle" fill="#374151" font-family="Arial, sans-serif" font-size="18">Nuxt 4 + Vue 3</text>
<text x="512" y="238" text-anchor="middle" fill="#6B7280" font-family="Arial, sans-serif" font-size="16">страницы, компоненты, composables</text>
<rect x="720" y="154" width="220" height="92" rx="20" fill="#F9FAFB" stroke="#C7D2E0" stroke-width="2"/>
<text x="830" y="194" text-anchor="middle" fill="#111827" font-family="Arial, sans-serif" font-size="23" font-weight="700">/api/graphql</text>
<text x="830" y="222" text-anchor="middle" fill="#4B5563" font-family="Arial, sans-serif" font-size="17">server proxy</text>
<rect x="1008" y="130" width="292" height="140" rx="22" fill="#EFFBF5" stroke="#84D5A4" stroke-width="2"/>
<text x="1154" y="180" text-anchor="middle" fill="#111827" font-family="Arial, sans-serif" font-size="26" font-weight="700">apollo-backend</text>
<text x="1154" y="212" text-anchor="middle" fill="#374151" font-family="Arial, sans-serif" font-size="18">Apollo Server + Express</text>
<text x="1154" y="238" text-anchor="middle" fill="#6B7280" font-family="Arial, sans-serif" font-size="16">GraphQL, auth, business logic</text>
<rect x="1010" y="348" width="134" height="86" rx="18" fill="#FFF8E8" stroke="#F0C36B" stroke-width="2"/>
<text x="1077" y="386" text-anchor="middle" fill="#111827" font-family="Arial, sans-serif" font-size="22" font-weight="700">Prisma</text>
<text x="1077" y="410" text-anchor="middle" fill="#4B5563" font-family="Arial, sans-serif" font-size="16">ORM</text>
<rect x="1170" y="348" width="150" height="86" rx="18" fill="#FFF8E8" stroke="#F0C36B" stroke-width="2"/>
<text x="1245" y="386" text-anchor="middle" fill="#111827" font-family="Arial, sans-serif" font-size="22" font-weight="700">PostgreSQL</text>
<text x="1245" y="410" text-anchor="middle" fill="#4B5563" font-family="Arial, sans-serif" font-size="16">основная БД</text>
<rect x="372" y="350" width="300" height="120" rx="22" fill="#FCF5FF" stroke="#C8A6E5" stroke-width="2"/>
<text x="522" y="394" text-anchor="middle" fill="#111827" font-family="Arial, sans-serif" font-size="26" font-weight="700">GraphQL документы</text>
<text x="522" y="424" text-anchor="middle" fill="#374151" font-family="Arial, sans-serif" font-size="18">graphql/operations</text>
<text x="522" y="448" text-anchor="middle" fill="#6B7280" font-family="Arial, sans-serif" font-size="16">typed generated documents</text>
<rect x="84" y="350" width="220" height="120" rx="22" fill="#FCF5FF" stroke="#C8A6E5" stroke-width="2"/>
<text x="194" y="394" text-anchor="middle" fill="#111827" font-family="Arial, sans-serif" font-size="25" font-weight="700">UI-компоненты</text>
<text x="194" y="424" text-anchor="middle" fill="#374151" font-family="Arial, sans-serif" font-size="18">catalog, orders, profile</text>
<text x="194" y="448" text-anchor="middle" fill="#6B7280" font-family="Arial, sans-serif" font-size="16">daisyUI / Tailwind</text>
<rect x="80" y="560" width="240" height="96" rx="20" fill="#F9FAFB" stroke="#C7D2E0" stroke-width="2"/>
<text x="200" y="600" text-anchor="middle" fill="#111827" font-family="Arial, sans-serif" font-size="24" font-weight="700">Telegram / MAX</text>
<text x="200" y="628" text-anchor="middle" fill="#4B5563" font-family="Arial, sans-serif" font-size="17">каналы уведомлений</text>
<rect x="412" y="560" width="220" height="96" rx="20" fill="#F9FAFB" stroke="#C7D2E0" stroke-width="2"/>
<text x="522" y="600" text-anchor="middle" fill="#111827" font-family="Arial, sans-serif" font-size="24" font-weight="700">Vault</text>
<text x="522" y="628" text-anchor="middle" fill="#4B5563" font-family="Arial, sans-serif" font-size="17">секреты и bootstrap env</text>
<rect x="760" y="560" width="220" height="96" rx="20" fill="#F9FAFB" stroke="#C7D2E0" stroke-width="2"/>
<text x="870" y="600" text-anchor="middle" fill="#111827" font-family="Arial, sans-serif" font-size="24" font-weight="700">1С</text>
<text x="870" y="628" text-anchor="middle" fill="#4B5563" font-family="Arial, sans-serif" font-size="17">заказы, статусы, остатки</text>
<rect x="1080" y="560" width="220" height="96" rx="20" fill="#F9FAFB" stroke="#C7D2E0" stroke-width="2"/>
<text x="1190" y="600" text-anchor="middle" fill="#111827" font-family="Arial, sans-serif" font-size="24" font-weight="700">Dokploy</text>
<text x="1190" y="628" text-anchor="middle" fill="#4B5563" font-family="Arial, sans-serif" font-size="17">deploy + rollout</text>
<line x1="304" y1="198" x2="372" y2="198" stroke="#6B7280" stroke-width="3"/>
<polygon points="372,198 358,190 358,206" fill="#6B7280"/>
<line x1="652" y1="198" x2="720" y2="198" stroke="#6B7280" stroke-width="3"/>
<polygon points="720,198 706,190 706,206" fill="#6B7280"/>
<line x1="940" y1="198" x2="1008" y2="198" stroke="#6B7280" stroke-width="3"/>
<polygon points="1008,198 994,190 994,206" fill="#6B7280"/>
<line x1="1154" y1="270" x2="1154" y2="348" stroke="#6B7280" stroke-width="3"/>
<polygon points="1154,348 1146,334 1162,334" fill="#6B7280"/>
<line x1="1144" y1="391" x2="1170" y2="391" stroke="#6B7280" stroke-width="3"/>
<polygon points="1170,391 1156,383 1156,399" fill="#6B7280"/>
<line x1="522" y1="270" x2="522" y2="350" stroke="#6B7280" stroke-width="3"/>
<polygon points="522,350 514,336 530,336" fill="#6B7280"/>
<line x1="372" y1="410" x2="304" y2="410" stroke="#6B7280" stroke-width="3"/>
<polygon points="304,410 318,402 318,418" fill="#6B7280"/>
<line x1="200" y1="560" x2="200" y2="470" stroke="#6B7280" stroke-width="3" stroke-dasharray="8 8"/>
<polygon points="200,470 192,484 208,484" fill="#6B7280"/>
<line x1="522" y1="560" x2="522" y2="470" stroke="#6B7280" stroke-width="3" stroke-dasharray="8 8"/>
<polygon points="522,470 514,484 530,484" fill="#6B7280"/>
<line x1="870" y1="560" x2="1060" y2="270" stroke="#6B7280" stroke-width="3" stroke-dasharray="8 8"/>
<polygon points="1060,270 1047,279 1061,287" fill="#6B7280"/>
<line x1="1190" y1="560" x2="1190" y2="270" stroke="#6B7280" stroke-width="3" stroke-dasharray="8 8"/>
<polygon points="1190,270 1182,284 1198,284" fill="#6B7280"/>
<text x="84" y="742" fill="#6B7280" font-family="Arial, sans-serif" font-size="18">Сплошные линии — основной runtime-контур. Пунктир — внешние и инфраструктурные зависимости.</text>
</svg>