You are browsing as a guest. Sign up (or log in) to start making projects!

Retromail

  • 1 Devlogs
  • 1 Total hours

Retro Mail 95 is a local-first Gmail client wrapped in a pixel-faithful Windows 95 interface. It reads, searches, sends, replies, forwards, archives and stars real mail through the Gmail API — with no delete path anywhere in the code. The frontend is vanilla HTML/CSS/JS; the backend is one Python file using nothing but the standard library.

Ship #1 Changes requested

Retro Mail 95 is a working Gmail client with the interface of a 1995 desktop application

Behind the nostalgia it is a real mail client. It authenticates with Google over OAuth 2.0 and uses the Gmail REST API to list and search messages across Inbox, Starred, Sent, Drafts, Spam, Archive and All Mail; render plain-text and HTML bodies (sanitized, sandboxed, with inline images inlined as data URLs); compose, reply and forward; archive, star and mark read/unread; and poll for new mail in the background.

Two constraints shaped the project:

  1. Zero dependencies. The entire backend is one Python file built on the standard library — http.server, urllib, base64, email. There is no pip install, no Node build step and no framework. Cloning the repo and running python server.py is the whole setup.

  2. Nothing leaves your machine. There is no hosted backend. The server binds to localhost, OAuth tokens are written to a git-ignored file next to the script, and the app requests only the gmail.modify and gmail.send scopes — so by construction it cannot delete a message or empty your trash, no matter what goes wrong.

The live demo runs the exact same frontend against sample messages, so you can explore the interface — folders, search, reading pane, compose, archive, star — without connecting an account.

Built with: Vanilla JavaScript · CSS · Python 3 (standard library only) · Gmail API v1 · OAuth 2.0

  • 1 devlog
  • 1h
Try project → See source code →
Open comments for this post

52m 2s logged

I’ve been staring at my inbox for years. One evening, I was thinking about a strange question: what if my inbox was put on a floppy disk back in 1995? That’s how I wrote Retro Mail 95a real email client that appears to be from that decade: blue title bar, working menu bar, the whole shebang. I managed to do this solely with CSS without any systems or images. The main challenge was ensuring everything was perfectly aligned; even two pixels off makes it look unrealistic. I began by designing the user interface with simulated emails, which proved to be an excellent decision. After that, I linked it to its backenda single Python file utilizing only the standard library, requiring no additional installations or dependencies. This was quite a task, in particular implementing the OAuth 2. 0 loopback flow myself, which consumed about 60 lines of code. Still, I am pleased that the application cannot delete emails. It only has read permissions and requests permission to modify and send emails, but there’s no mechanism to delete anything. Several aspects consumed most of my time: enabling the app to process HTML emails safely, troubleshooting a strange bug that corrupting the app after a week, and implementing polling for new emails without annoyance. Due to its dependency on native protocols, the app cannot be hosted online. But, I successfully created a demo that functions on GitHub Pages. This demo uses the same frontend code but employs simulated data. I am quite satisfied with the results. Feel free to try the demoit functions even when you’re not logged in, with the ability to browse folders search compose star archive, close the window, and re-open it by double-clicking the icon.

0
0
11

Delete project?

Are you sure you want to permanently delete this project? This action cannot be undone.

All devlogs, followers, and associated data will be removed.

Followers

Loading…