NavigaTUM is a tool developed by students for students, to help you get around at TUM. Feel free to contribute, we are open to new people π.
If you'd like to help out or join us in this adventure, we would love to talk to you.
You can consume our API Documentation in two ways:
[!NOTE] The API is still under development, and we are open to Issues, Feature Requests or Pull Requests.
NavigaTUM consists of three main parts + deployment resources.
Depending on what you want to work on, you do not need to set up all of them.
data/
contains the code to obtain and process the dataserver/
contains the APIs written in Rustwebclient/
contains a JS based web-frontend for the APIdeployment/
contains deployment related configurationmap/
contains information about our own map, how to style it and how to run itLet's go through them one by one, but first, you need to clone the repository:
git clone https://github.com/TUM-Dev/Navigatum.git
cd Navigatum
In case you do not want to work on the data processing, you can instead download the latest compiled files by running the server.
Otherwise, you can follow the steps in the data documentation.
If you want to work only on the webclient (and not server or data), you don't need to set up the server. You can instead either use the public API (see the webclient documentation) or use our ready-made docker images to run the server locally:
docker compose -f docker-compose.local.yml up --build
[!NOTE] While most of the setup is simple, we need to download data for the initial setup. Downloading Oberbayern as the smallest osm-region offered by geofabrik takes 1-2 minutes. We also need to run an incremental compilation for our server. The first compilation will be slow, afterward this will only take a bit of time. The local builds also run in
PROFILE=debug
to improve build-times.Not beating around the bush: Complation times for the
server
are a problem, but we are confident that these can be resolved via upstream language improvements such as polonius, cranelift, paralell-frontend,....
Otherwise, you can follow the steps in the server documentation.
Follow the steps in the webclient documentation. If you want to only run the webclient locally, you can skip the "Data" and "Server" steps above and use docker (as seen above) or you can edit the webclient configuration to point to production.
We have multiple programming languages in this repository, and we use different tools to format them.
since we use pre-commit to format our code, you can install it in an virtual environment with:
python3 -m venv venv
source venv/bin/activate
pip install -r data/requirements.txt -r server/test/requirements.txt -r requirements-dev.txt # for mypy the server and data requirements are needed
To format all files, run the following command:
pre-commit run --all-files
You can also automatically format files on every commit by running the following command:
pre-commit install
All code is licensed under the GNU GPL v3:
This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
You should have received a copy of the GNU General Public License along with this program. If not, see https://www.gnu.org/licenses/.