From 18c67af5bd7982252f6e2e344804469cd02985ea Mon Sep 17 00:00:00 2001 From: Pudi-Sravan Date: Wed, 3 Jul 2024 15:47:13 +0530 Subject: [PATCH] Modified the README structure --- README.md | 152 +++++++++++++++++++++++++++++++++++++++++------------- 1 file changed, 116 insertions(+), 36 deletions(-) diff --git a/README.md b/README.md index afe34f0..0cae4ac 100644 --- a/README.md +++ b/README.md @@ -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= +VITE_SUPABASE_KEY= +VITE_Backend_Port= +- 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.