Dedicated to
- Kevin V. @ Gozo - i love you
- G @ wine events - love the thing in yourself that you loved in me
...beneath the waves, a Raven's spirit tamed,
by bald Kraken's care, their destinies named.
Ambition's lure, a betrayal's cruel rhyme,
dreams embraced, yet Kraken's love the true treasure of time...
An open-source fanatasy pirate based ORPG game. The purposes of this repository:
- follow my teenager dream and write a computer game
- follow my senior/architect dream and create a whole platform
- have a monorepo for all of my hobbyprojects
- learn all about platform architecting
This repository is the 8th generatorion of the previous platform larvas (raptyle
, vampyre
, silver-arrow
, dnf
, dnf-mono
, dnf2
, nexus-reunion
). Some of the code has been merged from them, but most of the current codebase was written inside the repository.
Build |
---|
Build | Lint | Tests |
---|---|---|
JSON Schema | Knip |
---|---|
- How to use the test-reporter
- How to check hidden files on Mac
- How to clean up your local docker cache
- How to check what uses the given port (MAC)
- How to kill a process by PID (MAC)
- How to generate GUIDs
Requirements
- Docker
- Node >= 18
The section will explain all the required steps to set up your local/dev environment. Please follow the steps propely.
Since most of the applicaions are using valid URLs instead IP addresses/localhost we have to set up our mock DNS server on the machine itself. This is being done by modifying the hosts
file.
# Initialize local environment
gh repo clone wraithlight/wraithlight-mono
cd wraithlight
sudo node .scripts/patch-hosts.mjs
Currently all of the databases are running in docker containers. The databases are using MySQL and there is a way to setup a phpmyadmin instance for utility. See the related documentation here.
# To run everything locally
gh repo clone wraithlight/wraithlight-mono
cd wraithlight/database
sh ./build.sh # to build the databases
sh ./run.sh # to run them in docker
# Set up the local environment
gh repo clone wraithlight/wraithlight-mono
cd wraithlight/applications
yarn
nx - Utility script to add `nx` to the cli.
knip - Runs KNIP on the project.
lerna - Utility script to add `lerna` to the cli.
lint - Runs ESLint on the project.
lint:quiet - Runs ESLint on the project. Prints errors only.
build - Build everything.
build:changes - Build the changes since the local main only.
build:tools - Build the `tools.*` packages only.
build:prod - DEPRECATED - Production build.
build:guid - Build `core.guid` only.
postinstall - Utility script to build some packages after yarn install.
graph - Draw NX graph.
test - Runs jest on the project.
test:coverage - Runs jest on the project. Collect coverage per package.
test:mono - Runs jest on the monorepo.
validate-json - Validates `package.json` files.
guid - Generates a new guid.
test-report:collect - Utility script for test-reporting. Runs jest.
test-report:generate - Utility script for test-reporting. Runs custom parsing.
test-report:open - Utility script for test-reporting. Opens the default browser.
test-report - Collects test-coverage, then opens the result in your browser.
precommit - Runs `yarn`, `lint`, `knip`, `build` and `test` on the repo.
apply-patches - Runs `node_modules` patches.
deplist - Checks for duplicate 3rd party dependencies. Optional flag: --silent
readme-check - Checks if the readmes are there and has proper title. Optional flag: --silent
This section lists all the technologies that are included in this repository.
Status | Application | Technology |
---|---|---|
♻️ | Website | Angular |
♻️ | Forum | React |
♻️ | Content | Mithril |
♻️ | Editor | Vue |
♻️ | Game rich client | Electron |
♻️ | Game thin client | Knockout |
♻️ | Logs | Aurelia |
♻️ | Auth | Svelte |
♻️ | Notifier | QWIK |
♻️ | Remote Config | Lit |
Most of the backend libraries/applications are written in NodeJS with some custom utility libraries such as node.core
.
Status | Application | Technology |
---|---|---|
♻️ | Website | Node |
♻️ | Forum | Node |
♻️ | Content | Node |
♻️ | Editor | Node |
♻️ | Game rich client | Node |
♻️ | Game thin client | Node |
♻️ | Logs | Node |
♻️ | Auth | Node |
✅ | Notifier | Node |
♻️ | Remote Config | Node |
All of the databases are using MySQL, with a custom ORM, called core.orm
.
- Docker
- Socket.IO
- SASS
- webpack
- typescript
- lerna
- Jest
- Knip
- selenium
- swagger