📬 Fam Mail

Send real postcards from your browser.

Fam Mail turns your photos and a few words into printed postcards, delivered by PostGrid across the US, Canada, and the UK. Texts get forgotten; a postcard on the fridge does not.

MIT licensed · one Docker image · PostGrid test mode included
A Fam Mail postcard preview
Happy birthday, Dad. The big one this year. The lake picture is from our trip. Write back, or better, don't: there is a real card coming anyway.
NICK LEWANOWICZ
123 LAKESHORE DRIVE
APT 4
ANYTOWN, AN 00000
UNITED STATES
FAM MAIL
NOV 2026
↑ the actual preview from the wizard (click to flip)

Five steps to a real mailbox.

The wizard walks you from a blank card to a printed one. Every step shows a live preview that flips in 3D and respects each country's safe zones, so nothing important lands under a stamp.

01

Pick a photo.

It becomes the front of the card, cropped to your country's safe zone.

02

Write the back.

Bold, italic, headings, and lists print on the physical card, not just on your screen.

03

Add a recipient.

US, Canadian, and UK addresses are formatted for you.

04

Flip the preview.

A 3D render shows the exact front and back before anything is printed.

05

Send it.

PostGrid prints the card and puts it in the mail.

fam.mail/compose/message
Rich text message editor
fam.mail/compose/review
Review and send step

Your agents can send mail too.

Fam Mail ships a static-key API built for automation. My own home assistant mails a birthday card from a single sentence, which is how I know the pipeline holds. An email-to-postcard mode watches an inbox, parses requests with an LLM, and queues the card for review. Grandparents get postcards; nobody has to learn new software.

curl -X POST https://your-fam-mail.example/api/v1/postcards \ -H "Authorization: Bearer fm_live_********" \ -d '{ "front": "lake.jpg", "message": "Happy birthday, Dad.", "to": { "name": "Nick", "country": "US" } }'

Static API keys.

Versioned /api/v1 endpoints with per-key auth, so scripts and agents post on your behalf.

Email to postcard.

Forward an email to the watched mailbox; an LLM parses it and the card enters the pipeline.

Test mode first.

Mock, test, and live PostGrid modes, so your first run mails nothing by accident.

Self-hostable, start to finish.

One Docker image serves the API and the frontend on a single port. SQLite keeps users, drafts, and the mail pipeline in one file you can back up with cp. OIDC sign-in works with Pocket ID, Google, or any provider you already run, and CORS, rate limits, security headers, and XSS-sanitized input are on by default.

docker build -t fam-mail . && docker run -p 8080:8080 fam-mail

Open source, MIT licensed.

The full stack lives on GitHub: Bun and TypeScript on the backend, React 18 with Tailwind and Framer Motion on the frontend, pnpm workspaces holding it together.

NickLewanowicz/fam-mail →
MIT · Bun · React 18 · SQLite · PostGrid · Docker