Aladdin Biyabangerd
All workTeam email product

MailRoom

A place to write email, send it to one person or a whole list, reuse the same letter later, and see whether it arrived and was opened.

Built and online · Team email product · One-off emails · List campaigns · Saved templates · Send history · Open tracking · Unsubscribes

The problem

Invitations, updates and newsletters usually live in a personal inbox, a spreadsheet of addresses and a separate draft of the letter. When something goes wrong, nobody can tell which list was used, which version went out, or who already opted out.

What I built

One product for the letter, the list and the send. Save a template, pick contacts, send now or later, and keep history, delivery and opens next to the same record.

Why it matters

The same address is not written to again by mistake after an unsubscribe, and a campaign can be judged from one place instead of three tools that never quite match.

My role

My own product. I designed and built all of it myself — accounts, delivery, the editor, campaigns and the screens people work from. It is online; the source is public.

MailRoom · online

MailRoom analytics: send, delivery and open rates with campaign performance table
MailRoom compose screen: sidebar navigation, subject line, and visual HTML editor

How it works

    • Send email
    • Campaigns
    • Templates
    • One send: draft → queued → delivered
    • PostgreSQL
    • Outbound mail
A saved template, a campaign and a one-off message all leave through the same delivery path and land in the same history — so opens and unsubscribes attach to one record, not to three tools that disagree.

Built with: TypeScript · Fastify · Prisma · PostgreSQL · React · Vite · TipTap · TanStack Query · Nodemailer · Docker