Skip to content

爪印守护(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(管理员后台布局)
  • 表单组件LoginFormRegisterFormRescuePublishFormAdoptionApplyForm
  • 列表组件RescueListAdoptionListDonationListMaterialList
  • 详情组件RescueDetailStoryDetail
  • 通用组件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. 部署建议

生产环境配置

  1. 环境变量:确保所有敏感信息通过环境变量配置
  2. 数据库:使用生产级 MySQL 配置,开启慢查询日志
  3. Redis:配置 Redis 持久化和高可用
  4. 日志:配置日志收集和监控(如 ELK 栈)
  5. 进程管理:使用 PM2 或类似工具管理 Node.js 进程
  6. 反向代理:使用 Nginx 作为反向代理,配置负载均衡
  7. HTTPS:配置 SSL/TLS 证书,启用 HTTPS
  8. CDN:静态资源和图片使用 CDN 加速
  9. 监控告警:配置系统监控和异常告警

部署流程

  1. 代码构建和打包
  2. 环境变量配置
  3. 数据库迁移
  4. 服务启动和健康检查
  5. 反向代理配置
  6. 监控和日志配置

九、项目特色与亮点

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