learn
backend/

backend/

Express API plus the socket server, in one process.

One Node process serves HTTP and realtime together: index.js mounts the route modules, starts the socket server on the same HTTP server, and listens. Everything protected goes through the auth guard; uploads branch into Multer before reaching their controllers.

What it owns

  • The REST API: eight route modules under /api
  • The realtime server: rooms, chat, typing, presence, live pushes
  • Mongoose models and the MongoDB connection
  • Upload handling: Multer with Cloudinary or local fallback

Files

File list and purposes from the folder README.

FilePurpose
index.jsEntry point — app, routes, socket, listen.
config/Database, Redis, and Cloudinary setup.
routes/One Express router per area.
controllers/Request handling, one module per area.
models/Six Mongoose schemas.
middleware/Auth guard, rate limits, upload handling.
utils/The Socket.io server.

Dependencies

LibraryVersion rangeWhy it is used here
dotenv^16.5.0First line of index.js.
Socket.io Redis adapter^8.3.0Attached to the io server in utils/socket.js when pub/sub are ready.
ioredis^5.11.1Presence hash plus the pub/sub pair in config/redis.js.
Socket.io^4.7.4Server, rooms, and event handlers in utils/socket.js.
cookie-parser^1.4.7Cookie parsing in index.js, read by authMiddleware.
cors^2.8.5Permissive CORS in index.js and utils/socket.js.
Express^5.1.0App, router mounting, and static uploads in index.js.
express-rate-limit^8.5.2Auth, connection, search, post, and job limiters in middleware/rateLimiter.js.
Mongoose^8.14.1All six models plus the database.js connector.
Cloudinary^1.41.3Configuration in config/cloudinary.js; upload targets in middleware/upload.js.
Multer^2.0.1Avatar, post, cover, and document uploaders in middleware/upload.js.
multer-storage-cloudinary^4.0.0Cloud storage engines in middleware/upload.js.
Nodemailer^9.0.3Admin plus confirmation mails in contactController.js.
bcryptjs^2.4.3Pre-save hash and password check in models/User.js.
better-authDeclared but not used in source^1.6.23Declared in both manifests but never imported in any source file; authentication is JWT plus bcrypt.
jsonwebtoken^9.0.2Token issue in userController and authController; verified in authMiddleware.
validator^13.11.0Field validation in models/User.js.

Dependencies as of commit cdef8af.

Backend overview
BrowserAPIRealtimeCacheDatabaseShareddurableephemeral

Talks to

Sources: backend/index.js, backend/README.md (documented at commit cdef8af)

On this page