Skip to content

Commit

Permalink
Modified the README structure
Browse files Browse the repository at this point in the history
  • Loading branch information
Pudi-Sravan committed Jul 3, 2024
1 parent 78ef430 commit 18c67af
Showing 1 changed file with 116 additions and 36 deletions.
152 changes: 116 additions & 36 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,36 +1,116 @@
Slack Clone
Tech Stacks Used: Vite React
Node js
Supabase
Dockers configuration is also done.
Working:
In this the user can login using the OAuth for both google and the Github & by the email also.
Later if the user forgets the mail they reset their password through the registered mail.
Once logged in the user gets into the homepage where there are multiple options like:
1) The User can make his own Todo list,view and delete it also.
2) The User can authenticate to a gmail to get his account linked with google calendar to view,edit and delete the events in primary google calendar that is linked.
3) The User can initiate a conversion with any user of this Slack Clone and they can share text and images(size<=50M.B)
4) The User can create a channel and invite,add admins,delete admins,assign& delete tasks to everyone in the channel,assign task to a individual in the channel,direct message with a member of the channel,add new members into the channel,and delete the channel also.Where the features are available according to the role such as if they are the Admin or a member.
5) There is also a search bar available at the top to search for any channel that the User belongs to or any user of the Slack Clone with whom he has initiated a conversation.
6) The Slack Clone is Responsive also.
Set-Up:
Firstly create a slack account and make a new project and store the project URL & Key in a .env file named as VITE_SUPABASE_URL &VITE_SUPABASE_KEY respectively and even VITE_Backend_Port to specify where your backend be listening from.
In that slack project create a bucket named photos
Enable the Google & Github authentication also in the providers of supabse for authentication.
Create 8 Tables named like this:
1) user_data:To store user data
coloumns:id(uuid),updated_at(timestamp),username(text),avatar_url(text),email(text),phone(text),hashed_password(text) and link this with the changes in the auth like we get the username,phone,hashed_password in user_meta_data uding SQL editor or any.
2) direct_messages:To store the contacts info of a user related to direct messaging
coloumns:id(uuid),created_at(timestamp),dm_chats(json or jsonb)
3) chats_dm:To store the direct messages
coloumns:id(uuid),created_at(timestamp),messages(json or jsonb)
4) channels_messages:To store channel data and messages
coloumns:channel_id(uuid),created_at(timestamp),messages(json or jsonb),channel_name(text),channel_members(json or jsonb)
5) channels_list:To store the channels a user is a memeber of
coloumns:id(uuid),created_at(timestamp),channels(json or jsonb)
6) Todo_list:To store the todo list of a user
coloumns:id(uuid),created_at(timestamp),todo_list(json or jsonb)
7) Mails_sent:To keep track of mails sent as reminders of tasks.
coloumns:task_id(uuid),created_at(timestamp),last_sent(text),t_f(bool)
8) Channels_todolist:To store the tasks assigned for everyone in the channel
coloumns:id(uuid),created_at(timestamp),todo_list(json or jsonb)
# 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=<Your backend port>
EMAIL_USER=<your mail for nodemailer>
EMAIL_PASS=<the secret key given by google cloud for nodemailer>
CLIENT_ID=<your cloud project cleint id>
CLIENT_SECRET=<your cloud project cleint secret>
REDIRECT_URL=<redirect url after oauth is done>
API_KEY=<API key from google cloud>
SESSION_SECRET=<session secret generated by you>

### 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.

0 comments on commit 18c67af

Please sign in to comment.