個人 GitHub 帳號下公開儲存庫的擁有者可以登入並驗證所有權,自行管理介紹,無需管理員核准。
登入並產生驗證檔案,在 30 分鐘內將其提交至此儲存庫的預設分支。其他分支或分叉儲存庫中的檔案無效。然後在下方檢查檔案,即可無需管理員核准直接管理專案。請保留檔案以維持管理權限。
如需登入,將前往登入頁面。登入後請回到此處,再次點擊所選的驗證按鈕。
在專案資料夾中執行 /nomorevibe verify,即可驗證所有權並自行管理介紹。
一分鐘完成驗證Warmane WotLK combat-log parser and leaderboard app for PizzaWarriors, with Skada-aligned raid reports, player pages, gear, roster, and admin tools.
翻譯準備中
取自儲存庫 README
正在載入完整 README。 以下為已儲存的摘錄。
Pizza Logs turns Wrath of the Lich King combat logs into readable raid sessions, boss pulls, DPS/HPS records, player profiles, gear snapshots, and progression summaries. It is built for PizzaWarriors on Warmane Lordaeron, while remaining useful for compatible WotLK 3.3.5a logs.
The Molten Charcoal identity pairs warm charcoal surfaces, ember-orange accents and cream text with the original Pizza Warriors crest. The site, install icons and shared-link previews use the same branding.檢視完整 README ↗Pizza Logs turns Wrath of the Lich King combat logs into readable raid sessions, boss pulls, DPS/HPS records, player profiles, gear snapshots, and progression summaries. It is built for PizzaWarriors on Warmane Lordaeron, while remaining useful for compatible WotLK 3.3.5a logs.
The Molten Charcoal identity pairs warm charcoal surfaces, ember-orange accents and cream text with the original Pizza Warriors crest. The site, install icons and shared-link previews use the same branding.
Open the live app · Read the docs · Report a bug · Report a vulnerability privately
The 1.0.0 release contract defines the stable canonical product: supported report links, bounded uploads and documented parser metrics. It records compatibility commitments and known limits, including incomplete full UwU parity, reupload after interruption and owner-deferred provider recovery. The product version is independent of parser version 1.1.1; the release record and deployment checks establish which revision is live.
.txt, .log, or .zip uploads with live progress and bounded server-side validation.flowchart LR
Browser["Browser"] -->|"SSE upload and reports"| Web["Next.js web service"]
Web -->|"bounded byte stream"| Parser["FastAPI parser service"]
Parser -->|"validated analytics"| Web
Web <--> Database["PostgreSQL via Prisma"]
Web -->|"best-effort server fetch"| Warmane["Warmane Armory/CDN"]
Railway["Railway main deployment"] --> Web
Railway --> Parser
The browser never receives database credentials, parser filesystem paths, or the admin secret. Raw uploads are streamed through the web service, validated by the parser, reduced to structured analytics, and removed from parser temporary storage after processing.
| Layer | Technology |
|---|---|
| Web | Next.js 16.3, React 19.2, Node.js 24 |
| Language | TypeScript 7 native CLI plus TypeScript 6 ecosystem check |
| UI | Tailwind CSS 4, Recharts 3 |
| Data | PostgreSQL, Prisma 7 |
| Parser | Python 3.14, FastAPI, Pydantic |
| Hosting | Railway, separate web and parser services |
| Security automation | CodeQL, Dependabot, dependency review, pinned Actions |
Prerequisites:
Install the web dependencies and create local configuration:
npm ci --legacy-peer-deps
cp .env.example .env.local
npm run db:generate
npx prisma migrate deploy
npm run db:seed
Install the parser from the reviewed, hash-locked dependency set:
python -m venv parser/.venv
Install dependencies with the virtual environment's interpreter:
# Windows
.\parser\.venv\Scripts\python.exe -m pip install --require-hashes -r .\parser\requirements-dev.lock
# macOS/Linux
parser/.venv/bin/python -m pip install --require-hashes -r parser/requirements-dev.lock
Start the parser and web app in separate terminals:
# Windows
.\parser\.venv\Scripts\python.exe .\parser\main.py
# macOS/Linux
parser/.venv/bin/python parser/main.py
# Either platform, in the web-app terminal
npm run dev
Then open http://localhost:3000. A local production-style stack is also available:
Set a random ADMIN_SECRET of at least 32 characters in .env.local before starting Compose.
docker compose --env-file .env.local up --build
See development setup for database, item metadata, Windows launchers, and environment details.
| Variable | Required | Purpose |
|---|---|---|
DATABASE_URL | Yes | PostgreSQL connection used by Prisma |
PARSER_SERVICE_URL | Yes | Internal FastAPI service base URL |
ADMIN_SECRET | Yes for admin | Server-only signing/encryption key, at least 32 random characters; never a browser login credential |
ADMIN_AUTH_URL | Yes for admin | Exact public HTTPS origin; loopback HTTP is supported for isolated development |
ADMIN_COOKIE_SECURE | Local HTTP only | Set false only for local production-mode HTTP |
ENABLE_LEGACY_PARSER_ROUTES | No | Local parser compatibility escape hatch; disabled by default |
Never commit local .env files. The checked-in .env.example contains placeholders only.
Admin access uses an operator-provisioned account, an authenticator code and revocable sessions. Follow admin account setup and recovery before enabling it.
The complete web/TypeScript gate is:
npm run check:pr
The parser gate is:
cd parser
pytest tests/ -v
Parser behavior changes require focused pytest or fixture coverage. parser/tests/fixtures/README.md explains the fixture format. Useful additional checks are documented in testing.
Parser correctness is the product. The detailed contract lives in docs/parser-contract.md; the short version is:
| Route | Purpose |
|---|---|
/ | Upload and project summary |
/raids | Public raid history |
/raids/[report]/sessions/[date] | Canonical dated raid session |
/encounters/[id] | Boss-pull breakdown |
/leaderboards | Top-three all-time average DPS/HPS across logged boss attempts and per-boss personal-best kill records |
/players and /players/[name] | Player directory and profiles |
/guild-roster | Cached PizzaWarriors roster |
/weekly | Weekly kills and performance |
/bosses and /bosses/[slug] | Boss-specific history and rankings |
/admin | Authenticated diagnostics and maintenance |
Legacy numeric/CUID upload links redirect to canonical public raid URLs where a public report exists. The retired userscript update URLs remain inert only to safely disable old installations.
Use a short-lived branch from current origin/main, keep changes scoped, run the relevant gates, and open a pull request. Do not push directly to main. Parser, schema, upload, admin, security, and deployment changes need especially clear evidence.
See CONTRIBUTING.md and AGENTS.md.
Raid reports contain public in-game character names and performance data. Pizza Logs has no end-user account system, advertising SDK, or payment flow. Read PRIVACY.md for collection and retention details.
Please report vulnerabilities through a private GitHub security advisory, not a public issue. Security controls and known residual risks are documented in SECURITY.md.
The project is released under the MIT License. World of Warcraft and related marks are property of Blizzard Entertainment; Warmane and other referenced services are independent third parties. See THIRD_PARTY_NOTICES.md.