Skip to content

IntelliCircle is a location-based professional networking platform built with React and Express that facilitates real-time connections through interest-based chat rooms powered by WebSockets.

License

Notifications You must be signed in to change notification settings

Dharm3112/IntelliCircle

Repository files navigation

IntelliCircle

IntelliCircle is a location-based professional networking platform designed to connect individuals through AI-powered chat rooms organized by shared interests and geographic proximity. It facilitates meaningful professional connections by allowing users to discover local colleagues, join interest-specific conversations, and network in real-time.

🚀 Features

  • Location-Based Discovery: Automatically detects user location to suggest relevant professional chat rooms nearby.
  • Real-Time Chat: Instant messaging powered by WebSockets, supporting concurrent users and live updates.
  • Interest Matching: categorization of rooms based on professional fields (Technology, Business, Healthcare, etc.).
  • Dynamic Room Creation: Users can create new rooms with specific topics and interest tags.
  • User Profiles: Customizable profiles with professional details, bios, and interest management.
  • Waitlist System: Integrated waitlist functionality for onboarding new users during beta.
  • Responsive Design: Fully mobile-responsive UI built with Tailwind CSS and Shadcn UI.

TB Architecture & Tech Stack

IntelliCircle utilizes a modern full-stack architecture with a monorepo-style structure sharing types between the frontend and backend.

Frontend

Backend

  • Server: Node.js & Express
  • Real-Time: Native ws (WebSocket) implementation
  • ORM: Drizzle ORM
  • Validation: Zod (Shared schemas between client/server)

Database

  • System: MySQL (via mysql2 driver)
  • Hosting: Provisioned for InfinityFree/Cloud based on configuration.

xC Folder Structure

├── client/                 # Frontend React Application
│   ├── src/
│   │   ├── components/     # Reusable UI components (shadcn/ui)
│   │   ├── hooks/          # Custom React hooks (use-toast, use-mobile)
│   │   ├── lib/            # Utilities (queryClient, tailwind merge)
│   │   ├── pages/          # Application routes (Home, Chat, Discover, Profile)
│   │   ├── App.tsx         # Main component & Routing logic
│   │   └── main.tsx        # Entry point
│   └── index.html
├── server/                 # Backend Node/Express Application
│   ├── db.ts               # Database connection configuration
│   ├── index.ts            # Entry point and server setup
│   ├── routes.ts           # API routes & WebSocket logic
│   ├── storage.ts          # Storage interface (Memory/DB abstraction)
│   └── vite.ts             # Vite middleware for dev mode
├── shared/                 # Code shared between frontend and backend
│   └── schema.ts           # Drizzle ORM schemas & Zod types
├── drizzle.config.ts       # Drizzle Kit configuration
├── package.json            # Project dependencies and scripts
└── render.yaml             # Render deployment configuration

🛠️ Getting Started

Prerequisites

  • Node.js (v20 or higher recommended)
  • A MySQL Database connection string

Installation

  1. Clone the repository:

    git clone https://github.com/yourusername/intellicircle.git
    cd intellicircle
  2. Install dependencies:

    npm install
  3. Environment Configuration: Create a .env file in the root directory (or use the existing one). You must provide a valid database URL.

    DATABASE_URL="mysql://user:password@host:port/database_name"
  4. Database Migration: Push the schema to your database using Drizzle Kit.

    npm run db:push

Running the Application

  • Development Mode: Runs the Express server with Vite middleware for hot-reloading the frontend.

    npm run dev

    The app will be available at http://localhost:5000.

  • Production Build: Builds the client and server for production.

    npm run build
    npm run start

🔌 API & WebSockets

REST API

  • POST /api/waitlist: Adds a user to the waitlist.
    • Payload: { fullName, email, profession, location, interests }

WebSocket Events

The chat system uses a JSON-based message protocol over WebSockets (/ws).

  • Client -> Server:

    • joinRoom: { type: 'joinRoom', roomId, username }
    • sendMessage: { type: 'sendMessage', roomId, content }
    • createRoom: { type: 'createRoom', name, interests }
    • getRooms: { type: 'getRooms' }
    • ping: { type: 'ping' } (Keep-alive)
  • Server -> Client:

    • rooms: Returns list of available rooms.
    • message: Broadcasts a new message to a room.
    • roomJoined: Returns full room history/details upon joining.
    • participantsUpdate: Updates the list of active users in a room.

💾 Database Schema

The database schema is defined in shared/schema.ts and includes:

  • waitlist: Stores prospective users (email, interests, etc.).
  • users: Stores chat users.
  • chatRooms: Active chat rooms and their metadata.
  • messages: History of messages per room.
  • participants: Junction table for users in rooms.

☁️ Deployment

The project is configured for deployment on various platforms:

  • Render: Use render.yaml for a blueprint deployment of the web service and database.
  • Netlify: netlify.toml handles the client-side build settings (npm run build:client).
  • Replit: .replit and replit.md are configured for instant cloud development.

🤝 Contributing

Contributions are welcome! Please follow these steps:

  1. Fork the project.
  2. Create your feature branch (git checkout -b feature/AmazingFeature).
  3. Commit your changes (git commit -m 'Add some AmazingFeature').
  4. Push to the branch (git push origin feature/AmazingFeature).
  5. Open a Pull Request.

📄 License

Distributed under the MIT License. See LICENSE for more information.

Created by Dharm Patel & Pushti Kadia

About

IntelliCircle is a location-based professional networking platform built with React and Express that facilitates real-time connections through interest-based chat rooms powered by WebSockets.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 2

  •  
  •  

Languages