Skip to content

labcabrera/rmu-platform

Repository files navigation

RMU Engine Platform

License Rolemaster

Run in Postman

RMU Online is a project that implements Rolemaster Unified through a distributed set of APIs, shared libraries, and micro-frontends.

This repository is the platform entry point. It documents the solution, links to the modules that compose it, and provides local orchestration assets for infrastructure, APIs, and supporting services.

Warning
This application is an independent fan project for Rolemaster Unified. It is not affiliated with, endorsed by, or licensed by Iron Crown Enterprises (ICE), the owners of the Rolemaster intellectual property. All Rolemaster trademarks, game systems, and materials are the property of Iron Crown Enterprises. This software is provided for personal, non-commercial use only. If you enjoy Rolemaster, please support the official publications and content from ICE.

What This Repository Contains

The RMU Platform repository is intentionally informational and operational. The implementation of each bounded domain lives in its own repository, while this repository keeps the global view of the solution.

Main responsibilities:

  • Link to each API, micro-frontend, and shared module.

  • Describe the platform architecture and runtime dependencies.

  • Provide Docker Compose files for local infrastructure and API execution.

  • Keep deployment-oriented assets such as Kubernetes, Argo CD, Minikube, MongoDB backup, and AWS notes.

  • Centralize diagrams and high-level documentation for contributors.

Architecture Overview

RMU Context Diagram

RMU Engine is an online assistant for playing Rolemaster Unified games.

The application is divided into APIs developed in NestJS, Python, and Express/Node.js, along with micro-frontends developed in React using Webpack Module Federation. The shell handles authentication and shared application composition, while each MFE owns a specific domain such as core rules, strategic play, tactical play, items, NPCs, and spells.

The platform uses MongoDB for domain persistence, Kafka for event communication between services, and Keycloak as the OIDC identity and access management provider. Some local Compose profiles also include PostgreSQL for Keycloak storage and Kafka UI for event inspection.

Modules

Resurces

  • docker-compose/: different Docker Compose configurations: base infrastructure only, infrastructure + APIs, infrastructure + APIs + Nginx.

  • terraform/: Terraform scripts for AWS infrastructure provisioning.

  • diagrams/: Architecture diagrams and their source files.

To deploy the project locally on a local Kubernetes cluster, we have the following Minikube-based resources (WIP):

  • minikube/: Helper scripts for running the platform on Minikube local Kubernetes

  • argocd/: Argo CD application descriptors for GitOps deployment.

  • k8s/: Kubernetes manifests for deployment on cloud or local clusters.

Running Locally With Docker Compose

Prerequisites

Install the following tools before starting the platform locally:

  • Docker Engine or Docker Desktop.

  • Docker Compose v2.

  • A local clone of this repository.

  • Access to the Docker images referenced by the Compose files.

The Compose files expect an external Docker network named rmu-network.

docker network create rmu-network

If the network already exists, Docker will report it and you can continue.

Environment

The local Compose setup reads variables from docker-compose/.env. The file contains development credentials and local-only defaults for MongoDB, PostgreSQL, Keycloak, Kafka UI, and OIDC integration.

Start Base Infrastructure

Use this option when you only need MongoDB, PostgreSQL, Keycloak, Kafka, and Kafka UI.

docker compose -f docker-compose/docker-compose.yaml up -d

Useful local endpoints:

Service URL

Keycloak

http://localhost:8090

Kafka UI

http://localhost:8091

MongoDB

mongodb://localhost:27017

Start APIs

Use this option when you want to run the backend services from their published Docker images.

docker compose --env-file docker-compose/.env -f docker-compose/docker-compose-apis.yaml up -d

The API Compose profile exposes services such as:

Service Local port

Core API

3001

Strategic API

3002

Tactical API

3003

Attack Tables API

3005

Items API

3006

NPC Names API

3007

NPCs API

3008

Spells API

3009

Attack API

8000

Start APIs With Nginx

Use this option when you want the local API gateway in front of the services.

docker compose --env-file docker-compose/.env -f docker-compose/docker-compose-nginx.yaml up -d

The Nginx profile exposes the gateway on http://localhost and routes paths such as /core/, /strategic/, /tactical/, /attack/, /attack-tables/, and /items/ to the corresponding API containers.

Stop The Stack

docker compose --env-file docker-compose/.env -f docker-compose/docker-compose-apis.yaml down

To remove persisted local data as well, add -v after confirming that you no longer need the local volumes.

Initialization Data Notice

Warning
Some initialization data is intentionally not available in this public repository because it may contain copyrighted Rolemaster Unified material owned by Iron Crown Enterprises.

As a result, a fresh local environment may start successfully but lack part of the game reference content needed for complete functional usage. Contributors should use legally obtained materials only for personal testing and must not submit copyrighted data, tables, text, or derived protected content to this repository.

API Collection

The Postman collection linked at the top of this README provides a convenient starting point for exploring the available APIs. Depending on the local profile and seed data available in your environment, some requests may require manual configuration of authentication tokens, base URLs, or test data.

License

This project is distributed under the GPL-3.0 license. See LICENSE for details.

About

Rolemaster Unified assistant built on a microservices architecture. The APIs are primarily based on NestJS. The front-end applications are based on an MFE architecture with modules bundled using Webpack.

Topics

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors