这是我的 ts 全栈最佳实践项目。可以在定义数据模型后不用写后端接口代码即可前端直接操作数据库,快速开发 MVP 模型。
对于传统管理端页面我真的受够了,我再也不想写了。
-
后端
- 技术栈:ts + prisma + zenstack + Effect + fastify
- zenstack(基于 prisma 的增强方案)来实现数据库建模和 Row Level Security 。
-
桥梁
- 技术栈:ts + superjson + 自研 RPC 库
- 前端直接调用后端 API 具有完整的 ts 类型提示,无需编写中间层代码。
- superjson 支持复杂对象序列化和反序列化,如 Date、Map、Set、RegExp...,确保 primsa 的入参和返回结果可以无缝传递。
-
前端
其他应用示范
- 浏览器扩展 - InfoFlow
- 基于 https://wxt.dev/guide/installation.html 构建,用于演示如何使用 tsfullstack 作为浏览器扩展的后端支持。
- clone 项目
- 安装依赖:进入 backend 目录,执行
pnpm i安装依赖 (忽略错误: Failed to resolve entry for package "@tsfullstack/backend" ,我们将在之后的步骤中生成这个包) - 初始化数据库:在 backend 目录下执行
pnpm zenstack generate和pnpm prisma migrate dev - 编译 @tsfullstack/backend api 包:在 backend 目录下执行
pnpm build:lib(会报一些类型错误,我暂时没找到好的解决方案,但不影响使用,不用管) - 启动后端服务:在 backend 目录下执行
pnpm dev - 启动前端服务:在 website-frontend 目录下执行
pnpm dev
- 项目基座
- apps/website-frontend 为前端基座项目
- apps/backend 为后端基座项目
- 模块化前后端项目代码
- modules/*
- 模块内部的前端代码可以直接引用模块内部的后端代码接口