Skip to content

itsvaibhavmishra/TwinkConnect

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

Important

Please leave a ⭐ if you like this project.

TwinkConnect 😺

A Real-Time web-based MERN Chat App by Vaibhaw Mishra. { Development in Progress }

TwinkConnect

βœ… Site Status

Live At: Netlify | TwinkConnect

Tip

Netlify Status

πŸ’» Tech Stack

MongoDB Express React.JS Node.JS MUI Socket.io React Redux React Router Cloudinary React Hook Form JWT Swiper Framer Motion Git GitHub NodeMailer Google Analytics

πŸ“ƒ Features List

πŸ‘¦πŸ» User Features

- Real-time one-to-one chat

- reCAPTCHA support

- Robust authentication system with dynamic flow

- OTP based verification and password reset functionality

- 3 Social logins methods (Google, GitHub & LinkedIn)

- Disposable email check

- Highly responsive UI

- Dark/Light theme support

- 6 different color presets

- Custom movable sidebar for theme settings

- Profile section with image cropper & drag-n-drop support

- Search friends with infinite scrolling

- Emoji support

- Real-time online status

- Real-time typing... message

- Dynamic friends contact menu

πŸ§‘πŸ»β€πŸ’» Developer Features

Backend:

- Added security options (Rate Limit, XSS Protection, Sanitization, URL Encoding & more)

- Dynamic server & routes error handling

- Dedicted folder structure

- JWT Middlewares for both APIs & Socket based requests

- Cloudinary file upload system with auto folder structuring

- Access & Refresh token with cookies support

- Structured DB with pre save & validations

- And much more

Frontend:

- Custom axios setup for easier API calling

- Custom error interceptors for axios error handlings

- Redux toolkit with persist

- Custom hooks

- Auto refresh tokens & auto token verification

- Google Ananlytics support

- Dynamic routing with lazy loading

- Custom loader

- Customized theme with dedicated folder structuring

- React Hook Form with Yup form validations

- Custom utils folder

- And much more

πŸ‘Ύ Installation

Bankend:

From root directory, move to the backend using command

$ cd backend/

Install dependencies for server

$ npm install

Setup .env using .env copy file

$ located in backend/

Start the backend using nodemon

$ npm start

Frontend:

From root directory, move to the frontend using command

$ cd frontend/

Install dependencies for frontend

$ npm install -f

Setup .env using .env copy file

$ located in frontend/

Runs frontend on localhost(React App)

$ npm start

Creates an optimized production build

$ npm run build

πŸͺœ Folder Structure

