前言
上次说到使用AI开发图片管理系统,通过nestjs开发后端服务,使用小程序端访问相关接口。通过这段时间断断续续的更新,差不多算是做完了简单的小程序端、后台管理系统,并且通过vercel部署已经都能正常使用了。
后端
后端主要是用了nestjs+mongodb+minio的方案,通过将图片上传至minIO进行持久化存储,几乎全部是通过Cursor开发的,上次说到使用Trae后来用着用着就用不了了所以花了点钱在Cursor上,效果也还可以,虽然过程中会有些问题他傻傻的解决不了,因为我本身也有开发经验遇到的问题也能基本解决所以问题不大。整体来说Cursor确实还是挺好用的,就是有时候创建文件比较慢或者会出异常,需要慢慢进行调试。
🔐 用户认证与权限管理
- 用户注册/登录: 支持用户名、邮箱、手机号多种登录方式
- JWT 认证: 基于 JWT 的无状态认证机制
- 角色权限系统: 细粒度的 RBAC 权限控制
- 密码管理: 支持密码重置、修改等功能
🖼️ 图片管理
- 图片上传: 支持单文件/批量上传,自动图片处理
- 图片存储: 基于 MinIO 的对象存储方案
- 图片处理: 自动生成缩略图、水印、格式转换
- 元数据管理: 提取和存储图片 EXIF 信息
- 图片标签: 灵活的标签系统,支持批量操作
🏷️ 标签管理
- 标签 CRUD: 完整的标签增删改查功能
- 标签搜索: 支持模糊搜索和分页查询
- 标签统计: 标签使用频率统计
📊 数据统计
- 图片统计: 上传量、存储量等关键指标
- 用户统计: 用户活跃度、注册趋势等
- 系统监控: 性能指标和运行状态
后台页面
后台页面主要使用了umijs,脚手架自动安装使用了antd pro的UI框架,通过不断调试才做出来的,整体效果也中规中矩吧,做的时候结合后端服务慢慢调试,问题基本不大。
前端
前端页面的话主要就是一个展示的功能,使用了Vite+React开发,支持瀑布流和网格布局,加上文件上传功能以及使用图片查看的组件,功能也比较简单,使用AI几乎一天就能做出来,效果也还不错,就是细节上调试起来比较费神。
小程序端
小程序端的话主要有三个页面
图片列表
- 瀑布流: 瀑布流展示效果,图片底部展示EXIF基本信息
- 模糊搜索: 支持调用搜索接口,模糊搜索
- 标签搜索: 支持根据图片标签进行搜索
- 放大查看: 支持放大查看,长按保存
- 详情查看: 支持查看图片详细参数信息
- 点赞: 支持对图片点赞
边框设置
- 边框设置: 支持设置透明、黑色、白色三种边框
- 信息展示: 支持控制元数据的隐藏与显示
- logo设置: 支持对图片进行logo设置,包括颜色、大小、不同logo
- 字体设置: 支持字体大小、字体颜色设置
- 布局排列: 支持元数据信息网格布局、左右布局、上下布局
- 导出功能: 本来要做设置好边框以后导出的,但是因为小程序不支持html2canvas导致导出的效果一直很差,还没完成
关于页面
- 展示作者信息: 接口获取,后台管理系统可更改
服务部署
服务部署的话,本来是准备部署在自己的服务器,但是每次上传都太麻烦了,所以就直接部署在vercel上,只要代码一提交就自动部署,相对来说比较方便
nestjs项目部署
- 在项目根目录中创建
vercel.json
,内容如下
{
"version": 2,
"name": "xxx-server",
"builds": [
{
"src": "dist/main.js",
"use": "@vercel/node",
"config": {
"maxDuration": 30
}
}
],
"routes": [
{
"src": "/(.*)",
"dest": "dist/main.js",
"methods": [
"GET",
"POST",
"PUT",
"DELETE",
"PATCH",
"OPTIONS"
]
}
]
}
- 在vercel新建项目,导入项目
- 关联好项目以后,需要设置一下环境变量,因为使用的是.env,所以需要在vercel中导入一下
- 导入后,开始部署即可,部署完成以后绑定自己的域名就可以访问了
- 也可以本地直接npm run build以后,使用
vercel --force --prod
命令直接部署
后台管理系统与前端部署
- 后台的话主要使用了umijs,所以在部署的时候选择umijs
- 同样在本地创建
vercel.json
,因为后台的接口访问要转发到上面部署的服务端,所以内容应该如下,/api/v1
是我的请求的前缀,这个根据项目实际情况调整即可,destination配置的地址就是上面部署的服务端地址,并配置跨域设置。通过这个配置文件部署后,所有/api/v1的接口都会被转发到对应的服务端,相当于nginx的反向代理。
{
"rewrites": [
{
"source": "/api/v1/:path*",
"destination": "https://xxx.xx/api/v1/:path*"
}
],
"headers": [
{
"source": "/(.*)",
"headers": [{ "key": "Access-Control-Allow-Origin", "value": "*" }]
}
]
}
- 前端的话也是一样,因为访问的接口都是一致的,vercel.json内容与上面一致,因为我是用的vite+react,所以选择部署框架直接使用vite即可,其他都保持默认。
小程序发布
- 小程序在项目创建后使用微信开发者工具打开,项目开发在Cursor中做预览在微信开发者工具中看
- 开发完成以后先上传体验版
- 上传以后登陆微信公众平台-小程序,在开发管理-服务域名添加相关服务域名,并且域名要支持https不然无法访问
- 配置好以后,在版本管理中提交审核,提交后等待审核成功,审核通过后即可发布
总结
这样整个流程就完成了,从开发到部署,再到小程序发布,基本上都比较顺利,虽然遇到一些问题但是Cursor基本上都可以解决。本来想白嫖Cursor,但是没忍住,氪了那么一点点金,提升了不少效率。
评论