RebuildCacheBar 的「已重建 X 篇文章」结果消息原用 absolute top-full mt-2 悬挂在按钮行下方,但 mt-2(8px) + text-sm(20px) = 28px 大于外层 space-y-6 的 24px 间距,消息底边向下溢出 4px 侵入表格容器上沿;横向 left-0 又使消息 落在右上角按钮组正下方、覆盖状态/日期/操作列,语义位置错位。 将 rebuilding / rebuild_result 状态上提到 PostsPage: - 结果消息在 header 与表格之间独立成行,进入文档流,吃 space-y-6 正常间距, 既不撑高 header 触发 items-center 重排(曾用 absolute 规避的旧问题), 也不脱离流溢进表格(absolute 引入的新问题)。 - RebuildCacheBar 改为接收父级 Signal props,只渲染按钮行本身。
Yggdrasil
基于 Dioxus 0.7 的全栈博客系统,Rust 单一代码库同时编译为 WASM 前端和原生服务端。
技术栈
- 框架: Dioxus 0.7 (fullstack)
- 数据库: PostgreSQL + tokio-postgres
- 样式: Tailwind CSS v4
- 密码: Argon2
- 会话: UUID token + cookie
功能
- 邮箱注册 / 登录(单管理员模式,首次注册后关闭)
- 会话管理与自动过期清理
- 暗色 / 亮色主题切换
- 后台文章撰写(Tiptap Markdown 编辑器)
- 文章归档与标签浏览
开发
依赖 Rust 1.95+、wasm32 目标、dx CLI、tailwindcss CLI v4 和 PostgreSQL。
# 配置数据库
DATABASE_URL=postgres://postgres:postgres@localhost:5432/yggdrasil
# 运行迁移(自动创建数据库并按顺序执行 migrations/ 下所有 SQL)
./migrate.sh
# 启动开发服务器
make dev
构建
make build
生产部署
生产环境必须前置反向代理(nginx/Caddy)做 TLS 终结,并设置 APP_BASE_URL、
COOKIE_SECURE=true、TRUSTED_PROXY_COUNT=1。详见 部署指南。
Description
Languages
Rust
77.4%
TypeScript
17.2%
CSS
3.3%
Dockerfile
0.9%
Makefile
0.6%
Other
0.6%