2 个不稳定版本
0.1.0 | 2022 年 9 月 26 日 |
---|---|
0.0.1 | 2022 年 4 月 15 日 |
#140 in 多媒体
1.5MB
7K SLoC
包含 (JAR 文件,60KB) gradle-wrapper.jar
Bassment
支持 cue 点、标签、播放列表、crate 等的音频库服务器。

仓库结构
Bassment 主要由两个组件组成
- 后端服务器,使用 Rust 编写(使用
actix-web
和diesel
),位于仓库根目录。 - 前端,使用 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