Author: The Coding Montana
Welcome to the Gmail Clone project! This web application replicates the core functionalities of Gmail, allowing users to send emails to existing users, star emails, mark emails as important, view sent emails, move emails to the trash, and reply to emails in the inbox. The project is built using Nuxt.js, Tailwind CSS (with Shadcn UI), Cloudinary, Pinia, and Firebase.
Send Emails
: Compose and send emails to existing users within the system.Star Emails
: Mark emails as favorites for quick access.Mark as Important
: Flag emails as important for better organization.View Sent Mails
: Access a list of sent emails for reference.Move to Trash
: Move emails to the trash for later deletion.Reply to Emails
: Respond to emails directly from the inbox.Dark And Light Mode
: Toggle and enjoy the dark and light mode.
Nuxt.js
: A Vue.js framework for building modern web applications.Tailwind CSS (with Shadcn UI)
: A utility-first CSS framework for rapid UI development.Cloudinary
: An end-to-end image and video management solution.Pinia
: A Vue.js state management library.Firebase
: A comprehensive platform for building web and mobile applications.
Light Mode:
Dark Mode:
Make sure you have Node.js and npm installed on your machine.
-
Clone the repository:
git clone https://github.com/DevHumbleChris/nuxt-gmail-clone.git
-
Navigate to the project directory:
cd nuxt-gmail-clone
-
Install dependencies:
npm install
- Create a
Firebase
project and obtain yourFirebase configuration
. - Configure Firebase in the project by replacing the placeholder values in
.env
with your Firebase configuration. - Configure Cloudinary by replacing the placeholder values in
.env
with your Cloudinary configuration.
-
Start the development server:
npm run dev
-
Open your browser and visit
http://localhost:3000
to access the Gmail Clone application.
/
: Homepage/inbox
: Inbox mails/inbox/[mailId]
: Selected inbox mail preview/starred
: Starred mails/starred/[mailId]
: Selected starred mail preview/important
: Important mails/important/[mailId]
: Selected important mail preview/sent
: Sent mails/sent/[mailId]
: Selected sent mail preview/trashed
: Trashed mails/trashed/[mailId]
: Selected trashed mail preview
Make sure to set up the following environment variables in your .env
file:
FIREBASE_API_KEY = ""
FIREBASE_AUTH_DOMAIN = ""
FIREBASE_PROJECT_ID = ""
FIREBASE_STORAGE_BUCKET = ""
FIREBASE_MESSAGING_SENDER_ID = ""
FIREBASE_APP_ID = ""
CLOUDINARY_CLOUD_NAME = ""
CLOUDINARY_API_KEY = ""
CLOUDINARY_API_SECRET = ""
The project follows a modular folder structure for better organization:
assets
: Static assets like images and fonts.components
: Reusable Vue components.layouts
: Layout components for the application structure.pages
: Vue components representing different pages of the application.plugins
: External plugins and configurations.store
: State management using Pinia.static
: Static files that are directly served.
This project is licensed under the MIT
License.