Skip to content

Repository files navigation

Logo

RuneProfile

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.

Project Structure

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.

Development

Prerequisites

  • Node.js (version specified in root package.json)
  • pnpm (version specified in root package.json)

Installation

Run the setup script

pnpm dev:setup

Run the apps.

pnpm dev

Since 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.

Game data and icons

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.

About

Resources

Stars

30 stars

Watchers

2 watching

Forks

Releases

Packages

Used by

Contributors

Languages