toolshed/docs/development.md
jedi 6b5ccc2be6
All checks were successful
continuous-integration/drone/push Build is passing
restructure docs
2024-04-06 19:55:47 +02:00

2.4 KiB

Development

git clone https://github.com/gr4yj3d1/toolshed.git

or

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 method.

Frontend

install node.js and npm

on Debian* for example: sudo apt install npm

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

cd toolshed/backend
python -m venv venv
source venv/bin/activate
pip install -r requirements.txt

Run the test suite:

python manage.py test

optionally with coverage:

coverage run manage.py test
coverage report

Start the backend in development mode:

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:

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:

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/.