gitextract_8axr8dvu/ ├── .gitignore ├── README.MD ├── backend/ │ ├── package.json │ └── src/ │ ├── controllers/ │ │ ├── auth.controller.js │ │ └── message.controller.js │ ├── emails/ │ │ ├── emailHandlers.js │ │ └── emailTemplates.js │ ├── lib/ │ │ ├── arcjet.js │ │ ├── cloudinary.js │ │ ├── db.js │ │ ├── env.js │ │ ├── resend.js │ │ ├── socket.js │ │ └── utils.js │ ├── middleware/ │ │ ├── arcjet.middleware.js │ │ ├── auth.middleware.js │ │ └── socket.auth.middleware.js │ ├── models/ │ │ ├── Message.js │ │ └── User.js │ ├── routes/ │ │ ├── auth.route.js │ │ └── message.route.js │ └── server.js ├── frontend/ │ ├── .gitignore │ ├── README.md │ ├── eslint.config.js │ ├── index.html │ ├── package.json │ ├── postcss.config.js │ ├── src/ │ │ ├── App.jsx │ │ ├── components/ │ │ │ ├── ActiveTabSwitch.jsx │ │ │ ├── BorderAnimatedContainer.jsx │ │ │ ├── ChatContainer.jsx │ │ │ ├── ChatHeader.jsx │ │ │ ├── ChatsList.jsx │ │ │ ├── ContactList.jsx │ │ │ ├── MessageInput.jsx │ │ │ ├── MessagesLoadingSkeleton.jsx │ │ │ ├── NoChatHistoryPlaceholder.jsx │ │ │ ├── NoChatsFound.jsx │ │ │ ├── NoConversationPlaceholder.jsx │ │ │ ├── PageLoader.jsx │ │ │ ├── ProfileHeader.jsx │ │ │ └── UsersLoadingSkeleton.jsx │ │ ├── hooks/ │ │ │ └── useKeyboardSound.js │ │ ├── index.css │ │ ├── lib/ │ │ │ └── axios.js │ │ ├── main.jsx │ │ ├── pages/ │ │ │ ├── ChatPage.jsx │ │ │ ├── LoginPage.jsx │ │ │ └── SignUpPage.jsx │ │ └── store/ │ │ ├── useAuthStore.js │ │ └── useChatStore.js │ ├── tailwind.config.js │ └── vite.config.js └── package.json