MailMate - Modern Email Client
MailMate is a modern email client built with cutting-edge web technologies to provide a seamless email management experience. With a beautiful UI and powerful features, MailMate helps you stay organized and communicate efficiently.
๐ Click here to try MailMate
Built with love using:
- โ๏ธ React โ Component-based frontend library
- ๐ Clerk โ User authentication and management
- ๐๏ธ Firebase Firestore โ Real-time backend database
- ๐ Redux Toolkit โ Scalable state management
- ๐จ Tailwind CSS โ Utility-first styling
- ๐๏ธ ShadCN UI โ Headless accessible UI components
- ๐ React Toast โ Elegant toast notifications
- โจ Lucide Icons โ Icon set for a sleek UI
- โจ๏ธ Jodit Editor โ Rich Text Editor
- Secure Login & Logout with Clerk
- Seamless integration with Firebase
- Built using Redux Toolkit
- Styled with Tailwind CSS
- Includes ShadCN components
- โ๏ธ Compose rich-text emails
- ๐ฅ Inbox with unread counts
- โญ Starred messages
- ๐ค Sent folder
- ๐๏ธ Trash with Restore, Delete, Delete Selected, Clear All Trash functionalities
- Quickly access Inbox, Starred, Sent, and Trash folders in a single view
- Displays recent activity from Inbox and Sent emails for a quick snapshot
- Displays 5 emails per page with Next and Previous navigation buttons, using a custom hook to enable reuse across components and enhance optimization.
- Custom React Hook that tracks and updates real-time counts for Inbox (unread), Starred, Sent and Trash folders.
- Toast-based alerts via React Toastify
- Provided by Lucide React
MailMate/
โโโ src/
โ โโโ components/
โ โ โโโ Layout/
โ โ โ โโโ AuthLayout.jsx
โ โ โ โโโ EmailModal.jsx
โ โ โ โโโ Footer.jsx
โ โ โ โโโ Header.jsx
โ โ โ โโโ MainLayout.jsx
โ โ โ โโโ Sidebar.jsx
โ โ โโโ ui/
โ โ โ โโโ avatar.jsx
โ โ โ โโโ badge.jsx
โ โ โ โโโ button.jsx
โ โ โ โโโ card.jsx
โ โ โ โโโ dialog.jsx
โ โ โ โโโ input.jsx
โ โ โ โโโ table.jsx
โ โ โโโ EmailModal.jsx
โ โ โโโ icons.jsx
โ โ โโโ PrivateRoute.jsx
โ โโโ hooks/
โ โ โโโ useMailAPI.js
โ โ โโโ usePaginatedEmails.js
โ โ โโโ useSyncMailCounts.js
โ โโโ lib/
โ โ โโโ utils.js
โ โโโ pages/
โ โ โโโ Compose.jsx
โ โ โโโ Dashboard.jsx
โ โ โโโ Home.jsx
โ โ โโโ Inbox.jsx
โ โ โโโ Profile.jsx
โ โ โโโ Sent.jsx
โ โ โโโ Starred.jsx
โ โ โโโ Trash.jsx
โ โโโ store/
โ โ โโโ emailSlice.js
โ โ โโโ store.js
โ โโโ firebase.js
โ โโโ App.jsx
โ โโโ inbox.css
โ โโโ main.jsx
- Uses Clerk for secure authentication
- Protected routes with
PrivateRoute
component - User profile management
- Compose: Rich-text editor with Jodit
- Inbox: Paginated email list with read/unread status
- Starred: Favorite important emails
- Sent: View sent messages
- Trash: Manage deleted emails with restore functionality
- Custom
Header
with navigation Sidebar
for quick access to foldersFooter
highlights the core technologies powering the app- Responsive layouts via
MainLayout
andAuthLayout
- Beautiful avatar, badge, button, card, dialog, input and tables from ShadCN
- Crisp and modern icons powered by Lucide Icons
- Elegant notifications and alerts using React Toast
- For viewing emails
- Firebase Firestore: Stores all email data
- Redux Toolkit: Manages application state
- Tracks email counts (unread, starred, etc.)
- Maintains email lists for folders
- Custom hooks:
useMailAPI
: Email CRUD operationsusePaginatedEmails
: Pagination logicuseSyncMailCounts
: Real-time sync of email counts
- Colors: Gradient backgrounds with vibrant tones
- Typography: Clean and readable fonts
- Icons: Intuitive Lucide icon set
- Animations: Smooth transitions and hover effects
- To enhance performance and reduce initial load time, MailMate implements lazy loading for key components and routes using Reactโs lazy() and Suspense.
- ๐ Add email search functionality
- ๐ Add dark mode for better nighttime experience
- ๐ Support for email attachments (images, files, etc.)
- ๐ฉ Enable email forwarding and threaded replies
- ๐ฑ Develop a mobile app version (React Native or Flutter)
This project is licensed under the MIT License.
- ๐ Star this repo to show your appreciation
- โ๏ธ Fork and submit pull requests with improvements or fixes
- ๐ง Share feedback and suggestions to help shape the future