Skip to content

saadbruno/openrct2_plugin_repository

Repository files navigation

OpenRCT2 Plugin Repository

A place where users can share OpenRCT2 plugins

image

For now, users can submit plugis hosted on GitHub repos. There is a button in the top right to submit links, without needing to log in.

There is server side validation to make sure it's a https://github.com link. I'm alsothinking about adding validation to check if the repo has rct2 or OpenRCT2 in the tags, but not everyone uses tags.

There is basic listing (sorting new and rating, which is based on when users submitted the plug-in, and how many stars it has on GitHub), also a basic search functionality.

Users can also check details about the plug-in (which is basicallt the README.md form the GitHub repo), and also list plugins by user (by clicking on their profiles)

Setup:

Development:

  • Create a GitHub Access Token with the public_repo option.
  • Copy template.env to .env and edit it with your GitHub Token, and change the HTTP port if you'd like
  • make run

You should now be able to access the page at http://localhost, or http://localhost:PORT if you edited the port in the .env file

Prod:

Reverse proxy example for NGINX is in docker/nginx/prod/reverse-proxy.conf

  • Copy template.env to .env and edit it with your GitHub Token, and also change the MySQL password
  • Run make build-sass to build the scss into a css file
  • make run-prod

API:

you can add a query string json=true to almost any page, and it will return the results in JSON. This works all the lists, as well as individual plugin pages and user pages.

It will also work with any type of sorting, new, rating, updated, and also for searches.

Examples: List of plugins (second page, showing 20 results per page): /list/?sort=new&results=20&p=2

List of plugins by sadret: /user/MDQ6VXNlcjE1ODk1NTMy?json=true

Individual plugin: /plugin/R_kgDOL_w7NA?json=true

Note that the last portion of a URL is usually just cosmetic. So, for example https://openrct2plugins.org/plugin/R_kgDOL_w7NA/ParkPauser
and
https://openrct2plugins.org/plugin/R_kgDOL_w7NA
goes to the same page.

This can be useful for plugin-managers or something like that. So you can just grab the ID of the plugin from the /list?json, and then navigate to /plugin/<id>, it doesn't actually need the plugin name on the URL

The same applies to /user pages.

Links and other third party libraries used: