How shivaay100/chatwire works
ChatWire is a real-time messaging web app. Users sign up or log in, then browse contacts or existing chat partners, load conversation history, and send text or image messages; the backend persists messages and dispatches them to connected recipients. The React client keeps auth/chat state and uses REST plus Socket.IO. The README also documents responsive UI and CORS support. Some route, page, and socket wiring is inferred only where explicit in sampled code or documented; unsampled subsystem paths use their enclosing directories.
Main entry points: message.controller.js Message operations · auth.controller.js Auth operations · socket.js Socket service · useAuthStore.js Auth state
Components 22
Web client
- App routing
frontend/src/App.jsx - Login and signup
frontend/src/pages - Chat screen
frontend/src/pages/ChatPage.jsx - Chat components
frontend/src/components - Auth state
frontend/src/store/useAuthStore.js - Chat state
frontend/src/store/useChatStore.js - HTTP client
frontend/src/lib/axios.js
Authentication
- Auth routes
backend/src/routes/auth.route.js - Auth operations
backend/src/controllers/auth.controller.js - Route protection
backend/src/middleware/auth.middleware.js - Socket authentication
backend/src/middleware/socket.auth.middleware.js
Messaging
- Message operations
backend/src/controllers/message.controller.js - Message routes
backend/src/routes/message.route.js - Socket service
backend/src/lib/socket.js
Infrastructure
- Express server
backend/src/server.js - User records
backend/src/models/User.js - Message records
backend/src/models/Message.js - Welcome email
backend/src/emails/emailHandlers.js
Other components
- User
- Cloudinary media
backend/src/lib/cloudinary.js - Resend service
backend/src/lib/resend.js - MongoDB
Connections 30
- User → App routing: uses
- App routing → Auth state: checks auth
- App routing → Chat screen: renders
- App routing → Login and signup: routes
- Login and signup → Auth state: submits credentials
- Chat screen → Chat state: loads and sends
- Chat screen → Chat components: renders
- Auth state → HTTP client: requests auth
- Chat state → HTTP client: requests messages
- HTTP client → Express server: HTTP requests
- Auth state → Socket service: opens socket
- Express server → Auth routes: mounts
- Express server → Message routes: mounts
- Auth routes → Auth operations: dispatches
- Auth routes → Route protection: protects routes
- Route protection → Auth operations: authorizes
- Message routes → Message operations: dispatches
- Auth operations → User records: reads and writes
- Message operations → User records: reads users
- Message operations → Message records: reads and writes
- Auth operations → Cloudinary media: uploads profile image
- Message operations → Cloudinary media: uploads message image
- Auth operations → Welcome email: sends welcome email
- Welcome email → Resend service: sends email
- Socket service → Socket authentication: authenticates connections
- Message operations → Socket service: emits new message
- Socket service → Auth state: reports online users
- Socket service → Chat state: delivers new messages
- User records → MongoDB: persists users
- Message records → MongoDB: persists messages