Skip to content

一个融合博客、微博与便笺理念的个人内容发布和管理平台,鼓励持续创作。

License

Notifications You must be signed in to change notification settings

huhubun/bammemo

Repository files navigation

bammemo Logo

bammemo(/ˌbæmˈmɛmoʊ/,竹笺)是一个融合博客、微博与便笺理念的个人内容发布和管理平台,受到 memos 的启发。
名字取自“竹子”(Bambu)和“memo”(便签),灵感源自中国古代的竹简:单片少字,合集成篇,鼓励持续创作。

部署

通过镜像部署:

docker pull ghcr.io/huhubun/bammemo:0.1.1-alpha.2

配置项

服务器端

appsettings.Production.json

{
  "Bammemo": {
    "ConnectionString": "Data Source=/bammemo/bammemo.db",
    "ApiUrl": "https://example.com/api/",
    "Username": "YOUR_USERNAME",
    "Password": "BASE64_ENCODE_PASSWORD",
    "StoragePath": "/bammemo"
  }
}

使用时建议通过环境变量 Bammemo__{配置项名称}(注意是两个下划线)进行设置 ,环境变量会覆盖配置文件:

export Bammemo__ApiUrl="https://example.com/api/"

前端

通过 HTTP 请求从服务器端获取 GET /bammemo.json

{
  "Bammemo": {
    "ApiUrl": "https://example.com/api/"
  }
}

前端配置中的值由服务器端自动生成,无需进行干预。

释义

Name Required Scope Description
ConnectionString ☑️ 服务器 sqlite 数据库的路径,db 文件可以不提前创建,首次运行时会自动创建
ApiUrl ☑️ 服务器、前端 API 的地址,域名 + /api/
Username ☑️ 服务器 管理员登录使用的用户名
Password ☑️ 服务器 管理员登录使用的密码,需要设置为 base64 编码后的值
StoragePath ☑️ 服务器 分配给 bammemo 使用的本地存储空间
Key 服务器 bammemo 使用 AES256 保护数据,通过该参数可以手动指定密钥(未测试),如果不指定则在程序首次运行时自动生成并保存在 StoragePath 下的 bammemo_key 文件中

开发

基于 ASP.NET Core 的 Blazor Web App 进行开发,需要 .NET 9 SDK

dotnet run --project ./src/Bammemo.Web/Bammemo.Web/Bammemo.Web.csproj

由于对前端(WebAssembly)启用了 AOT剪裁,请务必在本地进行测试,以确保功能能够正常使用(在 PowerShell 中,需将 \ 替换为 ```):

docker build -t bammemo:local-dev -f src/Bammemo.Web/Bammemo.Web/Dockerfile .
docker run -v C:\bammemo:/data/bammemo \
          -e Bammemo__ConnectionString="Data Source=/data/bammemo/bammemo.db" \
          -e Bammemo__ApiUrl=http://localhost:8080/api/ \
          -e Bammemo__Username=admin \
          -e Bammemo__Password="BASE64_ENCODE_PASSWORD" \
          -e Bammemo__StoragePath="/data/bammemo" \
          -p 8080:8080 \
          bammemo:local-dev

请注意,如果在执行 docker build 前,曾经对代码进行过编译、运行或发布操作,请移除所有项目的 objbin 文件夹,否则会导致容器中打包失败。可以运行 scripts 目录下的 clean.bat 或在 Visual Studio 中安装 Command Task Runner 扩展,并通过“视图”—“其他窗口”—“任务运行程序资源管理器”执行 clean 任务。

Db Migration

dotnet ef migrations add Init -o ./Migrations --startup-project "../Bammemo.Web/Bammemo.Web/Bammemo.Web.csproj" -c BammemoDbContext
dotnet ef database update --startup-project "../Bammemo.Web/Bammemo.Web/Bammemo.Web.csproj" -c BammemoDbContext

Warning

目前 bammemo 尚未正式发布,数据库结构可能随时更改,并且不会预先通知。

OpenApi Client

我们使用 Kiota 来生成访问 Web Api 的客户端,您需要安装 Kiota 工具

dotnet tool install --global Microsoft.OpenApi.Kiota

要更新 Web Api 客户端时,请执行(在 PowerShell 中,需将 \ 替换为 ```):

kiota generate -l CSharp \
    -c WebApiClient \
    -n Bammemo.Web.Client.WebApis.Client \
    -d http://localhost:5146/openapi/v1.json \
    -s Microsoft.Kiota.Serialization.Json.JsonSerializationWriterFactory \
    -s Microsoft.Kiota.Serialization.Text.TextSerializationWriterFactory \
    -s Microsoft.Kiota.Serialization.Multipart.MultipartSerializationWriterFactory \
    --ds Microsoft.Kiota.Serialization.Json.JsonParseNodeFactory \
    --exclude-backward-compatible \
    -o ./src/Bammemo.Web/Bammemo.Web.Client/WebApis/Client

第三方资源

在开发 Bammemo 的过程中,我们使用了大量开源类库、字体、工具等,在此由衷感谢所有开源项目的开发者及维护者,你们的奉献、热爱与智慧是人类进步的基石。

完整依赖列表及许可证,请移步 third-party 查看。

About

一个融合博客、微博与便笺理念的个人内容发布和管理平台,鼓励持续创作。

Topics

Resources

License

Stars

Watchers

Forks

Packages