Project Plateau
Project Plateau는 네 개의 유리판과 하나의 살아있는 계곡, 캠프로 돌아가는 길을 의미
원하시는 OSRS 보스를 선택하면 은행에 있는 아이템으로 최적 DPS 세팅과 전투 메커니즘, 핵심 특수 무기를 알려드립니다
Pick any Old School RuneScape boss and get the best DPS setup from what's actually in your bank. Plus the mechanics and spec weapons that matter for that fight.
게임TypeScript · JavaGitHub @ENiceApps온라인운영자 미확인
써 보셨어요? 한 번만 눌러 주세요. 로그인은 필요 없어요.
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
메이커가 쓴 소개는 위의 한 줄이 전부입니다. 더 자세한 내용은 저장소 README에서 읽을 수 있습니다. 저장소 README ↗
README 전체를 불러오는 중입니다.
README 전문 보기 ↗Pick any Old School RuneScape boss and get a DPS-optimised gear loadout built from your own bank, plus the mechanics and special-attack weapons that matter for the fight.
Not affiliated with Jagex Ltd. Old School RuneScape is a trademark of Jagex. This is a fan-made, third-party tool. All game data comes from the OSRS Wiki.
/boss/[slug]).There's also an item browser (/items) with sortable bonuses and live GE
prices, and shareable loadout links that encode a setup into a URL.
OSRS Wiki Real-time Prices API ──► Next.js app (read-only server proxy adds the
(GE prices, item mapping) wiki-required User-Agent; caches briefly)
│
RuneLite plugin ──► bank.json ──► your browser ──► DPS engine + optimizer
(optional, opt-in) (local file) (reads the file ──► recommended loadout
reads your game in .runelite locally; nothing
state, no network directory is uploaded)
There is no backend that stores or even receives your bank. The plugin writes a file on your machine; the browser reads it locally. Without the plugin (or without connecting the file), the app runs in Budget mode — pick a boss and it builds the best setup for a GP cap, so you can try every feature with no setup.
The RuneScape community rightly scrutinises any tool that reads game data, so here is exactly what happens — see SECURITY.md for the full write-up.
bank.json inside your RuneLite directory. The web
app reads that file in your browser. Nothing is uploaded to any server.plugin/src/.../BankSyncPlugin.java.)plugin/No database, no auth service, no server-side state.
npm install
cp .env.example .env.local # optional — only needed for GE prices / feedback email
npm run dev # http://127.0.0.1:3000
The app runs fully without any env vars — they only enable live GE prices and the feedback email relay.
All optional; documented in .env.example:
| Variable | For | Notes |
|---|---|---|
WIKI_USER_AGENT_CONTACT | GE prices | Contact info the OSRS Wiki requires in the User-Agent. |
RESEND_API_KEY | feedback email | Resend key. Blank in dev → feedback prints to the console. |
EMAIL_FROM | feedback email | Verified sender address. |
FEEDBACK_TO | feedback inbox | Where in-app feedback is emailed. |
No secrets are committed — .env* is gitignored (only *.example is tracked).
app/ Next.js routes & API endpoints
api/ wiki price/mapping proxies (read-only) + feedback relay
boss/[slug]/ the one dynamic boss page every boss shares
components/ React UI (panels, modals, the equipment grid, BankConnect, …)
lib/
dps/ the combat/DPS math engine
optimize/ the bank-driven loadout optimizer
localBank.ts reads the plugin's local bank.json (File System Access API)
liveBank.ts adapts the local bank into the shape the UI consumes
data/ static game data (weapon styles, mechanics, spells, …)
*/catalog.ts GENERATED — do not hand-edit (see below)
scripts/ data-build codegen + the DPS oracle harness
plugin/ the RuneLite local-bridge plugin (Java/Gradle)
tests/ Vitest unit + regression tests
The item and monster catalogs (data/items/catalog.ts,
data/monsters/catalog.ts) are generated from vendored OSRS Wiki data by the
build scripts and regenerated on every build:
npm run build-data # runs automatically before build & test
npm test # Vitest unit + regression suite
npm run typecheck # tsc --noEmit
npm run lint # eslint
npm run oracle # cross-check the DPS engine against the real wiki calculator
See SECURITY.md. TL;DR: no backend receives your data, no third-party tracking, and the RuneLite plugin only writes a local file.
See CONTRIBUTING.md.