以类型安全为目标的 nodejs 全栈 monorepo 模版

仓库地址:github.com/dobble11/pr...

这是以类型安全为目标的全栈 monorepo 模版,采用 GraphQL 作为数据交换层,并通过 @graphql-codegen/cli 将编写的查询 gql 生成前端请求 Hook 代码。

数据库访问由 ORM prisma 驱动,通过 pothos 构建 code-first GraphQL schema,结合 pothos prisma 插件实现类型从数据库模型映射到 GraphQL,再映射到前端查询 Hook,保证了整个链路类型的安全。

预览

此模版包含用户登录并查询 User 表的最小 DEMO 代码

项目结构

  • apps/client: 客户端根目录
  • apps/server: 服务端根目录
  • packages/eslint-config-custom: ESLint 基础配置
  • packages/tsconfig: TypeScript 配置,包含服务端、React 应用、React Library 配置

主要技术栈

客户端

服务端

仓库

  • turbo - monorepo 构建系统
  • pnpm - 包管理器

开始

安装依赖

sh 复制代码
pnpm i

配置服务端环境变量

新建 apps/server/.env 文件,输入以下内容

env 复制代码
SERVER_PORT=4010
DATABASE_URL=postgresql://postgres:postgres@localhost:5432/prisma-gql?schema=public

# 通过 docker compose 启动时需要配置
PG_USER=postgres
PG_PASSWORD=postgres

以上数据库信息可以根据自身情况进行配置

准备服务端依赖服务

如果没有 postgres 服务,可以单独启动或者使用 docker compose 启动

sh 复制代码
# 单独启动
docker run --name postgres -p 5432:5432 -e POSTGRES_PASSWORD=postgres -d postgres

# 使用 docker compose
cd apps/server
docker compose up -d

创建数据库并生成访问代码

sh 复制代码
cd apps/server
pnpm prisma db push

# 初始化用户
pnpm tsx ./scripts/seed.ts

启动服务

sh 复制代码
# 仓库根目录下
pnpm dev
相关推荐
Misnice13 小时前
Webpack、Vite、Rsbuild区别
前端·webpack·node.js
毕设源码-朱学姐2 天前
【开题答辩全过程】以 基于Node.js的书籍分享平台设计与实现为例,包含答辩的问题和答案
node.js
前端 贾公子2 天前
Node.js 如何处理 ES6 模块
前端·node.js·es6
周杰伦的稻香2 天前
Hexo搭建教程
java·node.js
毕设源码-钟学长2 天前
【开题答辩全过程】以 基于node.js vue的点餐系统的设计与实现为例,包含答辩的问题和答案
前端·vue.js·node.js
朝朝暮暮an2 天前
Day 2|Node.js 运行机制、模块系统与异步初探
node.js
aidou13143 天前
Visual Studio Code(VS Code)安装步骤
vscode·npm·node.js·环境变量
止观止3 天前
告别 require!TypeScript 5.9 与 Node.js 20+ 的 ESM 互操作指南
javascript·typescript·node.js
一只专注api接口开发的技术猿3 天前
淘宝商品详情API的流量控制与熔断机制:保障系统稳定性的后端设计
大数据·数据结构·数据库·架构·node.js
天远数科3 天前
天远车辆过户查询API集成指南:Node.js 全栈视角下的二手车数据挖掘
大数据·数据挖掘·node.js·vim