初回コミット: AltStore PAL向けADPホスティングSaaS

- Fastify API・Node Worker・PostgreSQL・S3互換ストレージ構成
- ADP ZIPのマルチパートアップロードとManifest検証(パストラバーサル・ZIP爆弾等を拒否)
- manifest.json/signatureは再シリアライズせず元バイト列を保持
- Cloudflare風の運用向け管理ダッシュボード(shadcn/Radix・日本語UI・4ルート)
  概要/Sources/アプリ/リリース + ルートランディングページ
- 汎用OIDC SSO・Workspace単位の認可・demo mode
- 匿名配布: /sources/{slug}/source.json, /artifacts/{releaseId}/manifest.json
- Docker Compose対応
This commit is contained in:
amania-jailbreak
2026-08-05 10:09:58 +09:00
commit 93825ebc64
59 changed files with 16065 additions and 0 deletions
+53
View File
@@ -0,0 +1,53 @@
"use client";
import Link from "next/link";
import { ArrowRight, Boxes, FileArchive, Gauge, KeyRound, ShieldCheck, UploadCloud } from "lucide-react";
import { AUTH_MODE, API_BASE } from "@/app/lib/dashboard";
export default function Home() {
return <main className="landing">
<header className="landing-header">
<Link className="landing-brand" href="/"><span className="admin-brand-mark">A</span><span>AltDock</span><span className="landing-beta">BETA</span></Link>
<nav className="landing-nav">
<a href="https://faq.altstore.io/developers/distribute-with-altstore-pal" target="_blank" rel="noreferrer">PALドキュメント</a>
<a href="https://developer.apple.com/documentation/marketplacekit/ingesting-an-alternative-distribution-package" target="_blank" rel="noreferrer">ADP仕様</a>
{AUTH_MODE === "oidc" ? <a className="landing-signin" href={`${API_BASE}/auth/login`}>SSOでログイン</a> : <Link className="landing-signin" href="/dashboard"> <ArrowRight size={14} /></Link>}
</nav>
</header>
<section className="landing-hero">
<div className="landing-hero-copy">
<div className="landing-eyebrow">ALTSTORE PAL · ADP HOSTING</div>
<h1>Notarization済みのADPを<br />PALへ届ける</h1>
<p>Appleの検証チェーンを壊さずADP ZIPをアップロードするだけでAltStore PAL互換のSourceを公開できるホスティング基盤ですManifestとsignatureは再シリアライズせず</p>
<div className="landing-hero-actions">
<Link className="ui-button ui-button-primary" href="/dashboard"> <ArrowRight size={15} /></Link>
<a className="ui-button ui-button-outline" href="https://faq.altstore.io/developers/distribute-with-altstore-pal" target="_blank" rel="noreferrer"></a>
</div>
<div className="landing-hero-meta"><Gauge size={14} />Demo mode · API <code>{API_BASE}</code></div>
</div>
<aside className="landing-hero-card" aria-hidden="true">
<div className="landing-flow-step"><span className="landing-flow-num">1</span><span><UploadCloud size={16} />ADP ZIPをアップロード</span></div>
<div className="landing-flow-arrow" />
<div className="landing-flow-step"><span className="landing-flow-num">2</span><span><ShieldCheck size={16} />Manifest</span></div>
<div className="landing-flow-arrow" />
<div className="landing-flow-step done"><span className="landing-flow-num">3</span><span><Boxes size={16} />PAL Sourceを公開</span></div>
</aside>
</section>
<section className="landing-features">
<article className="landing-feature"><FileArchive size={18} /><h2></h2><p>ADPの階層manifest.jsonsignatureを一切書き換えませんAppleの検証チェーンがそのまま通ります</p></article>
<article className="landing-feature"><ShieldCheck size={18} /><h2></h2><p>ZIP爆弾Workerで検査し</p></article>
<article className="landing-feature"><KeyRound size={18} /><h2>Workspace単位の認可</h2><p>OIDC SSOでユーザーを識別しWorkspaceごとにSource</p></article>
</section>
<footer className="landing-footer">
<span>AltDock · AltStore PAL向け ADP </span>
<div className="landing-footer-links">
<Link href="/dashboard"></Link>
<a href="https://faq.altstore.io/developers/make-a-source" target="_blank" rel="noreferrer">Source仕様</a>
<a href={`${API_BASE}/healthz`} target="_blank" rel="noreferrer">APIステータス</a>
</div>
</footer>
</main>;
}