A place to share your OSRS achievements.
runeprofile.com
RuneProfile aims to be the best place to share your Old School RuneScape achievements with others.
The official Hiscores only shows a subset of your achievements and can be tough to navigate.
RuneProfile tries to display all of your important achievements and in a familiar UI.
The plugin is needed to upload your account data to RuneProfile, which will be displayed on the RuneProfile.com website.
You can read more about how to use RuneProfile here: runeprofile.com/info/guide.
This project is a monorepo managed using Turborepo.
apps/api: Backend application serving the API.apps/web: Frontend application for the website.apps/admin: Internal admin app (admin.runeprofile.com).packages/runescape: Shared package for RuneScape related data and utilities.packages/db: Database schema and client.scripts/ts-scripts: Data-sync scripts that read the OSRS cache (collection log, combat achievements, quests, icons).scripts/item-icons: Java CLI that renders item and sprite icons from the OSRS cache.
Run the setup script
pnpm dev:setupRun the apps.
pnpm devSince the project is hosted with Cloudflare, this command utilizes wrangler and miniflare to simulate the Cloudflare environment locally.
The frontend will start at localhost:3001 and the backend at localhost:8787.
RuneScape data definitions live in packages/runescape, and icons come from the game cache. Neither needs updating by hand.
The Update Game Data workflow checks daily whether the OpenRS2 archive has a new game cache. When it does, it regenerates the data definitions and icon sheets, renders every item icon to the CDN, and opens a PR with what changed. Icons are rendered with RuneLite's cache module, so no game client is involved.
New collection log pages are the one thing the cache can't fully describe — their hiscore and aliases fields have to be filled in by hand on the PR.
To run any of it yourself, see the script:* entries in package.json.
