Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

10 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Project Name: StreamChat


Overview:

StreamChat is a real-time chat application built using the MERN stack. It provides seamless real-time messaging, user authentication, profile updates, and a responsive design. Features include online/offline status, cloud-based media storage, and chat persistence, making it a robust platform for communication.


Mission and Objectives

Mission:

To develop a scalable, user-friendly, and interactive real-time chat application with advanced features for seamless communication.

Objectives:

  1. Implement secure user authentication and profile management.
  2. Provide real-time messaging using Socket.IO.
  3. Enable profile customization with support for profile picture updates.
  4. Design a fully responsive UI for various devices.
  5. Use cloud storage for managing user media and persistent chat data.
  6. Deploy the application for global accessibility.

Technology Stack

Frontend

  1. React.js

    • Why: Facilitates dynamic UI rendering and interactive interfaces.
    • Use Case: Builds the chat interface, user profile pages, and message feed.
  2. Tailwind CSS

    • Why: Simplifies styling with utility-first classes.
    • Use Case: Creates a responsive, modern design for both desktop and mobile.

Backend

  1. Node.js

    • Why: Enables scalable server-side execution.
    • Use Case: Handles API requests, real-time connections, and user management.
  2. Express.js

    • Why: Simplifies routing and middleware handling.
    • Use Case: Manages APIs for user authentication and messaging.
  3. Socket.IO

    • Why: Powers real-time, bi-directional communication.
    • Use Case: Handles real-time messaging and online/offline status.

Database

  1. MongoDB

    • Why: A NoSQL database ideal for dynamic and scalable data storage.
    • Use Case: Stores user data, messages, and session details.
  2. Mongoose

    • Why: Simplifies MongoDB interactions with schema-based models.
    • Use Case: Manages structured data relationships for the app.

Authentication

  1. JWT (JSON Web Tokens)

    • Why: Provides secure token-based authentication.
    • Use Case: Authenticates and authorizes user access.
  2. Bcrypt.js

    • Why: Hashes sensitive information like passwords.
    • Use Case: Secures user credentials.

Deployment

  1. Heroku/AWS

    • Why: For scalable application hosting.
    • Use Case: Deploys the app and database.
  2. Cloudinary

    • Why: Offers cloud-based storage for media files.
    • Use Case: Stores profile pictures and other user-uploaded files.

Workflow Overview

This section illustrates the complete workflow for users and admins in the StreamChat application, covering all major functionalities such as real-time messaging, user authentication, profile updates, and chat persistence.


Flowchart

This section provides a visual representation of the overall flow of the StreamChat application, including user registration, login, real-time messaging, profile updates, and managing chat persistence. diagram-export-12-12-2024-10_22_23-AM


System Architecture

This section demonstrates the high-level architecture of the StreamChat app, showcasing the interaction between the frontend, backend, database, and external services like Cloudinary for media storage and Socket.IO for real-time messaging. diagram-export-12-12-2024-11_47_57-AM


Sequence Diagram

This section presents the sequence of interactions between the different components of the StreamChat application, including users, the backend system, real-time chat handling, and cloud-based media storage. diagram-export-12-12-2024-10_26_46-AM


Database Design

This section presents the database schema, highlighting the following:

  • The structure of Users, Messages, and Chats collections.
  • Relationships between collections (e.g., userID in Messages links to the Users collection, chatID links to the Chats collection). diagram-export-12-12-2024-10_26_11-AM

Project Structure for Feature Implementation

This project is structured to ensure a systematic and incremental development process. Each week builds upon the previous deliverables, enabling a smooth transition from basic functionalities to advanced features.


NOTE: Participants are encouraged to customize the user interface and incorporate additional features into the application. These modifications allow participants to demonstrate creativity, improve usability, and enhance the functionality of the project. Such enhancements align with the project’s objective of fostering innovative thinking while providing a personalized learning experience.


Week-by-Week Plan


Week 1: Project Setup


Week 2: User Authentication


Week 3: Real-Time Messaging


Week 4: Profile Management


Week 5: UI Enhancements and Error Handling


Week 6: Deployment

  • Goal: Deploy the application and ensure it’s production-ready.

  • Tasks:

    1. Deploy the app using Heroku or AWS.
    2. Test all features and finalize the project.
  • Deliverables:

    • Live StreamChat app accessible online.

Checkout the screenshots for your reference

Screenshot (144) Screenshot (145) Screenshot (146) Screenshot (149) Screenshot (150) Screenshot (151) Screenshot (152) Screenshot (142)

References:

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages