ITADN
TUM-Dev/NavigaTUM
README.md
以下内容由 AI 翻译,如有问题请点此提交 issue 反馈

NavigaTUM

NavigaTUM 是由学生为学生开发的一款工具,旨在帮助你在 TUM 内出行。 欢迎参与贡献,我们欢迎新成员 😄。

功能/路线图

  • 🗺️ 交互式/静态地图,用于查找房间或建筑物的位置
  • 🔍 快速且容错的搜索
  • 💾 支持不同的房间代码格式以及通用名称
  • 🤖 所有功能也可通过开放且文档完善的 API 使用
  • 🗘 自动从上游数据源更新数据
  • 🗨️ 允许学生/教职工轻松提交反馈和数据补丁
  • 🚶🏻 生成逐步导航建议,用于端到端导航
  • 🏫 从 CAD 数据源生成地图

如果您想提供帮助或加入我们的这场冒险,我们很乐意与您交流。

截图

网站主索引的截图网站主索引的截图包含内部地图的建筑截图包含内部地图的建筑截图 搜索页面的截图搜索页面的截图机械工程建筑平面图的截图 导航页面的截图导航页面的截图

API 文档和原生客户端

您可以通过两种方式使用我们的 API 文档:

  • 前往我们的网站并查看交互式文档
  • 我们还在一个OpenAPI 3.0兼容文件中描述了我们的 API。
    你可以在这里找到它。
    使用此规范,你可以生成自己的客户端,以使用你选择的语言访问 API。 为此,请前往 Swagger Editor 或其他类似的OpenAPI 工具

[!NOTE] API 仍在开发中,我们欢迎提交 Issue、功能请求或 Pull Request。

入门

概述

NavigaTUM 由三个主要部分 + 部署资源组成。

根据你想要处理的内容,你不需要设置所有部分

  • data/ 包含用于获取和处理数据的代码
  • server/ 包含用 Rust 编写的 API
  • webclient/ 包含基于 JS 的 API Web 前端
  • map/ 包含关于我们自己的地图、如何对其进行样式设置以及如何运行的信息
  • DEPLOYMENT.md 包含与部署相关的文档

让我们逐一介绍它们,但首先,你需要克隆该仓库:

git clone https://github.com/TUM-Dev/Navigatum.git
cd Navigatum

数据处理

如果你不想处理数据,你可以通过运行服务器来下载最新编译的文件。

否则,你可以按照数据文档中的步骤操作。

Webclient

按照webclient 文档中的步骤操作。 如果你只想在本地运行 webclient,你可以跳过“数据”和“服务器”部分,或使用 docker 运行一个接近生产环境的版本

默认情况下,webclient 将使用公共 API。 如果你想使用本地版本,你可以使用 docker 运行一个接近生产环境的版本。

有关我们前端的更多详细信息,请参阅webclient 文档

服务器

要在本地构建服务器,你可以运行以下命令:

docker compose -f docker-compose.local.yml up --build

API 将在 http://localhost:3003 可用,前端在 http://localhost:3000

[!NOTE] 我们还需要为服务器运行增量编译。 首次编译会很慢,之后只需花费一点时间。 本地构建也在 PROFILE=debug 中运行,以改善构建时间。

不绕弯子: server 的编译时间是一个问题,但我们相信 这可以通过上游语言改进来解决,例如 poloniuscraneliftparalell-frontend、....

[!NOTE] 本地构建不会部署完整堆栈,并且跳过所有地理数据。 因此,以下服务不会被部署,因为其初始化工作繁重且可能不相关:

  • valhalla(路由服务),
  • nominatim(用于地址地理编码)
  • planetiler(用于生成我们 tileserver 的底图瓦片数据库)
  • martin(因为它没有数据可拉取)

有关我们后端的更多详细信息,请参阅 server documentation

格式化

此仓库中有多种编程语言,我们使用不同的工具来格式化它们。

由于我们使用 pre-commit 来格式化代码,您可以通过 uv 安装它:

uv sync
source .venv/bin/activate

要格式化所有文件,请运行以下命令:

pre-commit run --all-files

你还可以通过运行以下命令,在每次提交时自动格式化文件

pre-commit install