# TODO This file tracks the delta between what the documentation promises and what is actually implemented in the codebase. Use it as a guide for future development. For the full development roadmap, see [docs/development/roadmap.md](docs/development/roadmap.md). For detailed milestone specifications, see [docs/milestones.md](docs/milestones.md). --- ## Implemented (Working) These features are documented and confirmed working in the codebase: - [x] **DMARC Aggregate Report Parsing** — XML, ZIP, and GZIP formats supported via `defusedxml` (`backend/app/services/dmarc_parser.py`) - [x] **Database Persistence** — SQLAlchemy ORM with SQLite and PostgreSQL support, Alembic migrations (`backend/app/core/database.py`, `backend/app/models/`) - [x] **Report Upload** — Web interface for uploading DMARC reports with multi-layer file validation (`backend/app/api/api_v1/endpoints/reports.py`) - [x] **IMAP Integration** — Auto-fetch reports from mailbox with background scheduler (`backend/app/services/imap_client.py`) - [x] **Basic Dashboard** — Domain overview with compliance stats, Chart.js visualizations on domain detail page (`backend/app/templates/`) - [x] **Security Hardening** — Authentication middleware, security headers (CSP, HSTS, X-Frame-Options), defusedxml for XXE protection, restricted CORS, sanitized error responses (`backend/app/middleware/security.py`, `backend/app/core/security.py`) - [x] **Docker Deployment** — Docker Compose setup for production deployment (`docker-compose.yml`, `backend/Dockerfile`) - [x] **Setup Wizard** — Basic guided onboarding endpoints, though in-memory only (`backend/app/api/api_v1/endpoints/setup.py`) - [x] **DNS Record Health Checks** — Real DNS lookups for DMARC, SPF, DKIM, and reverse-DNS (PTR) via `SystemDNSProvider` (dnspython async) and `CloudflareDNSProvider` (DNS-over-HTTPS); used by `/dns`, `/summary`, and `/sources` API endpoints (`backend/app/services/dns_resolver.py`) --- ## Documented but NOT Implemented The following features are described in the README, documentation, or roadmap but have no working implementation in the codebase yet. ### Cloudflare Integration - **Documented in**: README.md ("Cloudflare-integrated"), docs/development/roadmap.md (Milestone 8) - **Current state**: Configuration variables exist in `backend/app/core/config.py` (`CLOUDFLARE_API_TOKEN`, `CLOUDFLARE_ZONE_ID`) but no functional code uses them. - [ ] Automatic domain discovery from Cloudflare account - [ ] Fetch and analyze DNS records via Cloudflare API - [ ] Suggest missing or malformed DNS entries - [ ] Track configuration changes over time ### Alerts & Notifications (Apprise) - **Documented in**: README.md ("Integration with Apprise"), docs/development/roadmap.md (Milestone 6) - **Current state**: `apprise>=1.4.5` is listed in `backend/requirements.txt` but is never imported or used anywhere in the codebase. - [ ] Apprise integration for multi-channel notifications - [ ] Email, Slack, webhook alert delivery - [ ] Alert on new failures, compliance drops, or unknown senders - [ ] Customizable alert rules and notification preferences - [ ] Alert history and management ### Forensic Reports (RFC 6591) - **Documented in**: README.md ("Forensic Reports: Analyze failure samples (RFC 6591 support)") - **Current state**: The DMARC parser (`backend/app/services/dmarc_parser.py`) only handles aggregate reports. There is no forensic report parsing, UI, or storage. - [ ] Forensic report parsing - [ ] Failure sample analysis - [ ] PII redaction options - [ ] Detailed authentication failure views ### User Authentication & Multi-User Support - **Documented in**: README.md ("Built-in authentication via FastAPI Users"), docs/development/roadmap.md (Milestone 5) - **Current state**: A `User` model exists (`backend/app/models/user.py`) and `fastapi-users[sqlalchemy]` is in requirements, but FastAPI-Users is never wired up. There are no registration, login, or password-reset endpoints. Admin auth is API-key based only. - [ ] User registration and login endpoints - [ ] JWT-based session authentication for end users - [ ] Password reset functionality - [ ] Role-based access control (RBAC) per domain - [ ] Multi-factor authentication (MFA) - [ ] Email verification ### Dashboard Visualizations (Real Data) - **Documented in**: README.md ("Track pass/fail rates over time", "Volume & Trends") - **Current state**: Stats endpoints (`backend/app/utils/stats_summarizer.py`, `backend/app/api/api_v1/endpoints/domains.py`) now query real data from the database and in-memory ReportStore. Chart.js visualizations display actual compliance trends derived from uploaded DMARC reports. - [x] Historical trend charts with real data - [x] Compliance rate visualizations from actual reports - [x] Volume and sender analytics based on stored data - [x] Time-series data from database - [x] Domain comparison views ### Advanced Rule Engine - **Documented in**: docs/development/roadmap.md (Milestone 7) - **Current state**: Not implemented at all. - [ ] Custom alert conditions - [ ] Threshold-based triggers - [ ] New sender detection - [ ] Anomaly detection ### Advanced Analytics & Reporting - **Documented in**: docs/development/roadmap.md (Milestone 10) - **Current state**: Not implemented at all. - [ ] Historical trend analysis - [ ] Comparative reporting - [ ] Export capabilities (PDF, CSV) - [ ] Scheduled reports - [ ] Custom dashboards ### Enterprise Features - **Documented in**: docs/development/roadmap.md (Milestone 11) - **Current state**: Not implemented at all. - [ ] Multi-tenant architecture - [ ] API rate limiting (beyond basic) - [ ] Advanced RBAC - [ ] SSO integration (SAML, OAuth) - [ ] Compliance reporting (SOC 2, GDPR) ### Real-Time Features - **Documented in**: README.md ("real-time insights") - **Current state**: No WebSocket or real-time push functionality exists. - [ ] WebSocket or SSE for live dashboard updates --- ## Partially Implemented ### Setup Wizard - **Status**: Endpoints exist (`/api/v1/setup/status`, `/api/v1/setup/admin`, `/api/v1/setup/system`) but store data in memory only. Not persisted to database. - [ ] Persist setup configuration to database - [ ] Complete guided onboarding flow in the UI ### IMAP Credential Security - **Status**: IMAP integration works but credential storage needs improvement. - [ ] Encrypt IMAP credentials at rest - [ ] Add vault integration for secure credential storage - [ ] Audit logging for IMAP operations ### DNS Record Health Checks - **Documented in**: README.md ("Inspect SPF, DKIM, DMARC, MX, and BIMI records"), docs/development/roadmap.md (Milestone 8) - **Current state**: The `/api/v1/domains/{domain_id}/dns` and `/api/v1/domains/summary` endpoints perform real DNS lookups via `SystemDNSProvider` (dnspython async) and `CloudflareDNSProvider` (DNS-over-HTTPS), implemented in `backend/app/services/dns_resolver.py`. DKIM selectors from DMARC reports and manually configured selectors are both checked. PTR reverse-DNS lookups power the `/sources` endpoint. Full Cloudflare zone-management integration is planned for a future milestone. - [x] Real DNS lookups for SPF, DKIM, and DMARC records - [x] Proper error handling for DNS failures and timeouts (per-domain timeouts, graceful fallback) - [x] Unit and integration tests for DNS resolution (55 tests passing) - [ ] MX record lookups - [ ] BIMI record support - [ ] Cloudflare API zone-management integration (read/write DNS records) - [ ] Provider-specific fix suggestions (Google, Microsoft, etc.) - [ ] DNSSEC validation --- ## Housekeeping - [ ] Remove unused `apprise` from `requirements.txt` or implement alerts - [x] Remove unused `dnspython` from `requirements.txt` or implement DNS checks (done — `dnspython` is used by `SystemDNSProvider`) - [ ] Remove or wire up `fastapi-users` (currently installed but unused) - [x] Replace mock data in stats endpoints with real database queries - [x] Replace mock DNS data with actual DNS lookups - [x] Add CI/CD pipeline — GitHub Actions workflows in `.github/workflows/ci.yml` (lint → test/security/CodeQL/dependency-review → Docker build/push → GitOps) and `.github/workflows/release.yml` (semantic versioning) - [ ] Reach >80% test coverage