Skip to content

spec-nith/ComConnect

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

✨ COMCONNECT ✨

πŸ† An Event Organizing Application

πŸ“Œ Project Overview

This is a scalable, real-time workspace collaboration and event tracking system built with MariaDB, MongoDB, Redis, Kafka, WebSockets, Firebase, and Dockerized microservices.

Key Features

  • βœ… Real-time chat via WebSockets

  • βœ… Workspace management with granular roles

  • βœ… Task tracking integrated with MongoDB

  • βœ… Geolocation tracking for event organizers

  • βœ… Job fetching via Google Auth & Gmail API

  • βœ… Event streaming with Kafka

  • βœ… High Availability & Scalability using Docker

  • πŸš€ Live Demo

πŸ”— Check out the deployed application here: Com Connect

πŸ”₯ Experience real-time collaboration, seamless chat, and powerful workspace management right in your browser!


πŸ— High-Level Architecture

πŸ“Œ System Architecture Diagram

                           β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
                           β”‚     Frontend (React)     β”‚
                           β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
                                      β”‚
                β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
                β”‚          Backend (Node.js)           β”‚
                β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
                           β”‚               β”‚
        β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”     β”Œβ”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
        β”‚    MariaDB (SQL)    β”‚     β”‚   MongoDB (NoSQL)  β”‚
        β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜     β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
                           β”‚
        β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
        β”‚           Redis (Elasticache)      β”‚
        β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
                           β”‚
        β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
        β”‚       Kafka + Zookeeper (EC2)      β”‚
        β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
                           β”‚
        β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
        β”‚       WebSockets                   β”‚
        β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

πŸ› Database Design

The system uses MariaDB for relational data and MongoDB for real-time operations.
MariaDB ensures ACID compliance, while MongoDB supports flexible, fast data access.

πŸ“Œ RDBMS Schema (MariaDB)

Users Table

CREATE TABLE users (
    id BIGINT PRIMARY KEY AUTO_INCREMENT,
    uuid VARCHAR(36) NOT NULL UNIQUE,
    name VARCHAR(100) NOT NULL,
    email VARCHAR(255) UNIQUE NOT NULL,
    password_hash VARCHAR(255) NOT NULL,
    profile_pic VARCHAR(255) DEFAULT 'https://icon-library.com/images/anonymous-avatar-icon/anonymous-avatar-icon-25.jpg',
    is_admin BOOLEAN DEFAULT FALSE,
    fcm_token VARCHAR(255),
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
    INDEX idx_email (email),
    INDEX idx_uuid (uuid)
);

Workspaces Table

CREATE TABLE workspaces (
    id BIGINT PRIMARY KEY AUTO_INCREMENT,
    uuid VARCHAR(36) NOT NULL UNIQUE,
    name VARCHAR(255) NOT NULL,
    description TEXT,
    created_by BIGINT NOT NULL,
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
    FOREIGN KEY (created_by) REFERENCES users(id) ON DELETE CASCADE,
    INDEX idx_uuid (uuid)
);

πŸ“Œ ER Diagram

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”       β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚   users      β”‚ 1    *β”‚ workspaces   β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜       β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
       β”‚                    β”‚
       β”‚ *                * β”‚
       β”‚                    β”‚
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”       β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚workspace_rolesβ”‚ 1    *β”‚workspace_membersβ”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜       β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

πŸ“‰ Low-Level Design

Each microservice is designed for modularity and separation of concerns.

πŸ“Œ Microservices Overview

Service Technology Stack Functionality
Auth Service Node.js, JWT, MariaDB Handles authentication & authorization
Chat Service Node.js, WebSockets, MongoDB Real-time messaging
Geo Service Node.js, WebSockets, Tracks organizers in real-time
Job Service Node.js, Gmail API, MongoDB Fetches job listings
Notification Service Firebase, Kafka ,Redis Push notifications & real-time updates

βš™οΈ Tech Stack

Component Technology Used
Frontend React, Tailwind
Backend Node.js, Express.js
Database (SQL) MariaDB (ACID)
Database (NoSQL) MongoDB (Flexible)
Cache Redis (Elasticache)
Message Queue Kafka (on EC2)
Real-Time WebSockets
Notifications Firebase
Containerization Docker
Deployment AWS EC2, Elasticache

πŸš€ Deployment Strategy

πŸ“Œ Using Docker Compose

version: "3.9"
services:
  mariadb:
    image: mariadb:latest
    restart: always
    environment:
      MYSQL_ROOT_PASSWORD: root
      MYSQL_DATABASE: workspace_db
    ports:
      - "3306:3306"
  
  mongodb:
    image: mongo:latest
    restart: always
    ports:
      - "27017:27017"
  
  redis:
    image: redis:latest
    restart: always
    ports:
      - "6379:6379"

  backend:
    build: .
    restart: always
    depends_on:
      - mariadb
      - mongodb
      - redis

πŸ“‘ WebSocket Implementation

πŸ“Œ Real-Time Location Tracking

socket.on('location-update', (data) => {
    console.log(`User ${data.userId} moved to ${data.latitude}, ${data.longitude}`);
    redisClient.set(`location:${data.userId}`, JSON.stringify(data));
});

πŸ’» How to Run Locally

# Clone the repository
git clone https://github.com/your-repo/workspace-system.git

# Navigate to the project
cd comconnect

# Start services using Docker
1>npm install in frontend , backend directories

using docker : docker-compose up --build 
or 
cd frontend --> npm run start
cd backend --> npm run start

 

πŸ“„ License

This project is licensed under MIT License.


About

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 9

Languages