Build Hokm card game: offline vs-AI + online social/gamification (mock backend)

- Pure-TS Hokm engine (deal, hakem, trump, tricks, scoring, Kot) + AI bots
- Persian-luxury RTL UI (Next 16 / React 19 / Tailwind v4 / Framer Motion / Zustand)
- Online platform behind OnlineService seam (mock now, .NET SignalR later):
  auth (phone OTP + email/Google), profiles, friends, private rooms with
  partner pick, ranked matchmaking, leaderboard, shop
- Gamification: ranks/leagues, coins, XP/levels, daily rewards, achievements
- i18n fa/en, PWA manifest, engine + gamification sims

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
soroush.asadi
2026-06-04 10:11:00 +03:30
parent dff1a34f95
commit e2d0a602b6
41 changed files with 5766 additions and 93 deletions
+22
View File
@@ -0,0 +1,22 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512">
<defs>
<linearGradient id="bg" x1="0" y1="0" x2="1" y2="1">
<stop offset="0" stop-color="#0e1c3f"/>
<stop offset="1" stop-color="#060c1f"/>
</linearGradient>
<linearGradient id="gold" x1="0" y1="0" x2="0" y2="1">
<stop offset="0" stop-color="#f1da8a"/>
<stop offset="0.55" stop-color="#d4af37"/>
<stop offset="1" stop-color="#b8860b"/>
</linearGradient>
</defs>
<rect width="512" height="512" rx="112" fill="url(#bg)"/>
<g fill="none" stroke="#d4af37" stroke-opacity="0.18" stroke-width="3">
<path d="M256 48 L464 256 L256 464 L48 256 Z"/>
<path d="M256 120 L392 256 L256 392 L120 256 Z"/>
</g>
<path d="M256 150 C300 150 330 182 330 224 C330 286 256 330 256 360 C256 330 182 286 182 224 C182 182 212 150 256 150 Z"
fill="url(#gold)"/>
<text x="256" y="430" text-anchor="middle" font-family="Vazirmatn, Tahoma, sans-serif"
font-size="92" font-weight="800" fill="url(#gold)">حکم</text>
</svg>

After

Width:  |  Height:  |  Size: 1.0 KiB

+20
View File
@@ -0,0 +1,20 @@
{
"name": "حکم | Hokm",
"short_name": "حکم",
"description": "بازی حکم اصیل ایرانی با حریف‌های هوشمند",
"lang": "fa",
"dir": "rtl",
"start_url": "/",
"display": "standalone",
"orientation": "any",
"background_color": "#060c1f",
"theme_color": "#060c1f",
"icons": [
{
"src": "/icon.svg",
"sizes": "any",
"type": "image/svg+xml",
"purpose": "any maskable"
}
]
}