This project implements a single-page email client (SPA) using Django for the backend and JavaScript, HTML, and CSS for the frontend. The main goal is to provide a functional and user-friendly interface for managing emails with key features such as sending, receiving, archiving, and replying to emails.
- Users can compose and send emails.
- Requires entering recipients, subject, and body of the email.
- After sending an email, the user is automatically redirected to the "Sent" mailbox.
- 📥 Inbox: Displays all received emails that are not archived.
- 📤 Sent: Shows all emails sent by the user.
- 🗃️ Archived: Displays all emails that the user has archived.
- 📬 Unread emails are displayed with a white background, while read emails appear with a gray background.
- Clicking on an email opens a detailed view showing:
- Sender
- Recipients
- Subject
- Date and time
- Email content
- Emails are automatically marked as "read" when opened.
- Emails in the inbox can be archived.
- Archived emails can be unarchived and returned to the inbox.
- From the detailed email view, users can click the "Reply" button to respond to the email.
- The reply form includes:
- The recipient field pre-filled with the original sender.
- A subject line pre-filled with the prefix
Re:(if not already present). - The original email content quoted in the message body.
| Technology | Version | Description |
|---|---|---|
| Backend | Python web framework | |
| Frontend | Client-side technologies | |
| Database | Lightweight database | |
| API | Communication between frontend and backend |
-
Clone this repository:
git clone https://github.com/sandovaldavid/project-03-mail.git cd project-03-mail -
Create a virtual environment and install dependencies:
python -m venv env source env/bin/activate # On Windows: env\Scripts\activate pip install -r requirements.txt
-
Apply database migrations:
python manage.py makemigrations python manage.py migrate
-
Start the development server:
python manage.py runserver
-
Open the app in your browser at http://127.0.0.1:8000.
| Directory | Description |
|---|---|
mail/ |
Contains the backend logic, including models, views, and URLs |
static/mail/ |
JavaScript, CSS, and other static resources |
templates/mail/ |
HTML templates for the user interface |
inbox.js |
The main JavaScript file handling frontend functionality |
Note
The following features are planned for future releases:
- 🏷️ Tagging system to organize emails
- 🔍 Advanced email search functionality
- 🔔 Real-time notifications for new emails
Tip
We welcome contributions to this project!
If you'd like to contribute, feel free to open an issue or create a pull request with your proposed changes.
This project is licensed under the MIT License - see the LICENSE file for details.