首页审查修复(home/post_card/image_viewer/search/home_skeleton): - PostCard 消除嵌套 <a>:外层 Link 包裹改为绝对定位覆盖层链接, 标题/摘要/封面降级为普通元素,标签用 z-10 叠在覆盖层之上并 stop_propagation,整卡点击跳转文章详情。 - ImageViewer 新增 lightbox prop(默认 true),卡片封面传 false 禁用灯箱以归一为单一跳转交互;文章详情页零改动。 - home.rs 越界页码守卫:分页仅在 total>0 渲染,避免 /page/9999 出现孤立空分页;错误文案脱敏为"加载失败"。 - search.rs 错误文案脱敏为"搜索失败",与首页/标签页一致。 - HomeSkeleton 卡片 5→10,对齐 POSTS_PER_PAGE。 编辑器上传重构(write/tiptap_bridge): - consume_upload_event 改用 upload_errors Vec 自身判重,移除 seen_error_ids 副本状态;Signal 参数加 mut 修复 E0596 编译错误。 - make_upload_closure 构造阶段错误以 rejected Promise 返回而非 panic,单张坏文件不再拖垮整个编辑器。 - write.rs 移除未用的 success signal,编辑保存后统一跳转 Posts, 标签分隔符支持半角/全角逗号与分号,提取 META_*_CLASS 常量去重。 - Makefile dev 目标清理 static/ 目录。
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
Description
Languages
Rust
77.4%
TypeScript
17.2%
CSS
3.3%
Dockerfile
0.9%
Makefile
0.6%
Other
0.6%