#server #front-end #backend-server #playlists #points #tags #music

app bassment

支持 cue 点、播放列表、crate 等的音频库服务器

2 个不稳定版本

0.1.0 2022 年 9 月 26 日
0.0.1 2022 年 4 月 15 日

#140 in 多媒体

GPL-3.0 许可证

1.5MB
7K SLoC

TSX 2.5K SLoC // 0.0% comments Rust 2.5K SLoC // 0.0% comments TypeScript 634 SLoC // 0.0% comments SQL 540 SLoC // 0.1% comments Java 288 SLoC // 0.2% comments JavaScript 139 SLoC // 0.1% comments C++ 101 SLoC // 0.1% comments Objective-C++ 85 SLoC Batch 68 SLoC Objective-C 61 SLoC Bazel 17 SLoC Prolog 9 SLoC Shell 9 SLoC

包含 (JAR 文件,60KB) gradle-wrapper.jar

Bassment

Build Frontend

支持 cue 点、标签、播放列表、crate 等的音频库服务器。

Icon

仓库结构

Bassment 主要由两个组件组成

  • 后端服务器,使用 Rust 编写(使用 actix-webdiesel),位于仓库根目录。
  • 前端,使用 TypeScript 编写(使用 react-native,针对 Web、iOS 和 Android),位于 frontend 文件夹。

虽然后端服务器可以从 frontend/dist (在构建和捆绑它并与 Webpack 一起之后)为前端提供服务,但它也可以以 API 仅为模式独立运行(使用 --api-only)。

入门指南

后端

要开发后端服务器,请确保已安装 Rust 工具链和 PostgreSQL(后者也正在运行)。创建数据库,并确保已启用 pgcrypto 扩展(在数据库中)。拥有足够权限的情况下,您可以从 psql your_db_name 使用它来启用。

CREATE EXTENSION pgcrypto;

在此仓库中创建数据库和一个指向数据库的 .env 文件

DATABASE_URL=postgres://your_username:your_password@localhost/your_db_name

要启动服务器,请运行

scripts/run-dev-backend

默认情况下,服务器将以 API 仅为模式在 https://127.0.0.1:8090 上运行,并允许 CORS 请求(允许来自并行运行的前端开发服务器的请求)。

当然,您也可以手动使用 cargo run。请注意,默认配置更适合生产使用,因此请查看 cargo run -- --help 以查看标志列表。

第一次运行时,服务器将自动运行所有迁移并生成一个根用户,其密码将输出到控制台。如果您在任何时候希望重新生成此根用户,请将 --regenerate-root 传递给服务器。

请注意,可以使用以下命令安装 Diesel CLI,它也可以很有用:cargo install diesel_cli --no-default-features --features postgres(请参阅这里),例如,使用diesel migration run运行迁移,使用diesel migration revert撤销它们。

由于所有 API 路由都受身份验证保护(您需要通过 /auth/v1/login 登录),因此在开发过程中手动复制粘贴令牌到 curl 可能很麻烦。因此,服务器还支持 --allow-unauthenticated-access 标志来禁用身份验证(显然不应在生产环境中使用此选项)。

scripts/run-dev-backend --allow-unauthenticated-access

我们可以通过发送一个简单的 API 请求来验证它是否正确工作:curl

curl -i https://127.0.0.1:8090/api/v1/tracks
HTTP/1.1 200 OK
content-length: 2
access-control-expose-headers: host, user-agent, accept
vary: Origin, Access-Control-Request-Method, Access-Control-Request-Headers
access-control-allow-credentials: true
content-type: application/json
date: Sun, 08 May 2022 19:42:42 GMT

[]

前端

要开发前端,您可以直接在 frontend 目录中使用 npm,或者从存储库根目录使用以下段落中提到的便捷脚本。

首先,确保已安装 npm 依赖项

scripts/bootstrap-frontend

现在,您可以在 https://127.0.0.1:8080 上运行前端并使用开发服务器(您可能需要同时运行 API-only 模式下的后端,以便它能够执行有用的操作)。

scripts/run-dev-frontend

要将前端打包为生产使用,运行以下命令将其打包到 frontend 目录下的 /dist

scripts/bundle-frontend

然后,您可以使用纯 cargo run 运行后端服务器,现在它也提供前端,并在浏览器中访问整个 Web 应用程序:https://127.0.0.1:8090

依赖项

~31–45MB
~873K SLoC