爪印守护(PawGuard)- 项目介绍
一、项目概述
1. 项目名称
爪印守护(PawGuard)
2. 项目定位
PawGuard 是一款连接流浪猫狗救助者、领养人、志愿者、捐赠者与管理员的公益型流浪猫狗守护全栈平台。核心目标是通过数字化手段简化救助流程、促进流浪动物领养、汇聚公益力量,打造"救助-帮扶-领养-反馈"的闭环生态,传递公益温暖。
3. 项目愿景
- 数字化救助:通过在线平台简化救助信息发布与传播流程
- 透明化领养:建立完善的领养申请与审核机制,确保动物找到合适的家
- 规范化管理:为救助组织提供专业的后台管理系统
- 公益化运营:汇聚社会爱心力量,形成可持续的救助生态
二、技术架构
1. 技术栈选型
| 分层 | 技术选型 | 选型说明 |
|---|---|---|
| 后端 | Node.js + Express.js、MySQL、Sequelize ORM、JWT 认证、Redis 缓存 | 轻量高效,适合快速开发 RESTful API;MySQL 支持事务和复杂查询,适配业务数据关联需求;JWT 保障接口安全;Redis 提升性能 |
| 前端 | Vue 3 + Vite、Pinia 状态管理、Ant Design Vue UI 组件库、Axios HTTP 请求 | Vue 3 性能更优,Vite 提升开发效率;Ant Design Vue 组件丰富,适配公益平台温暖简洁的设计风格 |
| 安全 | Helmet、XSS 防护、请求限流、密码加密 | 全方位保障平台安全 |
| 工具 | Swagger API 文档、Winston 日志、Multer 文件上传、Sharp 图片处理 | 提升开发效率和系统可维护性 |
| 开发/部署 | Git 版本控制、ESLint 代码规范、Jest 单元测试 | 标准化开发流程,简化部署维护 |
2. 系统架构
┌─────────────────────────────────────────────────────────┐
│ 前端层 (Vue 3) │
│ ┌──────────┐ ┌──────────┐ ┌──────────┐ ┌─────────┐ │
│ │ 用户端 │ │ 管理后台 │ │ 移动端 │ │ 响应式 │ │
│ └──────────┘ └──────────┘ └──────────┘ └─────────┘ │
└────────────────────┬────────────────────────────────────┘
│ HTTP/HTTPS
┌────────────────────▼────────────────────────────────────┐
│ API 网关层 (Express) │
│ ┌──────────┐ ┌──────────┐ ┌──────────┐ ┌─────────┐ │
│ │ JWT认证 │ │ 权限控制 │ │ 请求限流 │ │ 日志记录│ │
│ └──────────┘ └──────────┘ └──────────┘ └─────────┘ │
└────────────────────┬────────────────────────────────────┘
│
┌────────────────────▼────────────────────────────────────┐
│ 业务逻辑层 (Controllers) │
│ ┌──────────┐ ┌──────────┐ ┌──────────┐ ┌─────────┐ │
│ │ 用户管理 │ │ 救助管理 │ │ 领养管理 │ │ 其他... │ │
│ └──────────┘ └──────────┘ └──────────┘ └─────────┘ │
└────────────────────┬────────────────────────────────────┘
│
┌────────────────────▼────────────────────────────────────┐
│ 数据访问层 (Sequelize ORM) │
└────────────────────┬────────────────────────────────────┘
│
┌────────────┴────────────┐
│ │
┌───────▼────────┐ ┌─────────▼────────┐
│ MySQL 数据库 │ │ Redis 缓存 │
│ (主数据存储) │ │ (会话/缓存) │
└────────────────┘ └─────────────────┘3. 核心特性
- ✅ RESTful API 设计:统一的接口规范,易于前端集成
- ✅ JWT 无状态认证:支持分布式部署,提升系统扩展性
- ✅ 角色权限控制:基于 RBAC 的细粒度权限管理
- ✅ 全文搜索功能:基于 MySQL 全文索引的智能搜索
- ✅ 文件上传处理:支持图片压缩、格式转换
- ✅ 操作日志记录:完整的操作审计追踪
- ✅ API 文档自动生成:Swagger 集成,便于接口调试
- ✅ 完善的错误处理:统一的错误响应格式和日志记录
三、核心功能模块
1. 公共模块(无需登录,所有用户可访问)
| 功能点 | 详细描述 |
|---|---|
| 首页展示 | 轮播图展示救助成功案例和紧急救助需求、热门救助信息推荐、领养推荐、捐赠公示入口、平台简介 |
| 救助信息浏览 | 支持按"紧急程度""地区""动物类型(猫/狗)"筛选,关键词搜索;展示动物照片、年龄、健康状况、救助地点等详细信息 |
| 救助故事专栏 | 图文展示救助过程、志愿者事迹、领养后反馈,支持点赞、分享、评论互动 |
| 志愿者活动 | 浏览志愿者活动列表,查看活动详情(时间、地点、需求人数、活动内容) |
| 捐赠公示 | 查看公开的捐赠记录,了解善款和物资的使用情况 |
| 全文搜索 | 全局搜索功能,支持搜索救助信息、救助故事、志愿者活动等内容 |
| 登录/注册 | 支持账号密码登录;注册需填写基本信息(用户名、手机号、密码、邮箱) |
2. 普通用户模块(已登录用户)
| 功能点 | 详细描述 |
|---|---|
| 个人中心 | 编辑个人资料(昵称、头像、联系电话、居住地址、邮箱)、查看我的领养申请/志愿者报名/捐赠记录/收藏列表 |
| 救助信息发布 | 填写救助信息(动物类型、照片、健康状况、救助地点、紧急程度、详细描述),提交后需管理员审核 |
| 救助故事发布 | 发布救助故事,分享救助经历和心得,支持图片上传和富文本编辑 |
| 领养申请 | 选择目标动物,提交领养申请(填写居住环境、经济情况、饲养经验、联系方式),实时跟踪审核进度 |
| 志愿者报名 | 选择志愿者活动,提交报名信息(可服务时间、技能特长),等待审核 |
| 捐赠提交 | 提交捐赠信息(资金或物资),上传捐赠凭证,查看个人捐赠记录和使用反馈 |
| 消息通知 | 接收领养审核结果、志愿者活动通知、救助信息审核反馈等系统消息和站内信 |
| 评论互动 | 对救助信息和故事进行评论、回复,支持点赞功能 |
| 收藏功能 | 收藏感兴趣的救助信息和故事,方便后续查看 |
3. 管理员模块(后台管理,需管理员权限)
| 功能点 | 详细描述 |
|---|---|
| 管理后台 Dashboard | 数据统计展示(用户数、救助信息数、领养申请数、捐赠总额、志愿者数等),待审核事项统计,数据趋势图表 |
| 救助信息管理 | 审核用户提交的救助信息(通过/驳回,需填写驳回理由);编辑/删除救助信息;置顶紧急救助;批量操作 |
| 救助故事管理 | 审核用户发布的救助故事,编辑/删除故事内容,管理评论 |
| 领养资质审核 | 查看领养申请详情(关联用户信息、动物信息),审核结果(通过/驳回),并通知申请人;记录领养成功后的跟踪信息;批量审核 |
| 志愿者管理 | 创建/编辑志愿者活动;审核志愿者报名(通过/驳回),分配志愿者任务;查看志愿者服务记录;批量审核 |
| 捐赠公示管理 | 录入捐赠信息(捐赠人、金额/物资、捐赠时间);审核用户提交的捐赠凭证;发布捐赠使用明细(如物资流向、善款用途);导出捐赠记录 |
| 物资管理 | 记录救助物资入库(名称、数量、来源、入库时间)、出库(领用部门、数量、用途);查看物资库存明细;库存预警;导出物资记录 |
| 用户管理 | 查看所有注册用户列表,编辑用户状态(正常/禁用);查询用户操作记录 |
| 系统配置 | 配置平台基础信息(名称、简介、联系方式、Logo);设置领养条件、志愿者招募要求等 |
| 操作日志 | 查看系统操作日志,按模块、操作人、时间筛选,支持导出 Excel |
| 数据统计 | 查看救助统计、捐赠统计、用户活跃度等数据报表和趋势图表 |
四、数据模型设计
1. 核心数据实体
系统包含以下核心数据实体:
- 用户(User):存储用户基本信息、认证信息、用户类型和状态
- 救助信息(RescueInfo):记录流浪动物的详细信息、救助地点、健康状况、审核状态
- 领养申请(AdoptionApplication):记录领养申请信息、审核状态、跟踪记录
- 志愿者活动(VolunteerActivity):志愿者活动的基本信息、时间、地点、需求人数
- 志愿者报名(VolunteerApplication):志愿者报名信息、服务时间、技能特长、审核状态
- 捐赠信息(Donation):捐赠记录、捐赠类型(资金/物资)、使用明细
- 救助物资(RescueMaterial):物资信息、库存数量、入库出库记录
- 救助故事(RescueStory):救助故事内容、关联救助信息、点赞数
- 评论(Comment):评论内容、关联目标、回复关系
- 收藏(Favorite):用户收藏的救助信息和故事
- 系统消息(Message):系统通知、站内消息
- 系统设置(SystemSetting):平台配置信息
- 操作日志(OperationLog):管理员操作记录
2. 数据关系说明
- 用户表是核心关联表,与救助信息表为一对多关系(一个用户可发布多条救助信息)
- 用户表与领养申请表为一对多关系(一个用户可申请多个领养)
- 救助信息表与领养申请表为一对多关系(一个动物可被多个用户申请,最终仅一个通过)
- 志愿者活动表与志愿者报名表为一对多关系(一个活动可接收多个志愿者报名)
- 救助信息表与救助故事表为一对多关系(一个救助信息可关联多个故事)
- 其他表(捐赠信息表、物资表、消息表、评论表、收藏表)均通过用户ID或关联表ID建立外键关联,确保数据一致性
3. 数据库特性
- 使用 Sequelize ORM 进行数据库操作,支持事务处理
- 关键字段建立索引,优化查询性能
- 支持全文索引,实现智能搜索功能
- 数据迁移脚本化管理,便于版本控制
五、API 接口设计
1. API 通用规范
- 基础路径:
/api/v1 - 请求方式:GET(查询)、POST(新增)、PUT(修改)、DELETE(删除)
- 响应格式:统一 JSON 格式,包含状态码(code)、提示信息(message)、数据(data)
- 认证方式:JWT 令牌认证,登录成功后返回 token,后续请求通过 HTTP 请求头
Authorization: Bearer {token}携带 - 错误处理:统一的错误响应格式,包含错误码和错误信息
2. 核心 API 模块
| 模块 | 主要功能 | 接口数量 |
|---|---|---|
| 用户认证 | 用户注册、登录、个人信息管理 | 5+ |
| 救助信息 | 救助信息发布、浏览、审核、管理 | 10+ |
| 领养申请 | 领养申请提交、审核、跟踪 | 8+ |
| 志愿者 | 志愿者活动管理、报名审核 | 10+ |
| 捐赠管理 | 捐赠提交、公示、审核、使用明细 | 8+ |
| 救助故事 | 故事发布、浏览、审核 | 8+ |
| 物资管理 | 物资增删改查、入库出库、库存管理 | 10+ |
| 消息系统 | 系统通知、站内消息 | 5+ |
| 评论功能 | 评论添加、查看、管理 | 6+ |
| 收藏功能 | 收藏添加、取消、查询 | 4+ |
| 搜索功能 | 全文搜索、搜索建议 | 3+ |
| 管理员 | Dashboard 数据统计、批量操作 | 15+ |
| 系统设置 | 系统配置管理 | 5+ |
| 操作日志 | 日志查询、导出 | 3+ |
3. API 安全特性
- JWT 身份认证:基于 Token 的无状态认证机制
- 权限控制:基于用户角色的接口访问控制
- 请求限流:防止暴力破解和 DDoS 攻击
- XSS 防护:输入数据过滤和转义
- SQL 注入防护:使用 Sequelize ORM 参数化查询
- 输入验证:使用 express-validator 进行参数校验
- CORS 配置:跨域请求控制
六、前端设计
1. 页面结构设计
(1)公共页面
- 首页(
/):轮播图、热门救助、领养推荐、捐赠公示、救助故事入口 - 救助信息列表页(
/rescue/list):筛选条件、救助信息卡片列表、分页 - 救助信息详情页(
/rescue/detail/:id):动物信息、救助详情、领养申请按钮、评论区域 - 救助故事页(
/story/list):故事列表、故事详情(图文展示)、点赞评论 - 志愿者活动页(
/volunteer/activity/list):活动列表、活动详情、报名入口 - 捐赠页面(
/donation/public-list):捐赠公示、捐赠方式说明、捐赠信息提交表单 - 搜索页(
/search):全局搜索结果展示 - 登录/注册页(
/auth/login//auth/register):表单登录/注册
(2)普通用户页面
- 个人中心(
/user/profile):个人资料编辑、我的发布、我的申请、我的捐赠、我的收藏 - 发布救助信息页(
/rescue/publish):表单提交(含图片上传、富文本编辑) - 发布救助故事页(
/story/publish):故事编辑、图片上传 - 领养申请页(
/adoption/apply/:rescueId):申请表单填写 - 消息列表(
/message/list):系统消息查看、标记已读
(3)管理员后台页面(/admin/*)
- 登录页(
/admin/login):管理员专属登录 - 控制台(
/admin/dashboard):数据统计、待审核事项、数据趋势图表 - 救助信息管理页(
/admin/rescue):列表查询、审核操作、编辑/删除、批量操作 - 救助故事管理页(
/admin/story):故事审核、编辑/删除、评论管理 - 领养申请管理页(
/admin/adoption):申请列表、审核操作、跟踪记录编辑、批量审核 - 志愿者管理页(
/admin/volunteer):活动管理、报名审核、任务分配、批量审核 - 捐赠管理页(
/admin/donation):捐赠记录查询、公示编辑、使用明细录入、导出 - 物资管理页(
/admin/material):库存列表、新增物资、入库/出库操作、导出 - 用户管理页(
/admin/user):用户列表、状态编辑 - 系统配置页(
/admin/setting):平台基础信息配置、Logo 上传 - 操作日志页(
/admin/logs):日志查询、筛选、导出
2. 核心组件设计
通用组件
- 布局组件:
Layout(公共头部、底部、侧边栏)、AdminLayout(管理员后台布局) - 表单组件:
LoginForm、RegisterForm、RescuePublishForm、AdoptionApplyForm - 列表组件:
RescueList、AdoptionList、DonationList、MaterialList - 详情组件:
RescueDetail、StoryDetail - 通用组件:
Pagination(分页)、ImageUpload(图片上传)、ImagePreview(图片预览)、RichTextEditor(富文本编辑器)、EmptyData(空数据占位)
业务组件
- RescueCard:救助信息卡片,展示动物基本信息、紧急程度、操作按钮
- StoryCard:救助故事卡片,展示故事摘要、图片、点赞数
- CommentList:评论列表组件,支持嵌套回复、点赞、删除
- UserAvatar:用户头像组件,支持默认头像
3. 前端核心特性
- 状态管理:使用 Pinia 存储用户信息、Token、全局配置(如主题色、侧边栏状态)
- 路由守卫:通过 Vue Router 导航守卫拦截未登录用户访问需要权限的页面,跳转至登录页;管理员权限验证
- 请求封装:Axios 封装(请求拦截器添加 Token、响应拦截器统一处理错误、Token 刷新机制)
- UI 设计:基于 Ant Design Vue 定制主题(主色调选用温暖的橙色/粉色,契合公益平台调性),确保页面简洁、易用、有温度
- 响应式适配:使用 Flex/Grid 布局,适配 PC/移动端,确保不同设备下的浏览体验
- 路由懒加载:提升首屏加载速度
- 图片懒加载:优化页面性能
七、安全与性能
1. 安全特性
后端安全
- ✅ JWT 身份认证:基于 Token 的无状态认证,支持 Token 刷新
- ✅ 密码加密:使用 bcryptjs 进行密码哈希,安全存储用户密码
- ✅ 请求限流:使用 express-rate-limit 防止暴力破解和 DDoS 攻击
- ✅ XSS 防护:输入数据过滤和转义,防止跨站脚本攻击
- ✅ SQL 注入防护:使用 Sequelize ORM 参数化查询,防止 SQL 注入
- ✅ HTTP 安全头:使用 Helmet 设置安全响应头
- ✅ CORS 配置:跨域请求控制,保护 API 安全
- ✅ 输入验证:使用 express-validator 进行参数校验,防止非法输入
前端安全
- ✅ 路由权限控制:基于用户角色和登录状态的路由守卫
- ✅ Token 安全存储:Token 存储在内存或安全的存储位置
- ✅ XSS 防护:输出数据转义,防止 XSS 攻击
- ✅ CSRF 防护:使用 Token 验证防止跨站请求伪造
2. 性能优化
后端优化
- ✅ Redis 缓存:缓存热门救助信息、用户 Token、系统设置等,减少数据库查询压力
- ✅ 数据库索引:关键字段建立索引,优化查询性能
- ✅ 全文索引:支持全文搜索功能
- ✅ 图片处理:使用 Sharp 进行图片压缩和格式转换,减少存储空间和传输时间
- ✅ 日志管理:使用 Winston 进行日志记录,支持日志轮转和压缩
- ✅ 连接池:数据库连接池管理,提升并发性能
前端优化
- ✅ 路由懒加载:按需加载页面组件,减少首屏加载时间
- ✅ 图片懒加载:延迟加载图片,提升页面渲染速度
- ✅ 请求防抖/节流:优化搜索和筛选功能的性能
- ✅ 组件缓存:使用 keep-alive 缓存组件状态
- ✅ 代码分割:按模块分割代码,优化打包体积
八、开发与部署
1. 开发环境
- Node.js >= 16.0.0
- MySQL >= 8.0
- Redis >= 6.0(可选,用于缓存和会话存储)
- npm >= 8.0.0 或 yarn >= 1.22.0
2. 开发工具
- Git:版本控制
- ESLint + Prettier:代码规范和格式化
- Jest:单元测试框架
- Swagger:API 文档自动生成
- Postman:接口测试工具
- Nodemon:开发热重载
3. 部署建议
生产环境配置
- 环境变量:确保所有敏感信息通过环境变量配置
- 数据库:使用生产级 MySQL 配置,开启慢查询日志
- Redis:配置 Redis 持久化和高可用
- 日志:配置日志收集和监控(如 ELK 栈)
- 进程管理:使用 PM2 或类似工具管理 Node.js 进程
- 反向代理:使用 Nginx 作为反向代理,配置负载均衡
- HTTPS:配置 SSL/TLS 证书,启用 HTTPS
- CDN:静态资源和图片使用 CDN 加速
- 监控告警:配置系统监控和异常告警
部署流程
- 代码构建和打包
- 环境变量配置
- 数据库迁移
- 服务启动和健康检查
- 反向代理配置
- 监控和日志配置
九、项目特色与亮点
1. 功能完整性
- ✅ 全流程覆盖:从救助信息发布到领养完成的完整业务流程
- ✅ 多角色支持:游客、普通用户、管理员三种角色,满足不同需求
- ✅ 审核机制:完善的审核流程,确保信息质量和领养安全
- ✅ 跟踪记录:领养后的跟踪记录,确保动物得到妥善照顾
2. 技术先进性
- ✅ 现代化技术栈:Vue 3 + Node.js,采用最新的技术标准
- ✅ RESTful API:规范的接口设计,易于维护和扩展
- ✅ 微服务友好:无状态设计,支持水平扩展
- ✅ 完善的文档:Swagger API 文档,降低集成成本
3. 用户体验
- ✅ 响应式设计:支持 PC 端和移动端,适配不同设备
- ✅ 友好的 UI:基于 Ant Design Vue,界面美观易用
- ✅ 实时反馈:消息通知系统,及时告知用户审核结果
- ✅ 智能搜索:全文搜索功能,快速找到需要的信息
4. 安全可靠
- ✅ 多重安全防护:JWT 认证、XSS 防护、SQL 注入防护等
- ✅ 操作审计:完整的操作日志记录,便于追溯
- ✅ 数据备份:支持数据库备份和恢复
- ✅ 错误处理:完善的错误处理机制,提升系统稳定性
十、项目扩展
1. 功能扩展
- 地理位置服务:集成地图 API,支持救助信息地理位置展示和附近救助查询
- 在线支付:接入第三方支付(微信支付/支付宝),支持在线捐赠
- 移动端 APP:开发原生移动端应用,提升用户体验
- 智能推荐:基于用户行为的智能推荐系统
- 视频功能:支持视频上传和播放,丰富内容形式
- 多语言支持:支持多语言切换,扩大服务范围
2. 性能优化
- CDN 加速:静态资源和图片使用 CDN 加速
- 数据库优化:读写分离、分库分表
- 缓存策略:更细粒度的缓存策略,提升响应速度
- 前端优化:服务端渲染(SSR)或静态站点生成(SSG)
3. 技术升级
- 微服务架构:拆分为多个微服务,提升系统可扩展性
- 容器化部署:使用 Docker 和 Kubernetes,简化部署流程
- CI/CD:持续集成和持续部署,提升开发效率
- 监控告警:完善的监控和告警系统,及时发现问题
4. 生态建设
- 开放 API:提供开放 API,支持第三方应用集成
- 社区功能:用户社区、经验分享、互助交流
- 公益活动:组织线下公益活动,扩大影响力
- 合作伙伴:与救助组织、宠物医院等建立合作关系
十一、项目总结
PawGuard(爪印守护)是一个功能完整、技术先进、安全可靠的流浪猫狗救助平台。通过数字化手段,简化了救助流程,促进了流浪动物领养,汇聚了公益力量,为流浪动物救助事业提供了有力的技术支撑。
项目采用现代化的技术栈,遵循最佳实践,具有良好的可维护性和可扩展性。同时,项目注重用户体验和安全防护,为不同角色的用户提供了完善的功能支持。
⭐ 如果这个项目对你有帮助,欢迎 Star 和 Fork!