#field #server #self-hosted #modular #mood #tracker #back-end

app openmood

模块化情绪跟踪后端

4 个版本 (破坏性)

0.5.0 2024 年 2 月 22 日
0.4.0 2024 年 2 月 5 日
0.3.2 2024 年 1 月 17 日
0.2.1 2023 年 12 月 25 日
0.1.0 2023 年 12 月 21 日

#146HTTP 服务器

Download history

每月 153 次下载

AGPL-3.0-only

375KB
9K SLoC

OpenMood

Build Status Crates.io MSRV Crates.io Version Crates.io License

Openmood 是一个自托管、模块化情绪跟踪器。

大多数情绪跟踪器似乎只允许在显示的微笑表情和/或纯文本字段之间进行简单的数字评分。现在,对于一些人来说,这可能已经足够,但如果这还不够,那就是 openmood 的作用。

  • 它是 FOSS(太好了,哇 🎉)
  • 它允许您自定义要跟踪的数据。
    • 简单文本字段
    • 文本选择
    • 数字输入
  • 您完全控制自己的数据,因为您拥有运行该服务器的服务器。
  • 不喜欢我们提供的客户端?请随意提出改进建议或制作自己的。

目录

crates.io 安装

要求

安装

  1. 运行 cargo install openmood
  2. 服务器二进制文件现在作为 openmood 可用
  3. 运行服务器并 配置它

从源安装

要求

  • Rust 工具链
  • 您必须有一个运行中的 postgres 数据库(PostgreSQL 16.0+)
  • git 因此您实际上可以下载代码

构建服务器

  1. 克隆仓库
$ git clone https://codeberg.org/OpenThingies/openmood.git
$ cd openmood
  1. 构建和安装服务器
$ cargo install --path .

二进制文件现在作为 openmood 可用。要了解如何配置 openmood,请参阅 配置

开发

要求

  • Rust 工具链(稳定版)
    • rustfmt(夜间版)
    • clippy(稳定版)
  • docker-compose 用于启动预配置的开发环境。
  • knope 用于生成代码集和变更日志
  • 可选: cargo-watch,允许在代码更改时重新加载服务器。
  • 可选: sqlx-cli 二进制文件,用于手动应用迁移。(当从空数据库运行测试时很有用)

开发环境

只需在项目目录中运行 docker compose up,即可启动所有必要的依赖项,包括方便使用的 PgAdmin。 注意:此命令仅限开发使用

使用 docker compose 时,您可以访问本地 PostgreSQL 数据库和 PgAdmin 实例。可以通过以下配置访问

  • PostgreSQL URI 是:postgres://postgres:123456@localhost
  • PgAdmin 的凭证是:dev@developer.dev,密码为 123456

必需的环境变量

如果您想设置其他配置选项,请转到 配置

  • OM_DB_URI 必须设置为连接到您的 PostgreSQL 实例所使用的 URI。
  • OM_JWT_SECRET 在开发期间可以设置为任何字符串。
  • RUST_LOG 这不是必需的,但我建议至少将其设置为 openmood=debug,actix=info,jealousy=info,sqlx=info

运行服务器

如果您已安装 cargo-watch,则可以在更改代码时自动重新加载服务器。

注意:如果您正在编写迁移并使用 cargo watch,可能会遇到一些小问题,因为它们将在服务器重新加载时应用。如果您遇到此问题,最简单的方法是重置数据库并使用 sqlx migrate run --database-url [您的数据库 URI] 或重新启动服务器并自动应用嵌入的迁移。

# with cargo-watch installed
cargo watch -cqx run

# without cargo-watch installed
cargo run

配置

所有配置都通过环境变量完成。以下是可以设置的所有可能环境变量的列表。

环境变量 描述 必需 默认值
RUST_LOG 您希望设置的日志级别。您可以使用 RUST_LOG=info 在全局范围内设置严重性,或者可以按模块设置 RUST_LOG=openmood=info,每个项之间用逗号分隔。级别可以是 errorwarninfodebugtrace error
OM_PORT 服务器将绑定的端口 3000
OM_BIND_ADDR 服务器将绑定的 IP 地址 0.0.0.0
OM_DB_URI PostgreSQL 数据库 URI
OM_JWT_SECRET 您希望用于签署 JWT 令牌的 256 位 JWT 密钥。请确保使用足够随机的字符串。
OM_JWT_PERM_VALIDITY "永久" JWT 令牌有效的天数。当用户勾选“保持登录”复选框时使用 7
OM_JWT_TMP_VALIDITY "临时" JWT 令牌有效的小时数 3
OM_ADMIN_USER 一个以逗号分隔的键值对列表,用于构建初始管理员用户的所需数据。例如:name:test,username:my_cool_username,password:some super C00l P@$$W0rd。允许空白字符,但请注意,空白字符不会被过滤掉,它们既不会从键中也不会从值中过滤掉。

注意: 这将不会覆盖或更改现有用户。为此,您需要将 OM_ADMIN_USER_OVERRIDE 设置为 true
OM_ADMIN_USER_OVERRIDE 允许修改现有用户,使其成为管理员。这样做只会更改管理员标志。它不会更改用户的姓名或电子邮件。 no false
OM_CORS_ALLOWED_ORIGINS 一个以逗号分隔的列表,列出允许访问此API的源。这主要是为了浏览器,因此应包含前端可以访问的URI。

请注意,开发环境中的默认值与发布版本中的默认值不同。在发布版本中,它只接受来自同一源的请求,而在调试模式下,它接受来自前端连接。
开发: https://127.0.0.1:5173,http://127.0.0.1:5173
发布: same-origin
OM_DISABLE_REGISTRATIONS 允许禁用处理注册的端点,以防止新用户注册 false

许可证

此项目根据AGPL 3.0许可证授权

贡献

除非您明确表示,否则您提交给openmood的任何有意贡献都将根据AGPL 3.0授权,没有其他条款或条件。

依赖项

~64MB
~1M SLoC