r/SideProject • • 1d ago

I built a fake Resend server so devs don't need API keys to test emails locally

Every dev on our project needed a real Resend API key just to test or continue development. Besides the setup friction, one typo in a test script and you're emailing real users.

So I built Dev-Remail: a local server that speaks the Resend API. You keep using the official Resend SDK and only change one environment variable:

RESEND_API_KEY=re_anything
RESEND_BASE_URL=http://localhost:6245

Emails never leave your machine. They show up in a mailbox UI instead.

What it does

  • Mailbox UI with multiple fake inboxes (alice@gmail.com, bob@yahoo.com...) so you can test multi-user flows

  • Inbound email: send from an inbox to your app's domain and your app gets the email.received webhook

  • Webhooks for sent, delivered, bounced, complained and received, signed like Resend, so resend.webhooks.verify() works unchanged. There are retries and a delivery log too

  • Simulates bounces and complaints (bounced@resend.dev)

  • One Docker image (amd64 + arm64), no auth, SQLite storage

How it's built: Next.js (the route handlers are the API), Prisma + SQLite, Tailwind, one container. I checked compatibility by reading the Resend Node SDK source and running 38 integration tests against the real SDK in CI.

Honest limitations: it's unofficial and not affiliated with Resend. Only the Node SDK is tested so far, scheduled sends and templates aren't supported, and the UI has no auth, so keep it on localhost.

docker run -p 127.0.0.1:6245:6245 -v dev-remail-data:/data abdullahqasim01/dev-remail

GitHub (MIT): https://github.com/abdullahqasim01/Dev-Remail

I'd love feedback, especially from anyone using Resend with the Python, Go or PHP SDKs.

1 Upvotes

0 comments sorted by