Files
gh-christianlouis-dmarq/docs/architecture.md
T
2025-04-20 18:43:42 +02:00

173 lines
6.8 KiB
Markdown

# DMARQ Architecture
## System Overview
DMARQ is designed as a self-contained application that processes DMARC reports, stores relevant data, and presents insights through a web interface. The architecture follows a layered approach with clear separation of concerns between components.
## Core Components
### Web Application (FastAPI)
- Serves the web interface
- Handles API requests
- Manages user authentication
- Coordinates background tasks
- Renders templates with Jinja2
### DMARC Processing Engine
- Parses DMARC XML reports
- Extracts meaningful data from reports
- Validates report structure
- Identifies sending sources
- Calculates compliance metrics
### Data Storage
- **MVP Phase**: In-memory storage
- **Later Phases**: SQLite or PostgreSQL database
- Stores domain configurations
- Maintains report history
- Tracks sender statistics
### Report Acquisition
- **MVP Phase**: Manual file upload
- **Later Phases**: IMAP client for automatic retrieval
- Handles compression formats (ZIP, GZ)
- Deduplicates reports
### Background Processing
- Scheduled report fetching
- Periodic DNS checks
- Alert evaluation
- Data aggregation for dashboards
## Data Flow
1. **Report Ingestion**
- Reports arrive via upload or IMAP
- System extracts and validates XML content
- Parser processes report data
- Data is stored in appropriate format
2. **Data Processing**
- Raw report data is transformed into metrics
- System calculates compliance rates
- Identifies new or problematic senders
- Updates historical records
3. **Presentation Layer**
- Dashboard displays key metrics
- Domain details show specific report data
- Charts visualize trends
- Alerts highlight issues requiring attention
## Architectural Evolution
The DMARQ architecture is designed to evolve across milestones:
### Milestone 1: Minimal Architecture
- Single FastAPI service
- In-memory data storage
- Manual file upload
- Basic template rendering
```
┌─────────────────────────┐
│ Web Browser │
└───────────┬─────────────┘
┌───────────┼─────────────┐
│ FastAPI Application │
├───────────┼─────────────┤
│ DMARC Parser │ Templates │
├─────────────┬───────────┤
│ In-Memory Store │
└─────────────────────────┘
```
### Milestone 2-3: Enhanced Architecture
- FastAPI with background tasks
- Database persistence layer
- IMAP integration
- Expanded web interface
```
┌─────────────────────────┐
│ Web Browser │
└───────────┬─────────────┘
┌───────────┼─────────────┐
│ FastAPI Application │
├─────────┬───────┬───────┤
│Templates│Parser │IMAP │
├─────────┴───────┴───────┤
│ Background Tasks │
├─────────────────────────┤
│ Database Layer │
└───────────┬─────────────┘
┌───────────┼─────────────┐
│ SQLite/PostgreSQL DB │
└─────────────────────────┘
```
### Milestone 5+: Full Architecture
- Authentication layer
- DNS integration
- Alert system
- Visualization enhancements
```
┌───────────────────────────────────────────────┐
│ Web Browser │
└───────────────────┬───────────────────────────┘
┌───────────────────┼───────────────────────────┐
│ FastAPI Application │
├────────┬──────────┬──────────┬────────┬───────┤
│Auth │Templates │Parser │IMAP │Apprise│
├────────┴──────────┴──────────┴────────┴───────┤
│ Background Tasks │
├───────────────────────────────────────────────┤
│ Database Layer │
└───────────────────┬───────────────────────────┘
┌───────────────────┼───────────────────────────┐
│ SQLite/PostgreSQL DB │
└───────────────────────────────────────────────┘
│ │ │
┌───┴───┐ ┌─────┴────┐ ┌─────┴────┐
│DNS API│ │Notif. API│ │Email │
└───────┘ └──────────┘ └──────────┘
```
## Technology Stack Details
### Backend Framework
- **FastAPI**: Modern, high-performance web framework
- **Pydantic**: Data validation and settings management
- **SQLAlchemy**: ORM for database interactions
- **APScheduler**: Task scheduling for background jobs
### Frontend
- **Jinja2**: Template engine for rendering HTML
- **Tailwind CSS**: Utility-first CSS framework
- **ShadCN/UI**: Reusable UI component system
- **Chart.js**: Lightweight charting library
### External Libraries
- **parsedmarc**: DMARC report parsing
- **Apprise**: Unified notification system
- **Cloudflare API** (optional): DNS integration
- **FastAPI Users**: Authentication management
### Deployment
- **Docker**: Containerization
- **Docker Compose**: Multi-container orchestration
- **SQLite/PostgreSQL**: Database options
## Security Considerations
- Sensitive credentials are stored securely
- Authentication protects access to report data
- HTTPS recommended for production deployment
- No external APIs required for core functionality
- Self-hosted approach keeps data private