# Development ``` bash git clone https://github.com/gr4yj3d1/toolshed.git ``` or ``` bash git clone https://git.neulandlabor.de/j3d1/toolshed.git ``` ## Native To a certain extent, the frontend and backend can be developed independently. The frontend is a Vue.js project and the backend is a DRF (Django-Rest-Framework) project. If you want to develop the frontend, you can do so without the backend and vice versa. However, especially for the frontend, it is recommended to use the backend as well, as the frontend does not have a lot of 'offline' functionality. If you want to run the fullstack application, it is recommended to use the [docker-compose](#docker) method. ### Frontend install `node.js` and `npm` on Debian* for example: `sudo apt install npm` ``` bash cd toolshed/frontend npm install npm run dev ``` ### Backend Install `python3`, `pip` and `virtualenv` on Debian* for example: `sudo apt install python3 python3-pip python3-venv` Prepare backend environment ``` bash cd toolshed/backend python -m venv venv source venv/bin/activate pip install -r requirements.txt ``` Run the test suite: ``` bash python manage.py test ``` optionally with coverage: ``` bash coverage run manage.py test coverage report ``` Start the backend in development mode: ``` bash python manage.py migrate cp .env.dist .env echo "DEBUG = True" >> .env python manage.py runserver 0.0.0.0:8000 ``` provides the api docs at `http://localhost:8000/docs/` ### Docs (Wiki) Install `mkdocs` on Debian* for example: `sudo apt install mkdocs` Start the docs server: ``` bash cd toolshed/docs mkdocs serve -a 0.0.0.0:8080 ``` ## Docker ### Fullstack Install `docker` and `docker-compose` on Debian* for example: `sudo apt install docker.io docker-compose` Start the fullstack application: ``` bash docker-compose -f deploy/docker-compose.override.yml up --build ``` This will start an instance of the frontend and wiki, a limited DoH (DNS over HTTPS) server and **two** instances of the backend. The two backend instances are set up to use the domains `a.localhost` and `b.localhost`, the local DoH server is used to direct the frontend to the correct backend instance. The frontend is configured to act as if it was served from the domain `a.localhost`. Access the frontend at `http://localhost:8080/`, backend at `http://localhost:8080/api/`, api docs at `http://localhost:8080/docs/` and the wiki at `http://localhost:8080/wiki/`.