English | 日本語
このドキュメントは JustUUID の開発・運用向け詳細ガイドです。
- Framework: SvelteKit (Svelte 5)
- Runtime: Cloudflare Pages Functions
- Database: Cloudflare D1(
DBバインディング) - Auth: GitHub OAuth
- Session: JWT cookie(
session)
主要テーブル:
users: ユーザー情報 + UUIDsimilarity_pairs: 全体 UUID 類似度ランキングranking_meta: ランキング更新メタ情報(自動作成)
- Node.js 20+
- npm
- Cloudflare アカウント
- GitHub OAuth App
git clone <your-repo-url>
cd justuuid
npm install設定:
- Homepage URL:
https://justuuid.pages.dev - Authorization callback URL:
https://justuuid.pages.dev/auth/callback - ローカル callback URL:
http://localhost:5173/auth/callback
.dev.vars.example を参考に .dev.vars を作成:
GITHUB_CLIENT_ID=...
GITHUB_CLIENT_SECRET=...
JWT_SECRET=...JWT_SECRET 生成例:
openssl rand -hex 32作成:
npx wrangler login
npx wrangler d1 create justuuid-dbマイグレーション:
# リモート
npm run db:migrate:remote
# ローカル
npm run db:migrate:localnpm run dev
npm run check
npm run format:check
npm run formatCloudflare 互換のローカル実行:
npm run build
npx wrangler pages dev .svelte-kit/cloudflarewrangler.jsonc には D1 バインディング情報(DB)を定義しています。
秘密情報はリポジトリに入れません。
Cloudflare Pages 側で設定する環境変数:
GITHUB_CLIENT_IDGITHUB_CLIENT_SECRETJWT_SECRET
全体ランキングは similarity_pairs を参照します。
無料枠を考慮し、重い再計算は条件付きで実行します。
再計算トリガー:
similarity_pairsが空- 前回更新時からユーザー数が変化
- 最終更新から 6 時間経過
同時実行と安全性:
- ロック + タイムアウトで重複実行を防止
ranking_metaに更新状態を保存- 更新失敗時は既存ランキングを保持
関連ファイル:
src/lib/ranking.tssrc/routes/ranking/+page.server.tssrc/routes/api/ranking/+server.ts
ユーザー別の類似 UUID はオンデマンド計算です。
- 初期: 10件
- 追加: 10件ずつ
- フルリロードなし
関連ファイル:
src/lib/similar-users.tssrc/routes/u/[uuid]/+page.server.tssrc/routes/api/similar/[uuid]/+server.ts
POST /api/usersPOST /api/similar/{uuid}POST /api/rankingGET /api/badge/users.svgGET /api/badge/user/{github-username}.svgGET /api/badge/u/{uuid}.svg
src/
lib/
auth.ts
db.ts
ranking.ts
similar-users.ts
similarity.ts
routes/
+page.svelte
ranking/
u/[uuid]/
api/
migrations/
0001_initial.sql
0002_similarity_pairs.sqlnpm run deploy手動で同等実行:
npm run build
npx wrangler pages deploy .svelte-kit/cloudflare --project-name justuuid- Cloudflare logs で runtime error を確認
- D1 の
users/similarity_pairs/ranking_metaを確認 src/lib/ranking.tsの更新条件を確認
- GitHub OAuth App の callback URL を確認
GITHUB_CLIENT_ID/GITHUB_CLIENT_SECRET/JWT_SECRETを確認
npm run db:migrate:remote