Main Structure
β”œβ”€β”€backend/
β”‚   β”œβ”€β”€ ...
β”œβ”€β”€frontend/
β”‚   β”œβ”€β”€ ...
β”œβ”€β”€ .gitignore
β”œβ”€β”€ LICENSE
β”œβ”€β”€ Readme.md
Backend
β”œβ”€β”€ backend/
β”‚   β”œβ”€β”€ src/
β”‚   β”‚   β”œβ”€β”€ controllers/
β”‚   β”‚   β”‚   β”œβ”€β”€ authController.js
β”‚   β”‚   β”‚   β”œβ”€β”€ conversationController.js
β”‚   β”‚   β”‚   β”œβ”€β”€ friendsController.js
β”‚   β”‚   β”‚   β”œβ”€β”€ messageController.js
β”‚   β”‚   β”‚   β”œβ”€β”€ socialController.js
β”‚   β”‚   β”‚   β”œβ”€β”€ userController.js
β”‚   β”‚   β”œβ”€β”€ middlewares/
β”‚   β”‚   β”‚   β”œβ”€β”€ authMiddleware.js
β”‚   β”‚   β”‚   β”œβ”€β”€ socketMiddleware.js
β”‚   β”‚   β”œβ”€β”€ models/
β”‚   β”‚   β”‚   β”œβ”€β”€ conversationModel.js
β”‚   β”‚   β”‚   β”œβ”€β”€ friendRequestModel.js
β”‚   β”‚   β”‚   β”œβ”€β”€ index.js
β”‚   β”‚   β”‚   β”œβ”€β”€ messageModel.js
β”‚   β”‚   β”‚   β”œβ”€β”€ userModel.js
β”‚   β”‚   β”œβ”€β”€ routes/
β”‚   β”‚   β”‚   β”œβ”€β”€ authRouter.js
β”‚   β”‚   β”‚   β”œβ”€β”€ conversationRouter.js
β”‚   β”‚   β”‚   β”œβ”€β”€ friendsRouter.js
β”‚   β”‚   β”‚   β”œβ”€β”€ index.js
β”‚   β”‚   β”‚   β”œβ”€β”€ messageRouter.js
β”‚   β”‚   β”‚   β”œβ”€β”€ userRouter.js
β”‚   β”‚   β”œβ”€β”€ services/
β”‚   β”‚   β”‚   β”œβ”€β”€ authService.js
β”‚   β”‚   β”‚   β”œβ”€β”€ conversationService.js
β”‚   β”‚   β”‚   β”œβ”€β”€ fileUploadService.js
β”‚   β”‚   β”‚   β”œβ”€β”€ friendsService.js
β”‚   β”‚   β”‚   β”œβ”€β”€ mailer.js
β”‚   β”‚   β”‚   β”œβ”€β”€ messageService.js
β”‚   β”‚   β”‚   β”œβ”€β”€ socialAuthService.js
β”‚   β”‚   β”‚   β”œβ”€β”€ tokenService.js
β”‚   β”‚   β”‚   β”œβ”€β”€ userService.js
β”‚   β”‚   β”œβ”€β”€ Templates/
β”‚   β”‚   β”‚   β”œβ”€β”€ Mail/
β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ otp.js
β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ reset.js
β”‚   β”‚   β”œβ”€β”€ utils/
β”‚   β”‚   β”‚   β”œβ”€β”€ checkDispose.js
β”‚   β”‚   β”‚   β”œβ”€β”€ filterObj.js
β”‚   β”‚   β”‚   β”œβ”€β”€ generatePassword.js
β”‚   β”‚   β”‚   β”œβ”€β”€ tokenGenerator.js
β”‚   β”œβ”€β”€ .env copy
β”‚   β”œβ”€β”€ app.js
β”‚   β”œβ”€β”€ package-lock.json
β”‚   β”œβ”€β”€ package.json
β”‚   β”œβ”€β”€ server.js
β”‚   β”œβ”€β”€ socket.js
β”‚   β”œβ”€β”€ vercel.json
Frontend
β”œβ”€β”€ frontend/
β”‚   β”œβ”€β”€ public/
β”‚   β”‚   β”œβ”€β”€ favicon.ico
β”‚   β”‚   β”œβ”€β”€ index.html
β”‚   β”‚   β”œβ”€β”€ logo.ico
β”‚   β”‚   β”œβ”€β”€ manifest.json
β”‚   β”‚   β”œβ”€β”€ robots.txt
β”‚   β”‚   β”œβ”€β”€ sitemap.xml
β”‚   β”‚   β”œβ”€β”€ _redirects
β”‚   β”œβ”€β”€ src/
β”‚   β”‚   β”œβ”€β”€ assets/
β”‚   β”‚   β”‚   β”œβ”€β”€ backgrounds/
β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ catDoodle.png
β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ catDoodle2.png
β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ catDoodle3.png
β”‚   β”‚   β”‚   β”œβ”€β”€ icons/
β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ flags/
β”‚   β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ flag_am.svg
β”‚   β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ flag_en.png
β”‚   β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ flag_en.svg
β”‚   β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ flag_fr.png
β”‚   β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ flag_fr.svg
β”‚   β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ flag_hi.png
β”‚   β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ flag_hi.svg
β”‚   β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ flag_ja.svg
β”‚   β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ flag_vn.svg
β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ logo/
β”‚   β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ TwinkConnect-old.png
β”‚   β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ TwinkConnect.png
β”‚   β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ TwinkConnectSub.png
β”‚   β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ VaibhawMishra.ico
β”‚   β”‚   β”‚   β”œβ”€β”€ Illustration/
β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ Animations/
β”‚   β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ Cat404.json
β”‚   β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ CatAnimation1.json
β”‚   β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ CatAnimation2.json
β”‚   β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ CatAnimation3.json
β”‚   β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ CatAnimation4.json
β”‚   β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ CatAnimation5.json
β”‚   β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ ChillingVibes.json
β”‚   β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ HangingBuddy.json
β”‚   β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ NoResultsFound.json
β”‚   β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ SearchNotFound.json
β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ NoChat.js
β”‚   β”‚   β”œβ”€β”€ components/
β”‚   β”‚   β”‚   β”œβ”€β”€ animate/
β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ varients/
β”‚   β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ actions.js
β”‚   β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ background.js
β”‚   β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ bounce.js
β”‚   β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ container.js
β”‚   β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ fade.js
β”‚   β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ flip.js
β”‚   β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ index.js
β”‚   β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ path.js
β”‚   β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ rotate.js
β”‚   β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ scale.js
β”‚   β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ slide.js
β”‚   β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ transition.js
β”‚   β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ zoom.js
β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ DialogAnimate.js
β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ FabButtonAnimate.js
β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ features.js
β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ IconButtonAnimate.js
β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ index.js
β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ MotionContainer.js
β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ MotionLazyContainer.js
β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ MotionViewport.js
β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ TextAnimate.js
β”‚   β”‚   β”‚   β”œβ”€β”€ hook-form/
β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ FormProvider.js
β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ index.js
β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ RHFOtp.js
β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ RHFTextField.js
β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ RHFUpload.js
β”‚   β”‚   β”‚   β”œβ”€β”€ Image/
β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ getRatio.js
β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ Image.js
β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ index.js
β”‚   β”‚   β”‚   β”œβ”€β”€ PageComponents/
β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ ContactPage/
β”‚   β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ FriendsComponents/
β”‚   β”‚   β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ FriendsSubComps/
β”‚   β”‚   β”‚   β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ index.js
β”‚   β”‚   β”‚   β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ UserCard.js
β”‚   β”‚   β”‚   β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ UsersSearchResults.js
β”‚   β”‚   β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ FriendRequests.js
β”‚   β”‚   β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ index.js
β”‚   β”‚   β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ SearchUsers.js
β”‚   β”‚   β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ SentRequests.js
β”‚   β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ ContactList.js
β”‚   β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ FriendsMenu.js
β”‚   β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ index.js
β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ GeneralAppPage/
β”‚   β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ ChatElements/
β”‚   β”‚   β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ AllChatElement.js
β”‚   β”‚   β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ ChatSearchResults.js
β”‚   β”‚   β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ OnlineChatElement.js
β”‚   β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ ConversationElements/
β”‚   β”‚   β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ ConvoSubElements/
β”‚   β”‚   β”‚   β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ ChatInput.js
β”‚   β”‚   β”‚   β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ MessageContainer.js
β”‚   β”‚   β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ ConversationFooter.js
β”‚   β”‚   β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ ConversationHeader.js
β”‚   β”‚   β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ ConversationMain.js
β”‚   β”‚   β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ index.js
β”‚   β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ ChatsList.js
β”‚   β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ Conversation.js
β”‚   β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ index.js
β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ OnlineFriendsElement/
β”‚   β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ OnlineFriendsElement.js
β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ ProfilePage/
β”‚   β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ ProfilePage.js
β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ UserProfileDrawer/
β”‚   β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ UserDrawerComps/
β”‚   β”‚   β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ UDMainComps/
β”‚   β”‚   β”‚   β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ RemoveFriendDialog.js
β”‚   β”‚   β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ index.js
β”‚   β”‚   β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ UserDrawerHeader.js
β”‚   β”‚   β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ UserDrawerMain.js
β”‚   β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ UserProfileDrawer.js
β”‚   β”‚   β”‚   β”œβ”€β”€ Search/
β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ index.js
β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ Search.js
β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ SearchIconWrapper.js
β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ StyledInputBase.js
β”‚   β”‚   β”‚   β”œβ”€β”€ settings/
β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ drawer/
β”‚   β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ BoxMask.js
β”‚   β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ Developer.js
β”‚   β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ index.js
β”‚   β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ SettingColorPresets.js
β”‚   β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ SettingContrast.js
β”‚   β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ SettingDirection.js
β”‚   β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ SettingFullscreen.js
β”‚   β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ SettingLayout.js
β”‚   β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ SettingMode.js
β”‚   β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ SettingStretch.js
β”‚   β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ ToggleButton.js
β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ index.js
β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ ThemeColorPresets.js
β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ ThemeContrast.js
β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ ThemeLocalization.js
β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ ThemeRtlLayout.js
β”‚   β”‚   β”‚   β”œβ”€β”€ upload/
β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ preview/
β”‚   β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ AvatarCropper.js
β”‚   β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ AvatarPreview.js
β”‚   β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ cropImage.js
β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ index.js
β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ UploadAvatar.js
β”‚   β”‚   β”‚   β”œβ”€β”€ AntSwitch.js
β”‚   β”‚   β”‚   β”œβ”€β”€ Iconify.js
β”‚   β”‚   β”‚   β”œβ”€β”€ LoadingScreen.js
β”‚   β”‚   β”‚   β”œβ”€β”€ NoData.js
β”‚   β”‚   β”‚   β”œβ”€β”€ StyledBadge.js
β”‚   β”‚   β”‚   β”œβ”€β”€ ThemeSwitch.js
β”‚   β”‚   β”œβ”€β”€ contexts/
β”‚   β”‚   β”‚   β”œβ”€β”€ SettingsContext.js
β”‚   β”‚   β”œβ”€β”€ data/
β”‚   β”‚   β”‚   β”œβ”€β”€ index.js
β”‚   β”‚   β”œβ”€β”€ hooks/
β”‚   β”‚   β”‚   β”œβ”€β”€ useLocales.js
β”‚   β”‚   β”‚   β”œβ”€β”€ useLocalStorage.js
β”‚   β”‚   β”‚   β”œβ”€β”€ useResponsive.js
β”‚   β”‚   β”‚   β”œβ”€β”€ useSettings.js
β”‚   β”‚   β”œβ”€β”€ layouts/
β”‚   β”‚   β”‚   β”œβ”€β”€ auth/
β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ index.js
β”‚   β”‚   β”‚   β”œβ”€β”€ dashboard/
β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ index.js
β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ Sidebar.js
β”‚   β”‚   β”‚   β”œβ”€β”€ docs/
β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ index.js
β”‚   β”‚   β”œβ”€β”€ pages/
β”‚   β”‚   β”‚   β”œβ”€β”€ auth/
β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ ForgotPassword.js
β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ Login.js
β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ Register.js
β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ ResetPassword.js
β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ Verify.js
β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ WelcomePage.js
β”‚   β”‚   β”‚   β”œβ”€β”€ dashboard/
β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ Contact.js
β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ GeneralApp.js
β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ GroupChat.js
β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ Profile.js
β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ Settings.js
β”‚   β”‚   β”‚   β”œβ”€β”€ docs/
β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ TnC.js
β”‚   β”‚   β”‚   β”œβ”€β”€ 404.js
β”‚   β”‚   β”œβ”€β”€ redux/
β”‚   β”‚   β”‚   β”œβ”€β”€ slices/
β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ actions/
β”‚   β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ authActions.js
β”‚   β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ chatActions.js
β”‚   β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ contactActions.js
β”‚   β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ userActions.js
β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ authSlice.js
β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ chatSlice.js
β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ contactSlice.js
β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ index.js
β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ userSlice.js
β”‚   β”‚   β”‚   β”œβ”€β”€ rootReducer.js
β”‚   β”‚   β”‚   β”œβ”€β”€ store.js
β”‚   β”‚   β”œβ”€β”€ routes/
β”‚   β”‚   β”‚   β”œβ”€β”€ index.js
β”‚   β”‚   β”‚   β”œβ”€β”€ paths.js
β”‚   β”‚   β”œβ”€β”€ sections/
β”‚   β”‚   β”‚   β”œβ”€β”€ auth/
β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ AuthSocial.js
β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ ForgotPasswordForm.js
β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ LoginForm.js
β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ RegisterForm.js
β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ ResetPasswordForm.js
β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ VerifyForm.js
β”‚   β”‚   β”‚   β”œβ”€β”€ settings/
β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ ProfileForm.js
β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ Shortcuts.js
β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ ThemeDialog.js
β”‚   β”‚   β”œβ”€β”€ theme/
β”‚   β”‚   β”‚   β”œβ”€β”€ overrides/
β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ Accordion.js
β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ Alert.js
β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ Autocomplete.js
β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ Avatar.js
β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ Backdrop.js
β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ Badge.js
β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ Breadcrumbs.js
β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ Button.js
β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ ButtonGroup.js
β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ Card.js
β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ Checkbox.js
β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ Chip.js
β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ ControlLabel.js
β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ CssBaseline.js
β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ CustomIcons.js
β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ DataGrid.js
β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ Dialog.js
β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ Drawer.js
β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ Fab.js
β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ index.js
β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ Input.js
β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ Link.js
β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ List.js
β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ LoadingButton.js
β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ Menu.js
β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ Pagination.js
β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ Paper.js
β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ Popover.js
β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ Progress.js
β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ Radio.js
β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ Rating.js
β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ Select.js
β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ Skeleton.js
β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ Slider.js
β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ Stepper.js
β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ SvgIcon.js
β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ Switch.js
β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ Table.js
β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ Tabs.js
β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ Timeline.js
β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ ToggleButton.js
β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ Tooltip.js
β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ TreeView.js
β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ Typography.js
β”‚   β”‚   β”‚   β”œβ”€β”€ breakpoints.js
β”‚   β”‚   β”‚   β”œβ”€β”€ index.js
β”‚   β”‚   β”‚   β”œβ”€β”€ palette.js
β”‚   β”‚   β”‚   β”œβ”€β”€ shadows.js
β”‚   β”‚   β”‚   β”œβ”€β”€ typography.js
β”‚   β”‚   β”œβ”€β”€ utils/
β”‚   β”‚   β”‚   β”œβ”€β”€ axios.js
β”‚   β”‚   β”‚   β”œβ”€β”€ axiosInterceptors.js
β”‚   β”‚   β”‚   β”œβ”€β”€ createAvatar.js
β”‚   β”‚   β”‚   β”œβ”€β”€ cssStyles.js
β”‚   β”‚   β”‚   β”œβ”€β”€ flattenArray.js
β”‚   β”‚   β”‚   β”œβ”€β”€ formatNumber.js
β”‚   β”‚   β”‚   β”œβ”€β”€ formatTime.js
β”‚   β”‚   β”‚   β”œβ”€β”€ getColorName.js
β”‚   β”‚   β”‚   β”œβ”€β”€ getColorPresets.js
β”‚   β”‚   β”‚   β”œβ”€β”€ getFileData.js
β”‚   β”‚   β”‚   β”œβ”€β”€ getFontValue.js
β”‚   β”‚   β”‚   β”œβ”€β”€ getOtherUser.js
β”‚   β”‚   β”‚   β”œβ”€β”€ helmetHandler.js
β”‚   β”‚   β”‚   β”œβ”€β”€ jwt.js
β”‚   β”‚   β”‚   β”œβ”€β”€ scrollToBottom.js
β”‚   β”‚   β”‚   β”œβ”€β”€ socialLoginHelpers.js
β”‚   β”‚   β”‚   β”œβ”€β”€ socket.js
β”‚   β”‚   β”‚   β”œβ”€β”€ timeFormatter.js
β”‚   β”‚   β”‚   β”œβ”€β”€ truncateText.js
β”‚   β”‚   β”‚   β”œβ”€β”€ uuidv4.js
β”‚   β”‚   β”œβ”€β”€ App.js
β”‚   β”‚   β”œβ”€β”€ config.js
β”‚   β”‚   β”œβ”€β”€ index.css
β”‚   β”‚   β”œβ”€β”€ index.js
β”‚   β”œβ”€β”€ .env copy
β”‚   β”œβ”€β”€ package-lock.json
β”‚   β”œβ”€β”€ package.json
β”‚   β”œβ”€β”€ README.md