Zhiyuan Song
← Home

AnimeHub

A combined anime forum: fetch metadata from Jikan (unofficial MyAnimeList API) with server-side caching; user ratings, nested comments, posts and tags, favorites, light personalization, and WebSocket notifications for replies and mentions. i18next for Chinese / English / Japanese.

Frontend and backend live in a monorepo-style layout (animehub-backend / animehub-frontend); Heroku (API) and Netlify (static + routing) experiments existed—see the repository for what still applies.

Features

Search & content

  • Anime search with multi-condition filters (genre, status, score, …)
  • Detail pages: synopsis, scores, trailers, etc.; multilingual search and translated queries
  • Server cache for hot titles (e.g. NodeCache + TTL)

Community

  • User ratings; nested comments and likes
  • Posts: rich text (React Quill), tags, pagination and infinite scroll
  • Favorite anime and posts; profile aggregates posts, comments, and favorites

Recommendations & notifications

  • Recommendations from browsing / favorites, plus a daily pick
  • Socket.io push; persisted notification center

Experience

  • Responsive layout (desktop and mobile)

Tech stack

Frontend

  • React 18, React Router 6
  • Redux Toolkit
  • MUI 5
  • Axios, socket.io-client, React Quill, infinite-scroll helpers
  • i18next (http-backend, language detection)

Backend

  • Node.js, Express
  • MongoDB, Mongoose
  • JWT access + refresh, bcrypt
  • Socket.io, Multer, Nodemailer, node-cache

Implementation notes (summary)

  • Auth: short-lived access token + long-lived refresh; hashed passwords
  • Anime detail: Jikan v4 by id; serve from memory cache when hit
  • Posts: FormData with title, rich body, tag ids; create tags on the fly when needed
  • Notifications: persist then emit to recipient rooms; populate sender and linked comment when listing

See README and source for concrete routes; this page avoids long embedded snippets that drift from the repo.

Quick start

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

Create .env under animehub-backend, for example:

MONGO_URI=mongodb://localhost:27017/animehub
JWT_SECRET=...
JWT_REFRESH_SECRET=...
PORT=5000
# Email (Mailjet, etc.) per README
cd animehub-backend && npm start
cd ../animehub-frontend && npm start

Ports may differ from the usual CRA 3000—follow local package.json scripts.

Directory layout (summary)

AnimeHub/
├── animehub-backend/     # Express: config, controllers, models, routes, utils, server.js
├── animehub-frontend/    # React: public, src/components, redux, …
├── package.json          # root workspace / scripts (if present)
└── README.md

Contributing & license

Fork and open PRs; branches and commit style should follow the README contributor notes.

License: MIT.

Contact: songzhiyuan98@gmail.com