Skip to content

Pudi-Sravan/slack-clone

Repository files navigation

Slack Clone

Tech Stacks Used

  • Vite React(for frontend)
  • Node.js (for backend)
  • Supabase (as a backend service)
  • Docker (for containerization)

Features Overview

Authentication

  • Users can login using OAuth with Google and GitHub, or using their email and password.
  • Password reset functionality via email.

Homepage Features

  1. Todo List

    • Create, view, and delete personal todo lists.
  2. Google Calendar Integration

    • Authenticate with Google to manage events in the primary Google Calendar linked to the user's account.
  3. Direct Messaging

    • Initiate and manage conversations, share text and images (up to 50MB).
  4. Channel Management

    • Create channels, add/remove admins, assign/delete tasks to channel members and assign task to any member of the channel also, direct message members,channel deletion.
    • Role-based access (Admin, Member).
  5. Search Functionality

    • Search for channels and users(with whom conversation is started) within the Slack Clone.
  6. Responsive Design

    • User interface adapts to different screen sizes for optimal user experience.

Setup Instructions

Environment Variables

  • Create a .env file in the root directory of your project and define the following variables: VITE_SUPABASE_URL=<your_supabase_project_url> VITE_SUPABASE_KEY=<your_supabase_api_key> VITE_Backend_Port=<backend_port_number>
  • Create a .env file in the Back_end directory with following variables: Port= EMAIL_USER= EMAIL_PASS= CLIENT_ID= CLIENT_SECRET= REDIRECT_URL= API_KEY= SESSION_SECRET=

Database Tables

  1. user_data:

    • Columns:
      • id (uuid)
      • updated_at (timestamp)
      • username (text)
      • avatar_url (text)
      • email (text)
      • phone (text)
      • hashed_password (text)
    • Purpose: Stores user information including username, avatar URL, email, phone number, and hashed password.
  2. direct_messages:

    • Columns:
      • id (uuid)
      • created_at (timestamp)
      • dm_chats (json or jsonb)
    • Purpose: Stores contact information related to direct messaging.
  3. chats_dm:

    • Columns:
      • id (uuid)
      • created_at (timestamp)
      • messages (json or jsonb)
    • Purpose: Stores direct messages between users.
  4. channels_messages:

    • Columns:
      • channel_id (uuid)
      • created_at (timestamp)
      • messages (json or jsonb)
      • channel_name (text)
      • channel_members (json or jsonb)
    • Purpose: Stores messages and metadata for channels.
  5. channels_list:

    • Columns:
      • id (uuid)
      • created_at (timestamp)
      • channels (json or jsonb)
    • Purpose: Lists channels that a user is a member of.
  6. Todo_list:

    • Columns:
      • id (uuid)
      • created_at (timestamp)
      • todo_list (json or jsonb)
    • Purpose: Stores user-specific todo lists.
  7. Mails_sent:

    • Columns:
      • task_id (uuid)
      • created_at (timestamp)
      • last_sent (text)
      • t_f (bool)
    • Purpose: Tracks emails sent as reminders for tasks.
  8. Channels_todolist:

    • Columns:
      • id (uuid)
      • created_at (timestamp)
      • todo_list (json or jsonb)
    • Purpose: Stores tasks assigned to everyone in a channel.