← all projects

ToadMail

Ready-to-demo, self-hosted Gmail-style email dashboard. Python backend, vanilla JS frontend, Postfix + Maildir.

live
Python 3Vanilla JSHTML/CSSPostfixMaildirCaddyLet's EncryptUFWsystemd

Screenshots

Overview

ToadMail is a ready-to-demo, self-hosted email dashboard with a Gmail-like interface. Backend is a hand-written Python HTTP server (no framework bloat) talking directly to a Maildir store and Postfix/sendmail for delivery. Frontend is vanilla HTML/CSS/JS. It is the kind of private mail client/dashboard that can be packaged and adapted for people who want a simple hosted email interface they control.

Highlights

  • Full email client: send, receive, reply, reply-all, forward.
  • Folders: Inbox, Sent, Drafts, Trash, Starred — with star, search, multi-select, bulk delete, mark read/unread.
  • Gmail-inspired layout, responsive interface, and collapsible sidebar.
  • Compose modal, auto-refresh every 30s, full-text search across all mail.
  • Custom Python HTTP backend (http.server + email + subprocess) — zero heavyweight frameworks.
  • Postfix + sendmail for SMTP delivery, Maildir for storage.
  • Caddy reverse proxy with auto Let's Encrypt, UFW firewall, on a private custom domain.

Why

Most email clients are bloated, tracked, or locked into big-tech ecosystems. ToadMail is a lean, private, self-hosted alternative I fully own and control — from the MTA up to the UI.

Architecture

  • Python http.server backend — routes, JSON API, Maildir reader/writer, subprocess to sendmail.
  • Vanilla JS frontend — SPA feel, no framework, no build step.
  • Postfix MTA with Maildir format for reliable on-disk storage.
  • Caddy in front — automatic TLS, reverse proxy to the Python backend.
  • systemd units for the backend; UFW for firewall hardening.

Features

  • Compose modal with to / cc / bcc / subject / body.
  • Reply, reply-all, forward with quoted history.
  • Inbox / Sent / Drafts / Trash / Starred folders.
  • Multi-select + bulk delete, mark read/unread, star.
  • Full-text search across all folders.
  • Auto-refresh every 30s, mobile sidebar toggle.

Status

Ready for demos. If you want a private self-hosted email dashboard like this, request a demo and I can show the current product, discuss the setup, and scope what would need to change for your domain/VPS.

Demo / buying

  • Request a demo by emailing toad@toaddesk.dev.
  • Best fit: personal domains, small teams, private dashboards, and people who want simple hosted mail without a giant provider UI.
  • Can be adapted around your domain, VPS, storage layout, and branding.

Takeaways

  • You don't need a framework to build a real email client — Python's stdlib is shockingly capable.
  • Maildir + Postfix + Caddy is a rock-solid base for self-hosted mail without fighting Dovecot for basic IMAP.
  • A focused, low-distraction interface matters for an app you stare at all day.
toad mascot