# image-viewer-miniprogram **Repository Path**: UPUP0326/image-viewer-miniprogram ## Basic Information - **Project Name**: image-viewer-miniprogram - **Description**: 使用 Cursor AI 编辑器辅助开发的看图小程序项目 - A mini-program image viewer project developed with Cursor AI editor assistance - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 0 - **Created**: 2025-11-05 - **Last Updated**: 2026-01-22 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 看图小程序 > 使用 Cursor AI 编辑器辅助开发的看图小程序项目 一个基于 uni-app 3.0 开发的跨平台看图小程序,支持 H5、微信小程序、App 等多端运行。提供图片浏览、分类管理、收藏、历史记录等功能,并配备完整的管理后台系统。 ## ✨ 功能特性 ### 前端功能 - 📱 **多端支持**:支持 H5、微信小程序、App 等多平台 - 🖼️ **图片浏览**:瀑布流布局,流畅的图片浏览体验 - 📂 **分类管理**:多分类浏览,支持分类切换 - ⭐ **收藏功能**:用户可收藏喜欢的图片 - 📜 **历史记录**:自动记录浏览历史 - 🔍 **搜索功能**:支持关键词搜索图片 - 👤 **用户系统**:用户登录、个人中心 - ⚙️ **设置管理**:个性化设置选项 - 📢 **广告系统**:支持开屏广告和横幅广告 ### 后端功能 - 🚀 **高性能 API**:基于 Fastify 框架,低延迟高并发 - 🔐 **权限管理**:JWT 认证,安全的接口访问 - 📊 **管理后台**:完整的后台管理系统 - 🗄️ **数据库管理**:基于 Prisma ORM,类型安全 - 📦 **批量导入**:支持批量图片入库 - 📈 **数据统计**:浏览数、点赞数等统计功能 ## 🛠️ 技术栈 ### 前端 - **框架**:uni-app 3.0 (Vue 3) - **构建工具**:Vite 5.0 - **状态管理**:Pinia 2.x - **UI 框架**:uni-ui(自定义组件) - **开发语言**:JavaScript / TypeScript ### 后端 - **Web 框架**:Fastify - **ORM**:Prisma - **数据库**:SQLite(开发环境) - **认证**:JWT Token - **包管理**:pnpm ### 管理后台 - **框架**:Vue 3 - **构建工具**:Vite - **UI 组件**:Element Plus / Ant Design Vue ## 📁 项目结构 ``` 项目根目录/ ├── src/ # 前端源代码 │ ├── api/ # API 接口封装 │ ├── components/ # 组件 │ │ ├── ad-banner/ # 广告横幅组件 │ │ ├── ad-splash/ # 开屏广告组件 │ │ ├── category-tabs/ # 分类标签组件 │ │ ├── custom-tabbar/ # 自定义底部导航 │ │ ├── image-card/ # 图片卡片组件 │ │ └── waterfall/ # 瀑布流组件 │ ├── pages/ # 页面 │ │ ├── index/ # 首页 │ │ ├── category/ # 分类页 │ │ ├── detail/ # 详情页 │ │ ├── favorites/ # 收藏页 │ │ ├── history/ # 历史记录页 │ │ ├── profile/ # 个人中心 │ │ └── settings/ # 设置页 │ ├── stores/ # Pinia 状态管理 │ ├── utils/ # 工具函数 │ ├── config/ # 配置文件 │ ├── static/ # 静态资源 │ ├── App.vue # 根组件 │ ├── main.js # 入口文件 │ ├── pages.json # 页面配置 │ └── manifest.json # 应用配置 │ ├── server/ # 后端服务 │ ├── api/ # API 服务(端口 3000) │ ├── admin/ # Admin 服务(端口 3001) │ ├── admin-frontend/ # 管理后台前端(端口 3002) │ └── shared/ # 共享代码 │ └── prisma/ # 数据库配置 │ ├── scripts/ # 脚本工具 ├── .cursor/ # Cursor AI 编辑器配置 ├── package.json # 项目配置 ├── vite.config.js # Vite 配置 └── tsconfig.json # TypeScript 配置 ``` ## 🚀 快速开始 ### 环境要求 - Node.js >= 16.0.0 - pnpm >= 8.0.0 - Python 3.x(用于脚本工具,可选) ### 安装依赖 ```bash # 安装前端依赖 pnpm install # 安装后端依赖 cd server pnpm install ``` ### 配置环境变量 #### 前端环境变量 在项目根目录创建 `.env.development` 文件: ```env VITE_API_BASE_URL=http://localhost:3000 VITE_API_TIMEOUT=10000 ``` 创建 `.env.production` 文件: ```env VITE_API_BASE_URL=https://api.yourdomain.com VITE_API_TIMEOUT=10000 ``` 详细配置说明请参考 [README_ENV.md](./README_ENV.md) #### 后端环境变量 在 `server/api` 目录创建 `.env` 文件: ```env PORT=3000 DATABASE_URL="file:../shared/prisma/data.db" API_KEY=your-api-key-for-batch-upload ``` 在 `server/admin` 目录创建 `.env` 文件: ```env PORT=3001 DATABASE_URL="file:../shared/prisma/data.db" JWT_SECRET=your-super-secret-jwt-key-change-this-in-production ADMIN_USERNAME=admin ADMIN_PASSWORD=admin123 API_KEY=your-api-key-for-batch-upload ``` ### 初始化数据库 ```bash cd server # 生成 Prisma Client pnpm run prisma:generate # 运行数据库迁移 pnpm run prisma:migrate ``` ### 启动开发服务器 #### 方式一:一键启动(推荐) **Windows:** ```bash cd server start.bat ``` **Linux/Mac:** ```bash cd server chmod +x start.sh ./start.sh ``` **Node.js(跨平台):** ```bash cd server pnpm run dev ``` #### 方式二:分别启动 **启动后端服务:** ```bash cd server pnpm run dev:api # API 服务(端口 3000) pnpm run dev:admin # Admin 服务(端口 3001) pnpm run dev:frontend # 管理后台(端口 3002) ``` **启动前端开发:** ```bash # H5 开发 pnpm run dev:h5 # 微信小程序开发 pnpm run dev:mp-weixin # App 开发 pnpm run dev:app ``` ### 访问地址 - **前端 H5**: http://localhost:8080 - **API 服务**: http://localhost:3000 - **Admin 服务**: http://localhost:3001 - **管理后台**: http://localhost:3002 默认管理员账号: - 用户名: `admin` - 密码: `admin123` ## 📖 开发指南 ### 前端开发 #### 页面开发 页面文件位于 `src/pages/` 目录,使用 Vue 3 Composition API: ```vue ``` #### 组件开发 组件位于 `src/components/` 目录,支持自动导入: ```vue ``` #### API 调用 使用封装的 API 函数: ```javascript import { getImageList } from '@/api/image' const images = await getImageList({ page: 1, pageSize: 20, categoryId: 1 }) ``` #### 状态管理 使用 Pinia 进行状态管理: ```javascript import { useImageStore } from '@/stores/image' const imageStore = useImageStore() imageStore.fetchImages() ``` ### 后端开发 #### API 接口开发 API 服务位于 `server/api/src/index.js`,使用 Fastify 框架: ```javascript fastify.get('/api/images/list', async (request, reply) => { // 处理逻辑 return { code: 200, data: [] } }) ``` #### 数据库操作 使用 Prisma 进行数据库操作: ```javascript import { prisma } from '../shared/prisma' const images = await prisma.image.findMany({ where: { status: 1 }, include: { category: true } }) ``` #### 批量导入图片 使用提供的脚本或 API: ```bash # Python 脚本 python server/scripts/batch-upload-images.py # 或使用 API curl -X POST http://localhost:3001/admin/images/batch \ -H "X-API-Key: your-api-key" \ -H "Content-Type: application/json" \ -d @images.json ``` 详细文档请参考: - [后端 API 设计文档](./server/API_DESIGN.md) - [图片批量上传 API](./server/docs/IMAGE_UPLOAD_API.md) - [快速开始指南](./server/docs/QUICK_START.md) ## 🏗️ 构建部署 ### 前端构建 ```bash # H5 构建 pnpm run build:h5 # 微信小程序构建 pnpm run build:mp-weixin # App 构建 pnpm run build:app ``` 构建产物位于 `dist/` 目录。 ### 后端部署 ```bash cd server # 构建前端管理后台 pnpm run build # 启动生产服务 pnpm start ``` ## 📚 相关文档 - [环境变量配置说明](./README_ENV.md) - [项目结构重构说明](./README_RESTRUCTURE.md) - [后端服务说明](./server/README.md) - [后端 API 设计文档](./server/API_DESIGN.md) - [图片批量上传 API](./server/docs/IMAGE_UPLOAD_API.md) - [快速开始指南](./server/docs/QUICK_START.md) ## 🤝 贡献指南 本项目使用 Cursor AI 编辑器辅助开发。欢迎提交 Issue 和 Pull Request。 ### 开发规范 1. 代码风格遵循项目现有规范 2. 提交前运行代码检查 3. 提交信息使用中文,清晰描述变更内容 4. 新功能需要添加相应的文档说明 ## 📝 许可证 本项目采用私有许可证,仅供学习和研究使用。 ## 🙏 致谢 - [uni-app](https://uniapp.dcloud.net.cn/) - 跨平台应用开发框架 - [Vue.js](https://vuejs.org/) - 渐进式 JavaScript 框架 - [Fastify](https://www.fastify.io/) - 快速且低开销的 Web 框架 - [Prisma](https://www.prisma.io/) - 下一代 ORM - [Cursor AI](https://cursor.sh/) - AI 辅助代码编辑器 --- **开发工具**: 本项目使用 [Cursor AI](https://cursor.sh/) 编辑器辅助开发 **仓库地址**: https://gitee.com/UPUP0326/image-viewer-miniprogram