You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Automated email summarization service that connects to your inbox via IMAP, intelligently summarizes messages by topic, generates word cloud visualizations, and delivers periodic digest emails.
Features
Smart Email Filtering — Filter emails by tags (subject keywords), sender blacklists, and date ranges
AI-Powered Summaries — Automatic text summarization using the TLDR algorithm
Word Cloud Generation — Visual keyword extraction with RAKE algorithm and PNG word clouds
Scheduled Digests — Configurable periodic summaries delivered straight to your inbox
RESTful API — Clean JSON API with JWT authentication, input validation, and rate limiting
Modern Web UI — React + TypeScript + Tailwind CSS dashboard, embedded in a single binary
Production Ready — Structured logging, graceful shutdown, health checks, Docker support
Architecture
┌─────────────────────────────────────────────────┐
│ REST API (Echo v4) │
│ /api/v1/* with JWT Auth │
├──────────┬──────────┬──────────┬────────────────┤
│ Users │ Schedules│ Summaries│ Health │
├──────────┴──────────┴──────────┴────────────────┤
│ Domain Services │
│ User Service │ Summary Service │
├──────────────────────────────────────────────────┤
│ Infrastructure Layer │
│ PostgreSQL │ IMAP │ SMTP │ Encryption │ WordCloud│
└──────────────────────────────────────────────────┘
Quick Start
Using Docker Compose (recommended)
# Clone the repository
git clone https://github.com/akhil-datla/maildruid.git
cd maildruid
# Configure environmentexport MAILDRUID_AUTH_SIGNING_KEY="your-secret-signing-key"export MAILDRUID_AUTH_ENCRYPTION_KEY="your-32-byte-encryption-key!!"# exactly 16, 24, or 32 bytesexport MAILDRUID_SMTP_HOST="smtp.gmail.com"export MAILDRUID_SMTP_PORT=587
export MAILDRUID_SMTP_EMAIL="you@gmail.com"export MAILDRUID_SMTP_PASSWORD="your-app-password"# Start services
docker compose up -d
From Source
# Prerequisites: Go 1.23+, PostgreSQL# Build
make build
# Configure
cp config.example.yaml config.yaml
# Edit config.yaml with your settings# Run database migrations
./bin/maildruid migrate
# Start the server
./bin/maildruid serve
maildruid serve # Start the HTTP server
maildruid migrate # Run database migrations
maildruid version # Print version information
Development
# Install all dependencies (Go + frontend)
make deps
# Build everything (frontend + Go binary)
make build
# Run locally
make run
# Run frontend dev server with hot reload (proxies API to :8080)
make dev
# Run tests
make test# Run linter
make lint
# Format code
make fmt
# Build Docker image
make docker-build