{"id":15028537,"url":"https://github.com/mikron-ia/rpg-hub","last_synced_at":"2026-06-28T01:01:19.357Z","repository":{"id":52691808,"uuid":"53149122","full_name":"mikron-ia/rpg-hub","owner":"mikron-ia","description":"An hub for RPG players and GMs, intended for storing and presenting campaign/epic information","archived":false,"fork":false,"pushed_at":"2026-06-23T21:28:08.000Z","size":2738,"stargazers_count":2,"open_issues_count":119,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2026-06-23T23:15:29.296Z","etag":null,"topics":["php83","rpg","tabletop","tabletop-rpgs","yii2"],"latest_commit_sha":null,"homepage":"","language":"PHP","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/mikron-ia.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2016-03-04T16:29:01.000Z","updated_at":"2026-06-23T21:28:12.000Z","dependencies_parsed_at":"2023-10-10T14:38:04.335Z","dependency_job_id":"30471ac8-664f-460e-9891-6c8b36731ef2","html_url":"https://github.com/mikron-ia/rpg-hub","commit_stats":null,"previous_names":[],"tags_count":23,"template":false,"template_full_name":null,"purl":"pkg:github/mikron-ia/rpg-hub","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mikron-ia%2Frpg-hub","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mikron-ia%2Frpg-hub/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mikron-ia%2Frpg-hub/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mikron-ia%2Frpg-hub/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/mikron-ia","download_url":"https://codeload.github.com/mikron-ia/rpg-hub/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mikron-ia%2Frpg-hub/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34873663,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-27T02:00:06.362Z","response_time":126,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["php83","rpg","tabletop","tabletop-rpgs","yii2"],"created_at":"2024-09-24T20:08:34.521Z","updated_at":"2026-06-28T01:01:19.349Z","avatar_url":"https://github.com/mikron-ia.png","language":"PHP","funding_links":[],"categories":[],"sub_categories":[],"readme":"# RPG hub\n\nThis project is a system for role-playing game story/campaign/epic management.\n\n## Licensing\n\nThe project's main license is `GNU General Public License v3.0` - see the `LICENSE.md` file for the text. The `yii2`\nframework is `BSD 3-Clause \"New\" or \"Revised\" License` - see the `LICENSE-yii.md` file for the text. Libraries can have\ntheir own licenses; see the Attributions section of this file for details.\n\n## Project state\n\nThe project is being still maintained and (occasionally) developed since it is quite useful for me in its main purpose\n(keeping my own campaign data), but due to its age (it started in 2016), state of the `yii2` framework (effectively\nlimited to maintenance with the release of `yii3`, with version 2.2.x being uncertain), and overall effort that would be\nrequired to bring the codebase to a decent standard (immense yet not very practical), it is firmly in its legacy stage.\n\n## Background\n\nRole-playing games are a vastly diverse concept that ranges from very simplistic systems that fit on one page up to\nextremely complex systems spanning hundreds of books, with a whole spectrum in-between; see\nthe [Wikipedia definition](https://en.wikipedia.org/wiki/Role-playing_game) for details. What they do have in common,\nthough, is the presence of a story - one can play a game without mechanics, but even a simple dungeon crawl is going to\nhave some story. Managing this story, its cast, threads, and mechanical components is the main role of this project.\n\nThe project itself was originally thought of as a learning experience and a coding exercise. Unfortunately, due to\nchanges in the technological landscape (primarily change in popularity of frameworks and shifting design philosophies)\ncan no longer fulfill those goals. It is now maintained mostly for its practical uses and minor coding experiments.\n\n## Set up instructions\n\n1. Make sure you have the proper stack installed; the current requirements are:\n    - PHP 8.4+\n        - Due to PHP maintaining most of its backwards compatibility, the project also works up to PHP 8.5\n    - MySQL 5.6+ database or MariaDB equivalent\n        - The current project was tested and found working up to MySQL 8.0 and MariaDB 11.0\n1. If you have no composer, install it via [instructions from here](https://getcomposer.org/download/)\n1. Clone the project into the desired directory\n1. Run `composer install`\n    - for a production deployment, add `--no-dev` option to avoid adding unnecessary libraries\n1. Copy `.env.example` to `.env` and fill it with configuration data\n    - Database access data is mandatory -- without that the hub will fail to start\n    - Language configuration and key generators can be left on their default values -- change them only if you have a\n      good reason to\n    - API key must be set up to make API accessible from outside and can be ignored if API is not used\n    - the URIs are needed -- without them the mailing will fail and a few redirects may not work\n    - mailing data and invitation validity are optional, but their lack will make inviting users via e-mail impossible\n1. [optional] Run `./yii config/check-env` to see whether configuration variables are set properly\n    - note that this only checks the less obvious variables: the database connection string and mailing data are not\n      verified\n1. [optional] If you wish to add data, create the `console/migrations/data.sql` file with SQL inserts that should be\n   loaded into the database; this is intended for development/test work on larger data sets and is not needed for\n   normal, initial deployment of a fresh project\n1. Initialise the project\n    - For development: `./init --env=Development --overwrite=All`\n    - For production: `./init --env=Production --overwrite=All`\n1. [on an empty database] Run `./yii migrate/up`; `data.sql` will be automatically loaded if present\n1. [on an empty database] Run `./yii rbac/init`; this will set up the access rights for the roles\n1. [on an empty database] Run `./yii install/add-administrator` to add the administrator user\n1. Set up the periodic tasks; this is technically optional, but the system expects at least the importance recalculation\n   to be run relatively often, or it will not display some objects on the presentation page\n    - Fill the `config.shlib` file with values appropriate for your hosting environment\n        - `runner` is the PHP executable; while many hosting environments will work with `php` alone, there might be\n          some version issues\n        - `yii` is the path to the `yii` script; using an absolute path may solve some issues\n        - `log` is the path to the log directory; make sure the directory exists and is writable\n    - set up cron tasks in your system with the content of `scripts/`\n1. Access the entry points as needed:\n    - `backend/web` for the content management page (administrators and operators only)\n    - `frontend/web` for the presentation page (any user)\n\n## Upgrading between versions\n\n1. Update the code base from an archive pack or a git tag\n    - If you are feeling adventurous, use the `master` branch, but its content, while usually free of breaking bugs, is\n      not guaranteed to work at all times; moreover, the migrations are now per-release, which means they can change\n      before given release tag is set; to be safe, use the released/tagged code only\n1. Run `composer install`\n1. Ensure your `.env` file is up to date, based on `.env.example`\n    - `./yii config/check-env` can be helpful here as well since it should include checks for recently introduced\n      mandatory variables\n1. Run migrations with `./yii migrate/up`\n1. Run `./yii rbac/v*` sequentially to get up to a proper version\n    - Note: there is, to date, no record on which RBAC migration was run last; running any of those \"migrations\" twice\n      will cause an error - it will not damage anything, though, just break the execution\n\n## Project structure\n\nAs mentioned in the setup instructions, the project is composed of several modules:\n\n- `frontend` - the presentation and the only part the players should be accessing; can be used by Game Masters for\n  convenience\n- `backend` - the content management system, intended for Game Masters' and admins use only\n- `console` - administrative and auxiliary tools that should not be commonly used except for setup, deployment, and\n  `cron` calls\n- `common` - components used by other three modules\n\n## Basic functionalities/components\n\nThe hub allows handling of the following:\n\n- `Epic` - the basic container, representing the campaign / epic and containing virtually everything else that is not an\n  user\n- `Story` - an adventure, plot, etc. - in other words, a time-limited element of the `Epic`\n- `Recap` - a description of events, intended to keep the players up to date\n    - It can encompass any number of sessions\n- `Game` - a discrete gaming session, often associated with a `Recap`\n- `Character` - a character (either a Player Character or an NPC) present in the story, most often described from the\n  perspective of the players\n- `CharacterSheet` - a detailed set of mechanical data on `Character`, usually in a form of numbers and traits\n    - This is still a very underdeveloped component, requiring using a dedicated and undocumented data format to display\n      properly\n    - It is linked to a single `Character` from a list of `Character`s that have it set as their sheet\n- `Group` - a group of `Character`s - a party, an organization, or anything that justifies putting a few `Character`s\n  together; can have other `Groups` as members as well\n- `Location` - a place present in the story\n- `Project` - a less structured, more distributed, and usually player-driven set of events and actions, usually\n  resulting in a creation of something or accomplishment of a goal independently of a story\n- `Scenario` - a plan for events for a `Story`\n    - This is the only \"large\" component that exists solely on the Game Master side and cannot be displayed on the\n      presentation/front side\n- `Article` - miscellaneous texts\n- `Announcement` - news, information, and other OOC updates directed at users\n- `PointInTime` - auxiliary information, used to put in-story date/time on descriptions\n- `Secret` - auxiliary information, used to put in-story secrets in texts\n- `Image` - a set of links to an image file that can in turn be embedded in most text fields\n- `User` - as the name suggests, this is the user, i.e. person accessing the hub; no further explanation should be\n  needed\n\nAll the other components serve auxiliary roles only and are not directly editable.\n\nUse of most components is optional; for example, an `Epic` can be conceivably run with the use of `Recap`s and `Game`s\nonly or just with `Character` gallery. There are, of course, limits to that - for example, the `Group` functionality is\nlimited (but not unusable) without any `Character`s. Still, most elements can be used entirely independently of each\nother.\n\n## Versioning\n\nThe project uses [Semantic Versioning 2.0.0](https://semver.org/spec/v2.0.0.html) to number its releases, treating its\nlist of functionalities as the public API. This means that the major version will likely be incremented only if one of\nthe major functionalities is removed, repurposed, or modified beyond recognition.\n\n## Attributions\n\nWhat follows is a list of libraries used in the project; only those included directly are listed.\n\nAll the following libraries are licensed under `BSD-3-Clause license` or a derivative, unless stated otherwise.\n\n- [The yii framework](https://github.com/yiisoft/yii2) is the basis of this project, including:\n    - [yii2-bootstrap](https://github.com/yiisoft/yii2-bootstrap)\n    - [yii2-swiftmailer](https://github.com/yiisoft/yii2-swiftmailer)\n    - [yii2-debug](https://github.com/yiisoft/yii2-debug)\n    - [yii2-gii](https://github.com/yiisoft/yii2-gii)\n- Tools made by [Kartik Visweswaran](https://github.com/kartik-v/), including:\n    - [yii2-krajee-base](https://github.com/kartik-v/yii2-krajee-base)\n    - [yii2-widget-select2](https://github.com/kartik-v/yii2-widget-select2)\n    - [yii2-password](https://github.com/kartik-v/yii2-password)\n    - [strength-meter](https://github.com/kartik-v/strength-meter)\n    - [yii2-widget-datepicker](https://github.com/kartik-v/yii2-widget-datepicker)\n    - [yii2-widget-datetimepicker](https://github.com/kartik-v/yii2-widget-datetimepicker)\n- [phpunit](https://github.com/sebastianbergmann/phpunit)\n- [phpdotenv](https://github.com/vlucas/phpdotenv)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmikron-ia%2Frpg-hub","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmikron-ia%2Frpg-hub","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmikron-ia%2Frpg-hub/lists"}