How 1blixen/ayman-mohamed---node-c46-sun-wed-830-pm-online---assignment-social-medi-app works
This is a TypeScript/Express social-media backend. Its main request path is HTTP client → mounted feature controller → service logic → MongoDB/Redis or supporting integrations → JSON response; authentication middleware verifies tokens and sessions along the way. The feature map covers account confirmation and login, profiles and friendships, posts and follows, and chat/realtime infrastructure. The README gives no product detail, so feature scope comes from the source tree and indexed imports; chat event wiring is unsampled and shown only as unverified.
Main entry points: bootstrap.ts App Bootstrap · auth.services.ts Auth Service · auth.middleware.ts Token Authentication · post.controller.ts Post Routes
Components 33
Server Runtime
- App Bootstrap
src/bootstrap.ts
Accounts & Social
- Auth Routes
src/modules/auth/auth.controller.ts - Auth Service
src/modules/auth/auth.services.ts - Auth Validation
src/modules/auth/auth.validation.ts - User Routes
src/modules/user/user.controller.ts - User & Friends
src/modules/user/user.services.ts - User Records
src/modules/user/models/user.model.ts - Friend Requests
src/modules/user/models/friendRequest.model.ts - Follow Routes
src/modules/follow/follow.controller.ts - Follow Service
src/modules/follow/follow.services.ts - Follow Records
src/modules/follow/follow.model.ts
Posts & Feed
- Post Routes
src/modules/post/post.controller.ts - Post & Feed Service
src/modules/post/post.services.ts - Post Records
src/modules/post/post.model.ts - Post Validation
src/modules/post/post.validation.ts
Chat & Realtime
- Chat Routes
src/modules/chat/chat.controller.ts - Chat Service
src/modules/chat/chat.services.ts - Socket Chat Service
src/modules/chat/chat.socket.services.ts - Chat Events
src/modules/chat/chat.events.ts - Chat Gateway
src/modules/chat/chat.gateway.ts - Socket Gateway
src/modules/gateway/gateway.ts - Chat Records
src/modules/chat/models/chat.model.ts
Shared Infrastructure
- Token Authentication
src/middlewares/auth.middleware.ts - MongoDB
src/db/mongoose.connection.ts - Redis
src/db/redis.connection.ts - JWT Utilities
src/utils/security/token.ts - Redis Key Helpers
src/utils/redis/redis.services.ts - Email Delivery
src/utils/email/sendEmail.ts - OTP Generator
src/utils/email/otp.ts - Email Template
src/utils/email/template.ts - Request Validation
src/middlewares/validation.middleware.ts - JSON Response
src/utils/successRes.ts
Other components
- HTTP Client
Connections 48
- HTTP Client → App Bootstrap: sends requests
src/bootstrap.ts - App Bootstrap → Auth Routes: mounts routes
src/bootstrap.ts - App Bootstrap → User Routes: mounts routes
src/bootstrap.ts - App Bootstrap → Post Routes: mounts routes
src/bootstrap.ts - App Bootstrap → Follow Routes: mounts routes
src/bootstrap.ts - App Bootstrap → Chat Routes: mounts routes
src/bootstrap.ts - App Bootstrap → MongoDB: connects
src/bootstrap.ts - App Bootstrap → Redis: connects
src/bootstrap.ts - App Bootstrap → Socket Gateway: initializes sockets
src/bootstrap.ts - Auth Routes → Auth Service: calls
src/modules/auth/auth.controller.ts - Auth Routes → Auth Validation: validates with
src/modules/auth/auth.controller.ts - Auth Routes → Request Validation: uses
src/modules/auth/auth.controller.ts - Auth Routes → JSON Response: returns JSON
src/modules/auth/auth.controller.ts - Auth Service → User Records: reads and creates
src/modules/auth/auth.services.ts - Auth Service → Redis: stores OTP and session
src/modules/auth/auth.services.ts - Auth Service → Redis Key Helpers: uses keys
src/modules/auth/auth.services.ts - Auth Service → Email Delivery: sends confirmation
src/modules/auth/auth.services.ts - Auth Service → OTP Generator: generates code
src/modules/auth/auth.services.ts - Auth Service → Email Template: renders email
src/modules/auth/auth.services.ts - Auth Service → JWT Utilities: creates tokens
src/modules/auth/auth.services.ts - Token Authentication → JWT Utilities: verifies token
src/middlewares/auth.middleware.ts - Token Authentication → User Records: loads user
src/middlewares/auth.middleware.ts - Token Authentication → Redis: checks session
src/middlewares/auth.middleware.ts - Token Authentication → Redis Key Helpers: builds session key
src/middlewares/auth.middleware.ts - User Routes → User & Friends: calls
src/modules/user/user.controller.ts - User Routes → Token Authentication: guards routes
src/modules/user/user.controller.ts - User Routes → Request Validation: validates with
src/modules/user/user.controller.ts - User Routes → JSON Response: returns JSON
src/modules/user/user.controller.ts - User & Friends → User Records: reads users
src/modules/user/user.services.ts - User & Friends → Friend Requests: manages requests
src/modules/user/user.services.ts - User & Friends → Follow Records: checks follows
src/modules/user/user.services.ts - Follow Routes → Follow Service: calls
src/modules/follow/follow.controller.ts - Follow Routes → Token Authentication: guards routes
src/modules/follow/follow.controller.ts - Follow Routes → JSON Response: returns JSON
src/modules/follow/follow.controller.ts - Follow Service → Follow Records: updates records
src/modules/follow/follow.services.ts - Follow Service → User Records: checks users
src/modules/follow/follow.services.ts - Post Routes → Post & Feed Service: calls
src/modules/post/post.controller.ts - Post Routes → Token Authentication: guards routes
src/modules/post/post.controller.ts - Post Routes → Request Validation: validates with
src/modules/post/post.controller.ts - Post Routes → Post Validation: uses schemas
src/modules/post/post.controller.ts - Post Routes → JSON Response: returns JSON
src/modules/post/post.controller.ts - Post & Feed Service → Post Records: reads and writes
src/modules/post/post.services.ts - Post & Feed Service → Friend Requests: checks friendship
src/modules/post/post.services.ts - Post & Feed Service → User & Friends: lists friends
src/modules/post/post.services.ts - Chat Routes → Chat Service: calls
src/modules/chat/chat.controller.ts - Chat Routes → Token Authentication: guards routes
src/modules/chat/chat.controller.ts - Chat Routes → Chat Records: uses records
src/modules/chat/chat.controller.ts - Chat Routes → JSON Response: returns JSON
src/modules/chat/chat.controller.ts