154 lines
5.7 KiB
Markdown
154 lines
5.7 KiB
Markdown
# Email Organizer
|
|
|
|
A self-hosted email organization system that automates folder sorting and management through natural language configuration.
|
|
|
|
## Core Value Proposition
|
|
- **Natural Language Rules**: Define email organization logic in plain English instead of writing complex filter rules
|
|
- **Smart Separation**: Automatically categorize emails into custom folders based on your rules
|
|
- **IMAP Integration**: Sync and manage folders directly from your email server
|
|
- **User Authentication**: Secure multi-user system with individual configurations
|
|
|
|
## Technical Overview
|
|
**Stack**:
|
|
- Backend: Flask (Python 3.10+)
|
|
- Frontend: HTMX + AlpineJS + DaisyUI (Tailwind CSS)
|
|
- Database: PostgreSQL
|
|
- IMAP: Direct server integration
|
|
|
|
**Key Components**:
|
|
1. **Authentication System**: User registration, login, and session management
|
|
2. **Folder Management**: Create, edit, and organize email folders with natural language rules
|
|
3. **IMAP Service**: Direct integration with email servers for folder synchronization
|
|
4. **User Interface**: Modern, responsive UI with dynamic updates
|
|
|
|
## Getting Started
|
|
### Prerequisites
|
|
- Python 3.10+
|
|
- PostgreSQL 14+
|
|
- IMAP server access
|
|
|
|
### Setup
|
|
```bash
|
|
# Install dependencies
|
|
pip install -r requirements.txt
|
|
|
|
# Set up development environment (PostgreSQL and IMAP server)
|
|
flask setup-dev
|
|
|
|
# Configure environment
|
|
cp .env.example .env
|
|
# (Edit .env with your DB/IMAP credentials)
|
|
|
|
# Initialize database
|
|
flask db upgrade
|
|
|
|
# Run development server
|
|
flask run
|
|
```
|
|
|
|
## Features
|
|
|
|
### Current Implementation
|
|
- **User Authentication**: Complete user registration and login system with password validation
|
|
- **Folder Management**: Create, edit, delete, and toggle email organization folders
|
|
- **IMAP Integration**: Configure and test connections to email servers
|
|
- **Folder Synchronization**: Import existing folders from IMAP servers
|
|
- **Natural Language Rules**: Define organization rules in plain English
|
|
- **Priority System**: Organize folders with priority levels
|
|
- **Email Metrics**: Track email counts and recent email information
|
|
|
|
### User Interface
|
|
- **Modern Design**: Clean, responsive interface using DaisyUI
|
|
- **Dynamic Updates**: HTMX for seamless UI interactions without page reloads
|
|
- **Modal System**: Forms and configuration in intuitive modal dialogs
|
|
- **Real-time Feedback**: Immediate visual feedback for all operations
|
|
|
|
## Architecture
|
|
The application follows a modular architecture with clear separation of concerns:
|
|
|
|
- **Frontend Layer**: HTMX + AlpineJS + DaisyUI for dynamic user interface
|
|
- **Application Layer**: Flask blueprints for modular feature organization
|
|
- **Data Layer**: PostgreSQL with SQLAlchemy ORM for data persistence
|
|
- **Service Layer**: IMAP service for email server communication
|
|
|
|
For detailed architecture information, see [System Architecture](docs/design/system-architecture.md).
|
|
|
|
## Data Model
|
|
The system uses two main entities with a one-to-many relationship:
|
|
|
|
**Users**
|
|
| Column | Type | Description |
|
|
|--------|------|-------------|
|
|
| id | Integer | Primary key |
|
|
| first_name | String | User's first name |
|
|
| last_name | String | User's last name |
|
|
| email | String | Unique identifier |
|
|
| password_hash | String | Hashed password |
|
|
| imap_config | JSON | Server settings |
|
|
| created_at | DateTime | Account creation timestamp |
|
|
| updated_at | DateTime | Last update timestamp |
|
|
|
|
**Folders**
|
|
| Column | Type | Description |
|
|
|--------|------|-------------|
|
|
| id | Integer | Primary key |
|
|
| user_id | Integer | Foreign key to user |
|
|
| name | String | Display name |
|
|
| rule_text | Text | Natural language rule |
|
|
| priority | Integer | Processing order (0=normal, 1=high) |
|
|
| organize_enabled | Boolean | Rule active status |
|
|
| total_count | Integer | Total emails in folder |
|
|
| pending_count | Integer | Emails to process |
|
|
| recent_emails | JSON | Recent email metadata |
|
|
| created_at | DateTime | Folder creation timestamp |
|
|
| updated_at | DateTime | Last update timestamp |
|
|
|
|
For detailed data model information, see [Data Model](docs/design/data-model.md).
|
|
|
|
## Development Environment
|
|
The development environment includes:
|
|
- **PostgreSQL Database**: For data persistence
|
|
- **Dovecot IMAP Server**: For testing email integration
|
|
- **Docker Compose**: For easy service orchestration
|
|
|
|
### Development Services
|
|
- **Database**: localhost:5432 (email_organizer_dev)
|
|
- **IMAP Server**: localhost:1143
|
|
- **Test Users**:
|
|
- user1@example.com / password1
|
|
- user2@example.com / password2
|
|
|
|
## Roadmap
|
|
### Current Status
|
|
- ✅ User authentication system
|
|
- ✅ Folder CRUD operations
|
|
- ✅ IMAP configuration and testing
|
|
- ✅ Folder synchronization from IMAP servers
|
|
- ✅ Natural language rule configuration
|
|
- ✅ Priority-based folder organization
|
|
- ✅ Email metrics tracking
|
|
|
|
### Future Enhancements
|
|
- **AI-Powered Rules**: Advanced rule processing and recommendations
|
|
- **Email Processing**: Automated email classification and movement
|
|
- **Advanced IMAP Features**: Two-factor authentication, OAuth support
|
|
- **Label Support**: Integration with Gmail and other providers
|
|
- **Admin Interface**: Multi-user management and monitoring
|
|
- **Hosted Service**: Cloud-based offering
|
|
- **Social Authentication**: Google, Facebook, etc. login options
|
|
- **Usage Analytics**: Email processing statistics and insights
|
|
|
|
## Contributing
|
|
1. Fork the repository
|
|
2. Create your feature branch (`git checkout -b feature/AmazingFeature`)
|
|
3. Commit your changes (`git commit -m 'Add some AmazingFeature'`)
|
|
4. Push to the branch (`git push origin feature/AmazingFeature`)
|
|
5. Open a Pull Request
|
|
|
|
> **Note**: All new features require corresponding unit tests and documentation updates.
|
|
|
|
## Documentation
|
|
- [System Architecture](docs/design/system-architecture.md)
|
|
- [Data Model](docs/design/data-model.md)
|
|
- [IMAP Connectivity](docs/design/imap-connectivity.md)
|
|
- [Development Setup](docs/design/development-setup.md) |