Zhiyuan Song
← 返回首页

动漫中心(AnimeHub)

综合型动漫论坛:基于 Jikan(MyAnimeList 非官方 API)拉取番剧元数据与详情,配合服务端缓存降低延迟;站内提供用户评分、多级评论、帖子与标签、收藏夹、个性化推荐与WebSocket 实时通知(评论、回复等)。支持中 / 英 / 日多语言(i18next)。

前后端分仓于 monorepo 式目录(animehub-backend / animehub-frontend);曾配置 Heroku(后端)与 Netlify(前端静态与路由)等部署实验,具体以仓库内说明为准。

功能特性

检索与内容

  • 番剧搜索与多条件筛选(类型、状态、评分等)
  • 详情页:简介、评分、预告片等;中英检索与自动翻译查询
  • 服务端缓存热点番剧数据(如 NodeCache + TTL)

社区与互动

  • 用户评分;多级嵌套评论与点赞
  • 帖子:富文本(React Quill)、标签、分页与无限滚动
  • 收藏动漫与帖子;个人中心汇总帖子、评论与收藏

推荐与通知

  • 基于浏览与收藏历史的推荐、每日推荐
  • Socket.io 推送;通知中心持久化

体验

  • 响应式布局(桌面与移动)

技术栈

前端

  • React 18、React Router 6
  • Redux Toolkit
  • MUI(Material UI)5
  • Axios、Socket.io-client、React Quill、无限滚动组件
  • i18next(含 http-backend、浏览器语言探测)

后端

  • Node.js、Express
  • MongoDB、Mongoose
  • JWT 访问令牌 + 刷新令牌、bcrypt
  • Socket.io、Multer、Nodemailer(邮件)、node-cache

实现要点(摘要)

  • 认证:登录签发短期 access token 与长期 refresh token;密码哈希入库
  • 番剧详情:按 id 请求 Jikan v4,命中内存缓存则直接返回
  • 帖子:FormData 提交标题、富文本内容与标签 id;新标签可先创建再关联
  • 通知:写库后向 recipient 房间 emit,前端拉取列表时 populate 发送者与关联评论

具体接口与代码片段见仓库 README 与源码;本页不嵌长代码块以免与仓库脱节。

快速开始

git clone https://github.com/songzhiyuan98/Animehub.git
cd Animehub
cd animehub-backend && npm install
cd ../animehub-frontend && npm install

animehub-backend 创建 .env,示例字段:

MONGO_URI=mongodb://localhost:27017/animehub
JWT_SECRET=...
JWT_REFRESH_SECRET=...
PORT=5000
# 邮件(Mailjet 等)按 README 填写
cd animehub-backend && npm start
cd ../animehub-frontend && npm start

README 写前端默认端口与后端端口可能与常见 Create React App(3000)不同,以本地 package.json 脚本为准。

目录结构(摘要)

AnimeHub/
├── animehub-backend/     # Express:config、controllers、models、routes、utils、server.js
├── animehub-frontend/    # React:public、src/components、redux、…
├── package.json          # 根 workspace / 脚本(若有)
└── README.md

贡献与许可

欢迎 Fork 后提 PR;分支与提交信息建议与 README 贡献指南一致。

License:MIT。

联系:songzhiyuan98@gmail.com