将 pnpm workspace 根从项目根移到 libs/,项目根保持纯 Rust,JS 工作区自治: - package.json/pnpm-workspace.yaml/pnpm-lock.yaml/biome.json 迁入 libs/ - pnpm-workspace.yaml glob 从 'libs/*' 改为 '*'(已在 libs/ 内) - biome.json 关闭 vcs.useIgnoreFile(libs/ 无独立 .gitignore, files.includes 已显式排除 node_modules/dist) - Makefile 所有 pnpm/biome 调用加 'cd libs &&' 前缀 Makefile 同步整合 lint/fix(替代独立 clippy/fix target): - make lint = biome check (libs) + cargo clippy - make fix = biome format --write (libs) + cargo fix - 删除 8 个 build-*-incremental/build-* target,改为 build-libs 聚合 + build-<name> 用 pnpm --filter 单库便利 target 修复 biome 格式化回归:tiptap-editor/src/index.ts:83 的 sourceTextarea!.value 被 biome 误转为可选链 ?.,导致 TS2345(string | undefined 不匹配 string), 已还原为非空断言。
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.7%
TypeScript
17%
CSS
3.2%
Dockerfile
0.9%
Makefile
0.6%
Other
0.6%