Initial commit: MorseQuest - Complete amateur radio education platform

- Complete Product Requirements Document with full technical specs
- MorseQuest adventure-based branding and visual identity
- All logos, icons, and brand assets ready for development
- Freemium business model ($9.95/year, first year free launch strategy)
- Ready for Keylink IT Forge platform deployment

Phase 1 MVP ready to begin (10-12 week timeline)
This commit is contained in:
2026-04-29 15:18:08 -05:00
commit 7ea8f12a31
13 changed files with 1772 additions and 0 deletions
+62
View File
@@ -0,0 +1,62 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 80 80" width="80" height="80">
<defs>
<radialGradient id="expertGradient" cx="0.5" cy="0.3">
<stop offset="0%" stop-color="#FFD700"/>
<stop offset="50%" stop-color="#FFA500"/>
<stop offset="100%" stop-color="#DAA520"/>
</radialGradient>
<radialGradient id="gemGradient" cx="0.3" cy="0.3">
<stop offset="0%" stop-color="#FFFFFF"/>
<stop offset="50%" stop-color="#87CEEB"/>
<stop offset="100%" stop-color="#4169E1"/>
</radialGradient>
<filter id="expertShadow">
<feDropShadow dx="2" dy="2" stdDeviation="3" flood-color="#000" flood-opacity="0.4"/>
</filter>
</defs>
<!-- Badge star shape -->
<g transform="translate(40, 40)">
<polygon points="0,-32 8,-10 30,-10 15,2 23,24 0,12 -23,24 -15,2 -30,-10 -8,-10"
fill="url(#expertGradient)" stroke="#B8860B" stroke-width="2" filter="url(#expertShadow)"/>
</g>
<!-- Inner circle -->
<circle cx="40" cy="40" r="20" fill="#8B0000" stroke="#DAA520" stroke-width="2"/>
<!-- Central gem -->
<circle cx="40" cy="35" r="6" fill="url(#gemGradient)" stroke="#4169E1" stroke-width="1"/>
<!-- Telegraph key symbol -->
<g transform="translate(40, 45) scale(0.5)">
<rect x="-8" y="-2" width="16" height="3" rx="1.5" fill="#DAA520"/>
<circle cx="-8" cy="0" r="3" fill="#DAA520"/>
<circle cx="8" cy="0" r="2" fill="#DAA520"/>
</g>
<!-- "E" for Expert -->
<text x="40" y="32" font-family="serif" font-size="12" font-weight="bold"
fill="#FFFFFF" text-anchor="middle">E</text>
<!-- Decorative corners -->
<g transform="translate(15, 15)">
<polygon points="0,0 3,1 1,3" fill="#DAA520"/>
</g>
<g transform="translate(65, 15)">
<polygon points="0,0 -3,1 -1,3" fill="#DAA520"/>
</g>
<g transform="translate(15, 65)">
<polygon points="0,0 3,-1 1,-3" fill="#DAA520"/>
</g>
<g transform="translate(65, 65)">
<polygon points="0,0 -3,-1 -1,-3" fill="#DAA520"/>
</g>
<!-- Lightning bolts for speed -->
<g transform="translate(25, 40)">
<path d="M0,-5 L3,-1 L1,0 L4,4 L-1,1 L1,0 Z" fill="#FFFF00" opacity="0.8"/>
</g>
<g transform="translate(55, 40)">
<path d="M0,-5 L3,-1 L1,0 L4,4 L-1,1 L1,0 Z" fill="#FFFF00" opacity="0.8"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 2.3 KiB

+46
View File
@@ -0,0 +1,46 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 80 80" width="80" height="80">
<defs>
<radialGradient id="noviceGradient" cx="0.5" cy="0.3">
<stop offset="0%" stop-color="#CD7F32"/>
<stop offset="70%" stop-color="#A0522D"/>
<stop offset="100%" stop-color="#8B4513"/>
</radialGradient>
<radialGradient id="noviceGemGradient" cx="0.3" cy="0.3">
<stop offset="0%" stop-color="#87CEEB"/>
<stop offset="50%" stop-color="#4169E1"/>
<stop offset="100%" stop-color="#191970"/>
</radialGradient>
<filter id="badgeShadow">
<feDropShadow dx="2" dy="2" stdDeviation="2" flood-color="#000" flood-opacity="0.3"/>
</filter>
</defs>
<!-- Badge circle -->
<circle cx="40" cy="40" r="36" fill="url(#noviceGradient)" stroke="#654321" stroke-width="2" filter="url(#badgeShadow)"/>
<!-- Inner ring -->
<circle cx="40" cy="40" r="30" fill="none" stroke="#F4A460" stroke-width="1.5"/>
<!-- Quest shield (novice crest) -->
<g transform="translate(40, 38)">
<path d="M-12,-10 L12,-10 L12,2 Q12,10 0,16 Q-12,10 -12,2 Z"
fill="#F4A460" stroke="#654321" stroke-width="1.2"/>
<!-- Quest gem on shield -->
<circle cx="0" cy="-2" r="3.5" fill="url(#noviceGemGradient)" stroke="#4169E1" stroke-width="0.6"/>
</g>
<!-- "N" for Novice -->
<text x="40" y="61" font-family="serif" font-size="14" font-weight="bold"
fill="#F4A460" text-anchor="middle">NOVICE</text>
<!-- Stars around the edge -->
<g transform="translate(40, 15)">
<polygon points="0,-3 1,0 4,0 2,2 3,5 0,3 -3,5 -2,2 -4,0 -1,0" fill="#F4A460"/>
</g>
<g transform="translate(65, 40)">
<polygon points="0,-2 0.5,0 2,0 1,1 1.5,3 0,2 -1.5,3 -1,1 -2,0 -0.5,0" fill="#F4A460"/>
</g>
<g transform="translate(15, 40)">
<polygon points="0,-2 0.5,0 2,0 1,1 1.5,3 0,2 -1.5,3 -1,1 -2,0 -0.5,0" fill="#F4A460"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 1.8 KiB