How vinith-krish/nexchat-full-stack-mern-app works
NexChat supports account recovery and profile setup, skill-based collaborator discovery, and conversations with persisted, encrypted messages, attachments, read/delete events, and online presence. The main path runs from browser pages through React contexts to the Express routes and controllers; Socket.IO carries presence and message events. README documents capabilities beyond the sampled excerpts, so unsampled subsystem wiring is shown only where the routes and documented architecture support it.
Main entry points: messageController.js Message controller · server.js Express and Socket.IO · AuthContext.jsx Auth context · userRoutes.js Account routes
Components 19
Browser client
- App routes
client/src/App.jsx - Auth context
client/context/AuthContext.jsx - Chat context
client/context/ChatContext.jsx - Auth and profile
client/src/pages - Chat workspace
client/src/pages/HomePage.jsx - Conversation UI
client/src/components/ChatContainer.jsx - Collaborator discovery
client/src/components/CollaborationDiscovery.jsx
Accounts and discovery
- Account routes
server/routes/userRoutes.js - Account controller
server/controllers/userController.js - Cookie auth
server/middleware/auth.js
Messaging and realtime
- Express and Socket.IO
server/server.js - Message routes
server/routes/messageRoutes.js - Message controller
server/controllers/messageController.js
Persistence and integrations
- User records
server/models/User.js - Message records
server/models/Message.js - Message encryption
server/lib/encryption.js
Other components
- Browser user
- MongoDB
- Cloudinary
Connections 28
- Browser user → App routes: uses
- App routes → Auth and profile: routes to
- App routes → Chat workspace: routes to
- Auth and profile → Auth context: authenticates and updates
- Chat workspace → Chat context: loads conversations
- Chat workspace → Collaborator discovery: opens discovery
- Conversation UI → Chat context: sends and reads
- Auth context → Account routes: HTTP requests
- Chat context → Message routes: HTTP requests
- Auth context → Express and Socket.IO: opens socket
- Express and Socket.IO → Auth context: presence events
- Express and Socket.IO → Chat context: message events
- Express and Socket.IO → Account routes: mounts routes
- Express and Socket.IO → Message routes: mounts routes
- Account routes → Cookie auth: protects requests
- Account routes → Account controller: dispatches account actions
- Message routes → Cookie auth: protects requests
- Message routes → Message controller: dispatches message actions
- Account controller → User records: reads and updates
- Account controller → Cloudinary: uploads profile image
- Cookie auth → User records: loads session user
- Message controller → User records: checks users and skills
- Message controller → Message records: reads and writes messages
- Message controller → Message encryption: encrypts and decrypts
- Message controller → Cloudinary: uploads attachments
- Message controller → Express and Socket.IO: dispatches socket events
- User records → MongoDB: persists
- Message records → MongoDB: persists