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 APImap/ contains information about our own map, how to style it and how to run itDEPLOYMENT.md contains deployment related documentationLet'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.
Follow the steps in the webclient documentation. If you want to only run the webclient locally, you can skip the "Data" and "Server" sections or use docker to run a close-to-production version
By default, the webclient will use the public API. If you want to use a local version, you can use docker to run a close-to-production version.
Further details on our frontend can be found in the webclient documentation.
To build the server locally, you can run the following command:
docker compose -f docker-compose.local.yml up --build
The API will be available at http://localhost:3003 and the frontend at
http://localhost:3000.
[!NOTE] 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=debugto improve build-times.Not beating around the bush: Compilation times for the
serverare a problem, but we are confident that these can be resolved via upstream language improvements such as polonius, cranelift, paralell-frontend,....[!NOTE] The local build will not deploy a full stack and skips all geodata. As such, the following services are not deployed as their initialisation work is heavy and likely not relevant: - valhalla (a routing service), - nominatim (for address geocoding) - planetiler (for generating basemap tiles database of our tileserver) - martin (as it would not have any data to pull on)
Further details on our backend can be found in the server documentation.
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 via uv:
uv sync
source .venv/bin/activate
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
$ claude mcp add NavigaTUM \
-- python -m otcore.mcp_server <graph>