Skip to content

Releases: hacky1997/voice-based-email-for-blind

v2.0.0 — Complete Rewrite: PWA + OAuth2 + Multi-provider IMAP

20 Mar 18:57

Choose a tag to compare

What's New in v2.0.0

This is a complete rewrite of the original 2019 voice email project.

🔐 Authentication

  • Gmail — Proper OAuth2 via Google API (no password ever stored)
  • Yahoo Mail — App Password support over IMAP/SMTP
  • Any IMAP provider — Generic IMAP/SMTP with configurable host/port

📱 Progressive Web App (Mobile)

  • Installable on any phone via browser (no app store)
  • Works on Android (Chrome) and iOS (Safari)
  • Voice input via Web Speech API — no server-side audio files
  • Offline shell caching via Service Worker
  • Dark, accessible UI optimised for touch

✉️ Email Features

  • Send email by voice or keyboard
  • Read inbox with sender, subject, and body
  • Read email aloud using text-to-speech
  • Reply to emails by voice
  • Delete emails (moves to trash)
  • Mark as read
  • Contact book with voice-search autocomplete

🏗 Architecture

  • Modular Flask REST API backend
  • Separate auth/, email_client/ packages
  • Environment-based config via .env (no hardcoded credentials)
  • Docker + Caddy for automatic HTTPS
  • Deployable to Railway or Fly.io in ~5 minutes

🧪 Tests

  • 45 tests across API routes, contact CRUD, and email utilities
  • Fully mocked — no real email account needed to run tests
  • make test or make test-cov for coverage report

⚙️ CI/CD

  • CircleCI pipeline: lint → test → Docker smoke test
  • Docker image built and validated on every main push

Quick Start

git clone https://github.com/hacky1997/voice-based-email-for-blind.git
cd voice-based-email-for-blind
make install   # creates venv, installs deps, copies .env.example
# edit .env with your credentials
make run       # http://localhost:5000

See DEPLOY.md for mobile HTTPS setup, Docker, Railway, and Fly.io.


Breaking Changes from v1

  • Google removed "Less Secure Apps" support in 2024 — the old SMTP auth no longer works. Use OAuth2 (Gmail) or an App Password (Yahoo/others).
  • pyglet and temp MP3 files replaced by the browser's built-in speech engine.
  • Credentials must be in .env — never in source code.