- Extract services into services/{frontend,backend,discord-gateway}
- Create packages/shared/ for shared logger, errors, utils, types
- Setup Modular MVC pattern in backend (controller→service→repository)
- Setup event-driven architecture in discord-gateway with Redis pub/sub
- Move Docker files to infra/docker/ with per-service Dockerfiles
- Update docker-compose.yml to use Traefik-only routing (no port exposes)
- Update GitHub Actions deploy workflow for multi-service matrix build
- Fix all import paths and resolve type errors across all services
- All 3 services pass tsc --noEmit clean
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
45 lines
2.0 KiB
XML
45 lines
2.0 KiB
XML
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 128 128" width="128" height="128">
|
|
<defs>
|
|
<linearGradient id="bg" x1="0%" y1="0%" x2="100%" y2="100%">
|
|
<stop offset="0%" stop-color="#1a1a2e"/>
|
|
<stop offset="100%" stop-color="#16213e"/>
|
|
</linearGradient>
|
|
<linearGradient id="shield" x1="0%" y1="0%" x2="100%" y2="100%">
|
|
<stop offset="0%" stop-color="#0ea5e9"/>
|
|
<stop offset="100%" stop-color="#06b6d4"/>
|
|
</linearGradient>
|
|
<linearGradient id="eye" x1="0%" y1="0%" x2="100%" y2="100%">
|
|
<stop offset="0%" stop-color="#22d3ee"/>
|
|
<stop offset="100%" stop-color="#67e8f9"/>
|
|
</linearGradient>
|
|
<filter id="glow">
|
|
<feGaussianBlur stdDeviation="2" result="blur"/>
|
|
<feMerge>
|
|
<feMergeNode in="blur"/>
|
|
<feMergeNode in="SourceGraphic"/>
|
|
</feMerge>
|
|
</filter>
|
|
</defs>
|
|
<!-- Background -->
|
|
<rect width="128" height="128" rx="24" fill="url(#bg)"/>
|
|
<!-- Shield shape -->
|
|
<path d="M64 18 L102 32 L102 64 C102 88 84 106 64 114 C44 106 26 88 26 64 L26 32 Z"
|
|
fill="url(#shield)" opacity="0.9"/>
|
|
<!-- Shield inner border -->
|
|
<path d="M64 24 L96 36 L96 63 C96 84 80 100 64 108 C48 100 32 84 32 63 L32 36 Z"
|
|
fill="none" stroke="#38bdf8" stroke-width="1.5" opacity="0.6"/>
|
|
<!-- Eye outer -->
|
|
<ellipse cx="64" cy="60" rx="22" ry="14" fill="none" stroke="#0f172a" stroke-width="2.5" opacity="0.8"/>
|
|
<!-- Eye inner -->
|
|
<ellipse cx="64" cy="60" rx="20" ry="12" fill="#0f172a" opacity="0.7"/>
|
|
<!-- Pupil -->
|
|
<circle cx="64" cy="60" r="7" fill="url(#eye)" filter="url(#glow)"/>
|
|
<!-- Pupil inner dot -->
|
|
<circle cx="64" cy="60" r="3" fill="#ffffff" opacity="0.9"/>
|
|
<!-- Eyebrow / scan line -->
|
|
<line x1="42" y1="60" x2="86" y2="60" stroke="#0ea5e9" stroke-width="0.5" opacity="0.4"/>
|
|
<!-- GMW text -->
|
|
<text x="64" y="92" text-anchor="middle" font-family="system-ui, -apple-system, sans-serif"
|
|
font-weight="900" font-size="16" fill="#ffffff" letter-spacing="3" opacity="0.95">GMW</text>
|
|
</svg>
|