Warframe Hub is a community web app for Warframe players. It helps Tenno spend their time well in-game by:
- Providing timely worldstate information so you can plan when and where to play
- Giving in-depth item, drop, and searchable game data when you need to dig deeper
Live site: https://hub.warframestat.us (also deployed via Vercel)
Project docs and community norms:
- Documentation index
- Contributing — pull requests, coding standards, tests
- Code of Conduct
- Security policy — how to report vulnerabilities
- Architecture — high-level design
- External interface — routes, config, client storage
- Roadmap — near-term direction
- Repo layout — where code lives
git clone https://github.com/WFCD/warframe-hub.git
cd warframe-hub
npm install
npm run dev # http://localhost:8742Production build locally:
npm run build
npm start # http://localhost:8742Requires Node.js 24 LTS (Krypton) (see .nvmrc). Copy .example.env if you need NEXT_PUBLIC_* values.
| Goal | How |
|---|---|
| Use the hub | Open https://hub.warframestat.us, or run/self-host from this repo (below) |
| Report bugs / ask for features | GitHub Issues (templates for bugs, features, questions). English preferred. |
| Discuss | GitHub Issues / Pull Requests (searchable, URL-addressable) or WFCD Discord |
| Contribute code | Fork → branch → pull request into dev. See CONTRIBUTING.md |
Security issues: email security@warframestat.us — do not file a public issue. Details in docs/SECURITY.md.
After opening the live site or a local instance:
- Timers / worldstate (home) — alerts, fissures, invasions, sorties, cycles, and other time-sensitive events so you can plan sessions.
- Codex (
/codex) — searchable item data (q,types,categories,pagequery params; see docs/INTERFACE.md). - Open-world helpers — maps and fish tools under
/poe,/vallis, and/deimos. - Other tools — synthesis (
/synthesis), riven data (/riven/data), and related pages from the nav.
Preferences (platform, locale, panel layout, trackables) stay in the browser. The hub reads public Warframe worldstate/item APIs; it does not log into your Warframe account. Full route/config reference: docs/INTERFACE.md.
- Treat the site as read-only game information. Do not enter Warframe passwords or account credentials here — the hub never asks for them.
- Self-hosting: only set secrets you intend (e.g. Sentry DSN); do not expose admin tokens in client-visible
NEXT_PUBLIC_*env vars. - Report suspected vulnerabilities privately per docs/SECURITY.md.
- Node.js 24 LTS (Krypton) (see
.nvmrc) - npm (ships with Node.js)
Most software dependencies are managed by npm and install with the project.
Warframe Hub needs network access to parse Warframe worldstate. It uses the WorldState API from Warframe Stat.us (API).
npm i
npm run build
npm startThe site is available at http://localhost:8742
Official site stays on Vercel. Images publish to GHCR on each semantic-release (ghcr.io/wfcd/warframe-hub). Semver lives on git tags / GitHub Releases / GHCR tags — root package.json stays 0.0.0-dev.
For self-host (e.g. behind SWAG):
docker pull ghcr.io/wfcd/warframe-hub:latest
docker run --rm -p 8742:8742 -e NEXT_PUBLIC_DSN=https://public_key@o0.ingest.sentry.io/0 ghcr.io/wfcd/warframe-hub:latest
# → http://localhost:8742Verify keyless Cosign signature (after a signed release):
cosign verify \
--certificate-identity-regexp 'https://github.com/WFCD/warframe-hub/.github/workflows/release.yml@refs/heads/dev' \
--certificate-oidc-issuer https://token.actions.githubusercontent.com \
ghcr.io/wfcd/warframe-hub:latestVerify SPDX SBOM attestation:
cosign verify-attestation \
--type spdxjson \
--certificate-identity-regexp 'https://github.com/WFCD/warframe-hub/.github/workflows/release.yml@refs/heads/dev' \
--certificate-oidc-issuer https://token.actions.githubusercontent.com \
ghcr.io/wfcd/warframe-hub:latestOr copy the sample compose and adapt (join your SWAG network; proxy to http://hub:8742):
cp docker-compose.sample.yml docker-compose.yml
docker compose up -dLocal image build (optional):
docker build -t warframe-hub .NEXT_PUBLIC_DSN is injected at container start via docker/entrypoint.sh (writes dist/client/runtime-env.js). Browsers load it as /runtime-env.js (not baked into the image). Clients still call api.warframestat.us / cdn.warframestat.us directly — the hub process does not proxy those.
See docs/LAYOUT.md for what lives where, docs/DEVELOPMENT.md for local tooling, and docs/ARCHITECTURE.md for design overview.
Stack: vinext + React + TypeScript at the repo root (port 8742).
npm install
npm run dev # vinext @ http://localhost:8742
npm run build # production static exportEnv: .example.env (NEXT_PUBLIC_*).
Human-readable release notes are published on GitHub Releases (generated by semantic-release from Conventional Commits — not raw git log). Upgrade by pulling a newer GHCR tag or deploying the tagged commit.
When a release fixes a publicly known run-time vulnerability in this project that already had a CVE (or similar) at release time, that ID is listed in the release notes per docs/RELEASES.md. (If none have applied yet, that Best Practices item is N/A.)
CI runs on GitHub Actions (lint, property tests, Cypress e2e/component). Vercel preview deploys run from the Git integration.
Latest CI: Actions → CI (or the badge above).
npm run lint
npm run lint:fixnpm run test:property # fast-check / node:test (no browser)
npm test # property + Cypress e2e + component (dev/server as required)Cypress needs a running app (npm run dev or npm start) for e2e. See CONTRIBUTING.md and docs/TESTING.md.
Distributed under the Apache License 2.0. Plain-English summary: tldrlegal Apache-2.0.
Like most projects, Warframe Hub is purely out of passion, love, and dedication to the Warframe Community and open source software in general. This is not our full-time job, and probably will never be. No donations will be encouraged because once a person starts to receive payments for a passion project, is it still a passion?