Initial release: Disc Agenda frisbee tournament platform
Some checks failed
Build and Push / build (push) Failing after 8s

Full-stack tournament management app with real-time scoring:
- Go 1.26 backend with REST API and WebSocket live scoring
- React 19 + Vite 8 frontend with mobile-first design
- File-based JSON storage with JSONL audit logs
- Multi-stage Docker build with Gitea CI/CD pipeline
- Post-tournament questionnaire with spirit voting
- Technical documentation and project description

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-03-15 14:48:15 +01:00
commit a7244406fd
38 changed files with 5749 additions and 0 deletions

View File

@@ -0,0 +1,61 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 800 400" fill="none">
<defs>
<linearGradient id="sky" x1="0" y1="0" x2="0" y2="1">
<stop offset="0%" stop-color="#0d2818"/>
<stop offset="100%" stop-color="#166534"/>
</linearGradient>
<linearGradient id="grass" x1="0" y1="0" x2="0" y2="1">
<stop offset="0%" stop-color="#22c55e"/>
<stop offset="100%" stop-color="#16a34a"/>
</linearGradient>
<linearGradient id="disc-grad" x1="0" y1="0" x2="1" y2="1">
<stop offset="0%" stop-color="#f97316"/>
<stop offset="100%" stop-color="#fb923c"/>
</linearGradient>
</defs>
<!-- Background -->
<rect width="800" height="400" fill="url(#sky)"/>
<!-- Grass field -->
<ellipse cx="400" cy="420" rx="500" ry="120" fill="url(#grass)" opacity="0.3"/>
<!-- Field lines -->
<line x1="100" y1="350" x2="700" y2="350" stroke="#22c55e" stroke-width="1" opacity="0.2"/>
<line x1="150" y1="330" x2="650" y2="330" stroke="#22c55e" stroke-width="1" opacity="0.15"/>
<!-- Player silhouette - layout dive -->
<g transform="translate(320, 180) rotate(-15)">
<!-- Body -->
<ellipse cx="0" cy="0" rx="18" ry="35" fill="white" opacity="0.9"/>
<!-- Head -->
<circle cx="-5" cy="-42" r="14" fill="white" opacity="0.9"/>
<!-- Extended arm (throwing) -->
<line x1="15" y1="-15" x2="65" y2="-35" stroke="white" stroke-width="6" stroke-linecap="round" opacity="0.9"/>
<!-- Other arm -->
<line x1="-15" y1="-10" x2="-55" y2="10" stroke="white" stroke-width="6" stroke-linecap="round" opacity="0.9"/>
<!-- Legs (diving) -->
<line x1="-5" y1="30" x2="-40" y2="70" stroke="white" stroke-width="6" stroke-linecap="round" opacity="0.9"/>
<line x1="5" y1="30" x2="30" y2="75" stroke="white" stroke-width="6" stroke-linecap="round" opacity="0.9"/>
</g>
<!-- Flying disc -->
<g transform="translate(480, 100) rotate(-20)">
<ellipse cx="0" cy="4" rx="32" ry="10" fill="url(#disc-grad)" opacity="0.3"/>
<ellipse cx="0" cy="0" rx="28" ry="28" fill="url(#disc-grad)"/>
<ellipse cx="0" cy="0" rx="18" ry="18" fill="none" stroke="white" stroke-width="1.5" opacity="0.4"/>
<ellipse cx="0" cy="0" rx="8" ry="8" fill="white" opacity="0.2"/>
<!-- Motion trails -->
<line x1="-40" y1="5" x2="-55" y2="8" stroke="#fb923c" stroke-width="2" opacity="0.5"/>
<line x1="-38" y1="12" x2="-52" y2="14" stroke="#fb923c" stroke-width="2" opacity="0.4"/>
<line x1="-42" y1="-2" x2="-54" y2="0" stroke="#fb923c" stroke-width="2" opacity="0.3"/>
</g>
<!-- Decorative dots -->
<circle cx="120" cy="80" r="2" fill="#4ade80" opacity="0.3"/>
<circle cx="680" cy="120" r="3" fill="#4ade80" opacity="0.2"/>
<circle cx="200" cy="300" r="2" fill="#38bdf8" opacity="0.2"/>
<circle cx="600" cy="280" r="2" fill="#38bdf8" opacity="0.15"/>
<circle cx="150" cy="200" r="1.5" fill="white" opacity="0.1"/>
<circle cx="650" cy="60" r="1.5" fill="white" opacity="0.15"/>
</svg>

After

Width:  |  Height:  |  Size: 2.9 KiB