The Magnum opus is a collection of alchemical recipes. In this context, it is the codename for the project.
It's stages are:
- Nigredo, the blackening (frontend)
- Albedo, the whitening (backend)
- Citrinitas, the yellowing (admin panel)
- Rubedo, the reddening (tbd)
The Magnus opus is a full-stack service aimed at providing the interface and backend for organizing mapping tournaments in a controlled fashion. This includes features such as:
- Registration, allowing users to register for tournaments
- Tournament creation, allowing users to create tournaments
- Tournament management, allowing moderators to moderate and edit tournaments
- Tournament rounds, allowing moderators to create rounds in tournaments
- Map Uploads, allowing users to upload and view their maps
- Map management, allowing moderators to see submissions
- Map judging, allowing judges to see and rate submissions anonymously
- Staff management, allowing admins to manage staff members
The frontend of this service includes all necessary frontend components to allow users to register, create tournaments, and manage tournaments.
It will also include an OAuth2 login system to allow users to login with their ripple accounts.
The backend of this service includes all necessary backend components to allow moderators to create tournaments, manage tournaments, and manage rounds.
It will also provide for any needed backend components to allow users to upload and manage maps, as well as saving judgements in a database. To see a more detailed view, read the readme
The database will be multi-client compliant, meaning users will only ever see what they are supposed to see. The same goes for judges. Only staff gets clear views.
The admin panel will have a seperate view and requires a ripple login.
The initial config will allow for 1 admin, that can then add more sub-admins and moderators to the system. These can be many2many relationships.
This admin panel is purely for creating tournaments, changing the active rounds and adding staff to tournaments.
The following ports will be exposed by docker-compose:
5000: The backend
The follow paths will need to be exposed:
/ (Root): frontend
/admin : admin
/api/v1 : backend api
To-Do:
Both the frontend and admin pages will be served in their respective docker containers using nginx, exposing their ports. Caddy (or whatever reverse proxy you choose) will then be able to route/redirect accordingly.
The port for the database will not be exposed.
It is suggested to use docker-compose to manage the docker containers.
For https, we recommend using caddy. An example Caddyfile
is provided.
The frontend has no additional configurations needed.
The backend includes a backend.env
file that contains the backend-specific configs.
The admin panel has no additional configurations needed.
The database is a postgres database. The documentation can be found here.
The postgres.env
file contains the database-specific configs used in the actual database and backend containers.
It is suggested to use $ pwgen 32 1 -sB
to generate a secure password for the database.
git clone
cd magnus-opus
docker-compose up
git clone
cd magnus-opus
docker-compose -f docker-compose.production.yml up -d
Magnus Opus is a project by @MaxKruse developed mainly for the Ripple osu! server.