Developers

Under the hood. Custom from the ground up.

Roleplay Project runs on a custom-built TypeScript framework, a MySQL backbone, and a Vue 3 in-game overlay. This page is for anyone who wants to know what is powering the city. Stack, how we work, and how to join the team.

City live since 3 July 20262 paid roles openPhytoventures Ltd

01 /The stack

What the city runs on.

Four load-bearing pieces. Everything else is written in house.

FiveM / CitizenFX

Multiplayer platform

2,048-slot capacity. Active long-term roadmap. Industry standard for serious GTA roleplay. Migrated from RAGEMP, May 2026.

TypeScript

Server runtime

Type-safe gameplay layer. Drizzle for new queries, modular system architecture, esbuild bundle.

Vue 3

In-game overlay

Composition API, around 150 PanelShell-pattern UIs running on the FiveM NUI bridge.

MySQL

Persistence

Schema-versioned. Self-healing idempotent migrations. Hot read replicas for analytics.

02 /Architecture

The PanelShell pattern.

Every in-game UI, banking, MDC, phone, character editor, uses the same component shell. About 150 panels share the language.

panels/MyPanel.vueComposition API
// every in-game window extends PanelShell.
// the website is built to feel like one more panel.
<PanelShell
  title="MDC, Mobile Data Computer"
  subtitle="Unit 8-A-12 · Ofc. Park"
  icon="display"
  accent="lspd"
  :tabs="tabs"
  :max-width="880"
  @close="$emit('close')"
>
  <template #body>
    <StatGrid :cards="stats" />
    <ActivityList :rows="recent" />
  </template>
</PanelShell>

Surface tokens

CSS custom properties

Every panel pulls from --surface-canvas, --fg-bright and friends. One shared design system across roughly 150 panels.

Faction accent

Per-panel theming

Pass accent="lspd" and the panel tints icons, active tabs and badges accordingly, never the whole surface.

Esc-to-close

Universal

Every PanelShell binds Escape automatically. The close button shows the (Esc) hint on hover.

03 /The team

Our developers.

Lean by design. We ship when it is ready and we do not ship when it is not. The codebase is closed source, but a few lanes are open.

Founder and Senior Developer

MelonDisrupt

Senior Developer

fatcattuxedo

Head of Development

Java

04 /Open roles

Seats we are hiring for.

Paid roles are contracted and paid hourly through Phytoventures Ltd, the company behind Roleplay Project.

Developer seat

Paid, hourly2 open

Two paid hourly positions are open with Phytoventures Ltd. You ship gameplay systems into a live city with real players behind every bug report.

What you would work on

  • TypeScript gameplay systems on the FiveM server runtime
  • Vue 3 PanelShell panels on the NUI bridge
  • MySQL schema work and idempotent migrations
Apply for this seat

Learning spot

UnpaidUnlimited

Lower-end developers can join unpaid to learn alongside the team and ship real features. TypeScript and Vue 3 preferred, but we will mentor you up.

What you would work on

  • Paired work with a senior developer on live features
  • Code review on everything you write
  • A real changelog entry with your name on it
Apply for this seat

05 /Contribute

Want to help build the city?

We are a closed-source project, but a few lanes are open. Bug reports, system pitches, and applications when a dev seat is hiring.

Report a bug

Live · bugs.roleplayproject.net

Sign in with your RPP account, file a bug, and earn 100 PP when a developer marks it valid and fixed. Security exploits stay private and pay 1,000 PP on patch.

Open the bug portal

Request a feature

Live · bugs.roleplayproject.net/features

Pitch what you would love to see. Upvote what others have asked for. Top-voted requests land on the roadmap.

Browse and vote

Apply to develop

Open · 2 paid roles + unlimited learning spots

Two paid hourly positions are open with Phytoventures Ltd, alongside unpaid learning spots for developers who want to grow into the stack.

Apply now

Apply for a developer seat.

Applications run through the bug portal with your RPP account. Tell us what you have built, link anything public, and say which seat you are after. Paid seats are contracted through Phytoventures Ltd and paid hourly.

Apply now