Adarsh Kumar

Hey, I'm Adarsh

Software Engineer making the complex feel simple—and the useful feel exceptional.

Back to experience

Full-stack project · Real-time messaging · Docker

Chat Application

A real-time chat product built around authenticated users, room-based conversations, persistent message history, and live presence and typing feedback.

Overview

A real-time chat product built around authenticated users, room-based conversations, persistent message history, and live presence and typing feedback.

Web clientFrontend container
Application serverNode.js · Express
Realtime transportSocket.IO
Persistence and local orchestrationMongoDB · Docker Compose

System architecture

A high-level view of the components and boundaries described by the project source and documentation.

01
Browser clientSign in · rooms · messages · presence
02
Express APIAuthentication · application endpoints
03
Socket.IO serverRoom events · message delivery · live indicators
04
MongoDBPersistent user and message data
05
Docker ComposeFrontend and backend containers run together

User and data flow

1Authenticate

Sign in and establish an authenticated session

2Join

Enter a room and connect to its realtime channel

3Send

Submit a message to the room over the live connection

4Deliver

Persist history and update connected room participants

Product capabilities

Room-based messaging

  • Create an interactive chat experience where conversations are organized into rooms.
  • Use Socket.IO for live message delivery rather than requiring the client to repeatedly poll for new messages.
  • Persist message history so conversations remain available beyond the immediate socket session.

Presence and interaction feedback

  • Expose live status for room participants.
  • Show typing indicators to make active conversation state visible.
  • Keep the message experience synchronized for connected room members.

Authentication and deployment

  • Use JWT-based authentication for protected chat workflows.
  • The repository has distinct Dockerfiles for frontend and backend and a Docker Compose file to orchestrate them together.
  • Compose provides a shared service environment so the UI and API can be run as a coordinated application stack.

Data model and domain

Conversation concepts

UserAuthenticated identity and live status
RoomConversation boundary for membership and events
MessageAuthor · room · content · persisted history
Socket sessionConnected client and realtime event channel

Authenticated users connect to rooms; messages are associated with a room and author, persisted by the backend, and broadcast to connected participants.

Fast data retrieval and page delivery

This portfolio case study is statically generated at build time, so opening it does not wait for a case-study API or database query. The notes below describe the project's own data path; they distinguish implemented behavior from scale-up opportunities.

Push instead of polling

Socket.IO delivers new room messages and interaction events to connected members, avoiding repeated client requests just to discover whether a message arrived.

Persistent history

MongoDB backs conversation history while sockets handle live delivery. The repository is private, so message-history query shape, indexes, pagination, and measured latency are not asserted here.

Growth path

For large rooms, use room-scoped history with bounded pagination and indexes aligned to the room/time sort; this is a scale-up recommendation, not a claim about the current private implementation.

Engineering decisions

Realtime transport

Socket.IO handles room-level bidirectional events for messages and interaction state; the API remains responsible for application and persistence operations.

Identity boundary

JWT-based authentication protects user and chat workflows; room access and user identity must be validated by the server.

Container separation

Frontend and backend have separate Docker build contexts and runtime images, composed together for a reproducible multi-service run.

Setup and delivery

  • The application is split into frontend and backend services; each has its own Dockerfile.
  • The root docker-compose.yml coordinates the services. The project description identifies MongoDB as the persistence layer.
  • Repository details are private, so this case study sticks to the architecture and capabilities already supplied for the portfolio rather than claiming unverified endpoint names or infrastructure settings.

Technology

Node.jsExpressMongoDBJWTSocket.IODockerDocker ComposeFrontend application

Explore the project

Open the project links above to review its source, documentation, or available deployment.

© 2026 Adarsh Kumar