# BuildPath a tool for League of Legends champions runes and build paths https://buildpath.win ## Architecture BuildPath is made of four components: - a MongoDB document database - `patch_detector`, a daemon which runs periodically to detect new League of Legends patch from official APIs - `match_collector`, a daemon which runs periodically to collect matches from League of Legends challenger players on current patch, and generate statistics from those matches, saving them in the database - `frontend`, which is a Nuxt.JS project hosting an API serving the statistics but also the full web frontend (Vue.JS) ## Development ### Getting started Developing BuildPath requires Docker for a local MongoDB instance, and a NodeJS/npm installation. Then, for the first-time setup: ```bash # Install npm and node sudo apt install npm nodejs # Ubuntu sudo pacman -S npm nodejs # Arch sudo dnf install nodejs # Fedora # Install docker. Follow instructions on # https://docs.docker.com/engine/install/ # .. and don't forget docker compose cd dev && npm i && cd .. # Install dependencies for the dev environment cd frontend && npm i && cd .. # Install dependencies for frontend cd match_collector && npm i && cd .. # Install dependencies for match_collector cd patch_detector && npm i && cd .. # Install dependencies for patch_detector ``` BuildPath needs data to work, either for generating statistics in the `match_collector` or for the frontend. In order to download a production snapshot with data, import them into a local MongoDB instance and re-generate champion statistics, just use: ```bash node dev/scripts/setup-db.js ``` You can re-run the script to re-generate statistics, and it won't re-download data. Afterwards, if you want to run the frontend: ```bash cd frontend && npm run dev ``` ### Code quality Every subproject has `lint` and `format` targets: ``` npm run format # Format code npm run lint # Run the linter ``` Please make sure those are run without errors before committing.