DeleteMePlease#
A Django web application that automates GDPR data deletion requests. Users submit requests through a web interface, sign a Letter of Authority (LOA), and the system manages the entire email correspondence lifecycle with companies.
Quick Start#
Prerequisites#
- Python 3.13+
- PostgreSQL 17 (production) or SQLite (development)
- uv package manager
Development Setup#
# Install uv if not already installed
curl -LsSf https://astral.sh/uv/install.sh | sh
# Install dependencies
uv sync
# Run database migrations
uv run python app/manage.py migrate
# Populate with test data
uv run python app/manage.py simulate seed
# Create an admin user (admin/admin)
uv run python app/manage.py createsuperuser
# Start development server
uv run python app/manage.py runserver
Visit http://127.0.0.1:8000/admin/ and login with:
- Username:
admin - Password:
admin
Note: These are test credentials for local development only.
Key Commands#
# Development workflow - Quick start with realistic test data
uv run python app/manage.py simulate seed # Create realistic test data (recommended)
uv run python app/manage.py simulate seed --clear # Clear existing data and reseed
# Testing
uv run python app/manage.py test
# Code quality
uv run ruff check
uv run ruff format
Test Data with simulate seed#
The simulate seed command creates comprehensive, realistic test data for development and manual testing:
What it creates:
- 5 companies with varied verification status and privacy contacts
- 2 test users (Alice and Bob) with 2 verified emails each
- 4 deletion requests at different stages of the lifecycle:
- SIGNING_READY: Ready for user to sign Letter of Authority
- IN_PROGRESS (1 message): Initial request sent, awaiting company response
- IN_PROGRESS (3 messages): Multi-turn conversation with company requesting verification
- SUCCESS: Completed request with full conversation history and classification
- Realistic email conversations with timestamps spread over days/weeks
- Complete conversation threading with incoming/outgoing messages
- Email templates for common scenarios
Test user credentials:
- Alice:
alice@example.com/testpass123 - Bob:
bob@example.com/testpass123
Documentation#
- Architecture - Technical architecture, data models, and development guide
- Roadmap - Project status, completed features, and planned enhancements
- Implementation Plans - Detailed plans for pending features
Architecture Overview#
Django Apps#
- config: Main project config, landing pages, settings
- badactors: Core GDPR deletion request functionality
- profiles: User authentication and profile management
Key Models#
DeletionRequest: GDPR deletion request with status trackingCompany: Company information and privacy contactsLetterOfAuthority: Generated PDF documents for signed requestsConversationItem: Individual messages in email conversationsPendingEmail: Outbound emails awaiting review/approval
See ARCHITECTURE.md for complete technical details including email integration, deployment architecture, and data model relationships.
Admin Workflows#
Processing Deletion Requests#
- User creates request → Status:
EMAIL_VERIFICATION_PENDINGorSIGNING_READY - User verifies email (if needed) → Status:
SIGNING_READY - User signs LOA → Status:
SUBMITTABLE(auto-queues email) - Admin reviews/sends pending email → Status:
IN_PROGRESS - Company replies → Admin classifies and responds
- Cycle continues until → Status:
SUCCESSorFAILED
Admin Actions#
- Pending Emails: Review drafts, bulk send approved emails
- Email Classifications: Classify incoming emails, select response template
- Conversations: View complete email timeline
- Companies: Manage privacy contacts and verification
See ARCHITECTURE.md for detailed admin workflow documentation.
Resources#
- Django Admin:
/admin/ - User Accounts:
/account/ - Deletion Requests:
/deletionrequest/
For Contributors: See ARCHITECTURE.md for technical details and ROADMAP.md for current development status.