Files
HokmPlay/site/app/download/page.tsx
T
soroush.asadi 5d38312ef0
CI/CD / CI - API (dotnet build + engine sim) (push) Successful in 4m40s
CI/CD / CI - Web (tsc + next build) (push) Successful in 1m7s
CI/CD / Deploy - local stack (db + server + web) (push) Failing after 41s
Marketing site (bargevasat.ir) + admin-editable store links + subdomain split
- New standalone Next.js marketing site under site/ (static export, SEO):
  landing, download/install guide (Bazaar/Myket/iOS-PWA/web), FAQ (JSON-LD),
  privacy, terms, support, /admin link editor. fa RTL, sitemap/robots/manifest.
- Backend: SiteLinksService (JSON-file persisted) + GET /api/site/links (public)
  + POST /api/admin/site/links (X-Admin-Token). ADMIN_TOKEN + Site__DataDir via env.
- compose: hokm-site service (:1520) + hokm_data volume for links JSON.
- CI deploy job builds + deploys the site container.
- deploy/SUBDOMAIN_SPLIT.md: nginx blocks, cert reissue, DNS, ENV split.
- Exclude site/ from root tsc + web docker context.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-08 07:19:43 +03:30

77 lines
3.6 KiB
TypeScript
Raw Blame History

This file contains invisible Unicode characters
This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
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.
import type { Metadata } from "next";
import { PageShell } from "@/components/PageShell";
import { DownloadButtons } from "@/components/DownloadButtons";
export const metadata: Metadata = {
title: "دانلود و نصب",
description:
"برگ وسط را روی اندروید (کافه‌بازار، مایکت)، آیفون (نصب وب/PWA) یا مستقیماً در مرورگر اجرا کن. راهنمای گام‌به‌گام نصب.",
alternates: { canonical: "/download" },
};
function Steps({ items }: { items: string[] }) {
return (
<ol className="space-y-3">
{items.map((s, i) => (
<li key={i} className="flex gap-3">
<span className="flex h-7 w-7 shrink-0 items-center justify-center rounded-full btn-gold text-sm font-black">
{i + 1}
</span>
<span className="pt-0.5 text-cream/80">{s}</span>
</li>
))}
</ol>
);
}
export default function DownloadPage() {
return (
<PageShell title="دانلود و نصب" subtitle="هر طور که دوست داری بازی کن — روی گوشی نصب کن یا مستقیم در مرورگر اجرا کن.">
<div className="mb-8">
<DownloadButtons variant="full" />
</div>
{/* Web */}
<div className="glass rounded-2xl p-6">
<h2 className="text-xl font-bold text-cream">🌐 بازی در مرورگر (بدون نصب)</h2>
<p className="mt-2 text-cream/70">
سریعترین راه: کافی است آدرس بازی را در مرورگر باز کنی و وارد شوی. هیچ نصبی لازم نیست و روی هر دستگاهی کار میکند.
</p>
</div>
{/* Android */}
<div id="android" className="glass rounded-2xl p-6">
<h2 className="text-xl font-bold text-cream">🤖 اندروید</h2>
<p className="mt-2 mb-4 text-cream/70">از کافهبازار یا مایکت نصب کن، یا اپ وب را به صفحهٔ اصلی اضافه کن:</p>
<Steps
items={[
"آدرس بازی را در مرورگر کروم باز کن.",
"روی منوی سه‌نقطهٔ بالا-راست بزن.",
"گزینهٔ «افزودن به صفحهٔ اصلی / Install app» را انتخاب کن.",
"آیکن برگ وسط مثل یک اپ روی گوشی‌ات می‌نشیند.",
]}
/>
</div>
{/* iOS */}
<div id="ios" className="glass rounded-2xl p-6">
<h2 className="text-xl font-bold text-cream">🍏 آیفون و آیپد (iOS)</h2>
<p className="mt-2 mb-4 text-cream/70">
روی iOS بازی را بهصورت وباپ (PWA) نصب کن درست مثل یک اپ واقعی، با آیکن روی صفحهٔ اصلی:
</p>
<Steps
items={[
"آدرس بازی را در مرورگر Safari باز کن.",
"روی دکمهٔ «اشتراک‌گذاری» (مربع با فلش رو به بالا) بزن.",
"کمی پایین برو و «Add to Home Screen / افزودن به صفحهٔ اصلی» را انتخاب کن.",
"روی «Add» بزن — آیکن برگ وسط روی صفحهٔ اصلی اضافه می‌شود و تمام‌صفحه اجرا می‌شود.",
]}
/>
<p className="mt-4 text-sm text-cream/55">
نکته: روی آیفون حتماً از مرورگر Safari استفاده کن؛ افزودن به صفحهٔ اصلی فقط در Safari کار میکند.
</p>
</div>
</PageShell>
);
}