105 lines
2.4 KiB
Markdown
105 lines
2.4 KiB
Markdown
|
# 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/`.
|