个人 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.