Skip to content

JackDeng666/ying-starter

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

66 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Ying Starter

简介

This workspace has been generated by Nx, Smart Monorepos · Fast CI.

这是一个使用 nx 的 monorepo 架构的全栈项目,基于 React 和 NestJS 实现了基本的后台管理系统的角色权限控制逻辑,包含一个NextJS的客户端,集成了基本的注册登录逻辑和谷歌、github、Facebook 的 oauth 登录,以及多语言配置。

中后台管理端

  • Vite
  • React
  • Ant Design UI
  • zustand
  • react-hook-form

修改自另一个开源项目 slash-admin

客户端

  • Vite
  • React
  • Next UI
  • zustand
  • react-hook-form

服务端

  • Nestjs
  • TypeORM
  • MySQL
  • Redis
  • MinIO

在共享库里有个特殊的库 libs\shared,这个目录用来存放 DTO , VO 和数据库的 Entity 对象, tsconfig.base.json 文件中配置了特殊前缀指向这个目录,这样前端代码可以直接读取服务端已经写好的数据类型,同时配合 react-hook-form@hookform/resolvers/class-validator,传入对应的 DTO 后, 可以让前后端公用同一套数据校验逻辑。

中后台管理端的角色权限控制目录在 libs\shared\src\permission 里去控制,server端在启动时每次都会检查并更新数据库。

开发环境版本

  • node v18.18.2
  • pnpm v8.15.3

开发环境启动

参考 .env 文件了解需要的环境变量,然后可以按照同样格式添加一个 .env.local 的文件,这个文件已经添加到 git 的忽略文件中。

然后执行:

pnpm i
pnpm dev

docker 部署

项目根目录写了 Dockerfile 文件,直接使用 docker 的打包命令打包一个镜像。

docker build -t ying-starter:test .

启动容器。

docker run --name ying-starter -d \
  -p 3000:3000 \
  -p 3256:3256 \
  -e DOMAIN=localhost \
  -e SERVER_URL=http://localhost:3000 \
  -e REDIS_HOST=kubernetes.docker.internal \
  -e REDIS_PORT=6379 \
  -e REDIS_PASSWORD=ying123456 \
  -e DB_HOST=kubernetes.docker.internal \
  -e DB_PORT=3306 \
  -e DB_USER=root \
  -e DB_PASSWORD=ying123456 \
  -e DB_NAME=ying_starter \
  -e STORAGE_MODE=local \
  -e MINIO_HOST= \
  -e MINIO_PORT= \
  -e MINIO_BUCKET= \
  -e MINIO_ACCESS_KEY= \
  -e MINIO_SECRET_KEY= \
  -e MAIL_HOST= \
  -e MAIL_PORT= \
  -e MAIL_USER= \
  -e MAIL_AUTH_CODE= \
  -e AUTH_ADMIN_SECRET=  \
  -e AUTH_ADMIN_NAME=admin \
  -e AUTH_ADMIN_PASS=Admin.123 \
  -e AUTH_ADMIN_EXPIRES_IN=1d \
  -e AUTH_SECRET= \
  -e AUTH_EXPIRES_IN=1h \
  -e AUTH_REFRESH_EXPIRES_IN=7d \
  -e AUTH_REDIRECT_URL=http://localhost:3256 \
  -e AUTH_GITHUB_ID= \
  -e AUTH_GITHUB_SECRET= \
  -e AUTH_GOOGLE_ID= \
  -e AUTH_GOOGLE_SECRET= \
  -e AUTH_FACEBOOK_ID= \
  -e AUTH_FACEBOOK_SECRET= \
  -e VAPID_SUBJECT=mailto:http://localhost:3256 \
  -e VAPID_PUBLIC_KEY=BCeOtQOGgu4arg2axtgTBz72kc-OyLomMBgoQCX2S1wMUOr3Z4J9UivXmdsVtDOryRlAJYjTMEViVjjLpxZPcrs \
  -e VAPID_PRIVATE_KEY=foPUG2TRWnk5-nqxIrso5JrX5qdVA9IwXBCslxXZrqk \
  ying-starter:test

如何对象存储使用本地模式,并需要保存容器内的文件,可以添加映射到容器内的/app/uploadfiles

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published