update docs.
This commit is contained in:
@@ -6,6 +6,30 @@ This document describes how to set up a development environment for the Email Or
|
||||
|
||||
- Docker and Docker Compose
|
||||
- Python 3.10+
|
||||
- Flask CLI tools
|
||||
|
||||
## Project Structure
|
||||
|
||||
The application follows a modular structure:
|
||||
|
||||
```
|
||||
app/
|
||||
├── __init__.py # Flask app factory and configuration
|
||||
├── models.py # Database models (User, Folder, ProcessedEmail)
|
||||
├── auth.py # Authentication blueprint
|
||||
├── routes.py # Main blueprint with sub-blueprints
|
||||
├── imap_service.py # IMAP communication service
|
||||
├── processed_emails_service.py # Email processing tracking
|
||||
└── routes/ # Sub-blueprint modules
|
||||
├── __init__.py
|
||||
├── emails.py # Email processing endpoints
|
||||
├── folders.py # Folder management endpoints
|
||||
└── imap.py # IMAP configuration and sync endpoints
|
||||
|
||||
templates/ # Jinja2 templates with HTMX integration
|
||||
static/ # Static assets
|
||||
config.py # Application configuration
|
||||
```
|
||||
|
||||
## Services
|
||||
|
||||
@@ -40,7 +64,7 @@ This command will:
|
||||
### IMAP Server
|
||||
|
||||
- Host: localhost
|
||||
- Port: 1143
|
||||
- Port: 5143
|
||||
- Users:
|
||||
- user1@example.com / password1
|
||||
- user2@example.com / password2
|
||||
@@ -61,4 +85,100 @@ After running `flask setup-dev`, copy the example environment file:
|
||||
cp .env.example .env
|
||||
```
|
||||
|
||||
The default configuration should work with the development services. You can modify the `.env` file if needed.
|
||||
The default configuration should work with the development services. You can modify the `.env` file if needed.
|
||||
|
||||
### Configuration File
|
||||
|
||||
The [`config.py`](config.py:1) file provides different environment configurations:
|
||||
|
||||
```python
|
||||
class Config:
|
||||
SECRET_KEY = os.environ.get('SECRET_KEY') or 'dev-secret-key'
|
||||
SQLALCHEMY_DATABASE_URI = os.environ.get('DATABASE_URL') or 'postgresql://postgres:password@localhost:5432/email_organizer_dev'
|
||||
SQLALCHEMY_TRACK_MODIFICATIONS = False
|
||||
|
||||
class TestingConfig(Config):
|
||||
TESTING = True
|
||||
SQLALCHEMY_DATABASE_URI = 'sqlite:///:memory:' # In-memory database for tests
|
||||
```
|
||||
|
||||
## Database Setup
|
||||
|
||||
The application uses Alembic for database migrations:
|
||||
|
||||
```bash
|
||||
# Create migration
|
||||
flask db migrate -m "Initial migration"
|
||||
|
||||
# Apply migration
|
||||
flask db upgrade
|
||||
```
|
||||
|
||||
## Running the Application
|
||||
|
||||
```bash
|
||||
# Development server
|
||||
flask run
|
||||
|
||||
# With specific host and port
|
||||
flask run --host=0.0.0.0 --port=5001
|
||||
```
|
||||
|
||||
The application will be available at `http://localhost:5001`
|
||||
|
||||
## Testing
|
||||
|
||||
The application includes comprehensive tests:
|
||||
|
||||
```bash
|
||||
# Run all tests
|
||||
pytest
|
||||
|
||||
# Run with coverage
|
||||
pytest --cov=app
|
||||
|
||||
# Run specific test file
|
||||
pytest tests/unit/test_auth.py
|
||||
|
||||
# Run integration tests
|
||||
pytest tests/integration/
|
||||
```
|
||||
|
||||
### Test Structure
|
||||
|
||||
- **Unit Tests**: Test individual components and services
|
||||
- **Integration Tests**: Test API endpoints and database interactions
|
||||
- **Functional Tests**: Test user workflows and UI interactions
|
||||
|
||||
## Development Workflow
|
||||
|
||||
1. **Setup Environment**: Run `flask setup-dev` to start services
|
||||
2. **Configure Database**: Run migrations to set up database schema
|
||||
3. **Run Application**: Start Flask development server
|
||||
4. **Test Changes**: Write tests for new features
|
||||
5. **Commit Changes**: Follow conventional commit messages
|
||||
|
||||
## Key Technologies
|
||||
|
||||
- **Backend**: Flask, SQLAlchemy, PostgreSQL
|
||||
- **Frontend**: HTMX, Alpine.js, DaisyUI, TailwindCSS
|
||||
- **Database**: PostgreSQL with Alembic migrations
|
||||
- **Testing**: pytest with Beautiful Soup for HTML testing
|
||||
- **Development**: Docker for services, Flask CLI for management
|
||||
|
||||
## Current Implementation Status
|
||||
|
||||
### Core Features
|
||||
- User authentication and session management ✅
|
||||
- IMAP configuration and connection testing ✅
|
||||
- Folder synchronization with type assignment ✅
|
||||
- Email processing status tracking ✅
|
||||
- HTMX-based UI with modals and dialogs ✅
|
||||
- Folder type management (Tidy, Destination, Ignore) ✅
|
||||
|
||||
### Development Tools
|
||||
- Database migrations with Alembic ✅
|
||||
- Comprehensive test suite ✅
|
||||
- Docker-based development environment ✅
|
||||
- Flask CLI for development tasks ✅
|
||||
- Environment-based configuration ✅
|
||||
Reference in New Issue
Block a user