🗪 README.md en español: README_ES.md
Mail-Web50 is a single-page application (SPA) email client built with Django and JavaScript for CS50's Web Programming with Python and JavaScript (CS50W). It features a modern glassmorphism design and allows users to send, receive, archive, and reply to emails in a dynamic, responsive interface.
- Send emails between registered users
- View mailboxes: Inbox, Sent, and Archived
- Read individual emails
- Archive and unarchive received messages
- Quick reply with pre-filled fields (recipient, subject, quote)
- Visual distinction between read and unread emails
- Modern, responsive, and fluid SPA interface
- Translucent navigation bar with
backdrop-filter: blur(10px)
- 40% opaque side menu with glass effect
- Buttons with sliding “shine” animation
- Clear backdrop without darkening
- Navbar (
z-index: 1050
): Always visible - Side menu (
z-index: 1045
): Overlays background - Backdrop (
z-index: 1040
): Intercepts clicks without darkening
- Unread emails: Blue border + gradient background
- Read emails: Gray border + white background
- Animations:
fadeIn
withtranslateY
for smooth loading
- Inter typography (Google Fonts) with fallback
- Consistent CSS variables
- Custom-themed scrollbar
- Responsive design for 768px breakpoint
- Non-intrusive Bootstrap 5 integration
- Clone the repository:
git clone https://github.com/Wesleykyle2005/Mail-Web50 cd Mail-Web50
- Install dependencies:
pip install django
- Apply migrations:
python manage.py makemigrations mail python manage.py migrate
- Run the server:
python manage.py runserver
- Access the app at: http://127.0.0.1:8000/
- Register with any email and password (local functionality)
- Navigate mailboxes via the glassmorphism side menu
- Compose emails from the "Compose" view
- Click messages to read, archive, or reply quickly
- Python 3.x
- Django 3.x or higher
- Modern browser supporting
backdrop-filter
(Chrome, Edge, Safari)
Mail-Web50/
├── mail/ # Main application
│ ├── static/mail/
│ │ ├── inbox.js # SPA JavaScript logic
│ │ └── styles.css # CSS styles (glassmorphism)
│ ├── templates/mail/
│ │ ├── inbox.html # Main inbox template
│ │ └── layout.html # Base template
│ ├── models.py # Email model
│ ├── views.py # Views and REST API
│ └── urls.py # App routing
├── project3/ # Django project settings
GET /emails/<mailbox>
— Returns emails by mailbox (inbox
,sent
,archive
)GET /emails/<email_id>
— Retrieves an email by IDPOST /emails
— Sends a new email (recipients
,subject
,body
)PUT /emails/<email_id>
— Updates email status (read
,archived
)
- Validated email sending
- Dynamic mailbox rendering with AJAX
- Individual email view with read marking
- Archive/unarchive emails
- Quick reply with pre-filled fields
- SPA functionality without page reloads
- Visual states for read/unread emails
- Side menu without visual darkening
- Animated “shine” effect on buttons
- Visual states for read/unread emails
- Persistent navbar visibility
- Smooth CSS transitions
- Custom scrollbar with theme integration
- Fully mobile-compatible responsive design
- Primary:
#2563eb
— Modern blue - Secondary:
#64748b
— Elegant gray - Success:
#10b981
— Confirmation green - Warning:
#f59e0b
— Warning yellow - Error:
#ef4444
— Error red - Glassmorphism Base: 40% opacity with blur
- Main breakpoint:
768px
- Mobile side menu:
280px
wide - Touch-friendly buttons: ≥ 44px
- Optimized animations for mobile performance (60 fps)