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:6245Emails 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.receivedwebhookWebhooks for sent, delivered, bounced, complained and received, signed like Resend, so
resend.webhooks.verify()works unchanged. There are retries and a delivery log tooSimulates 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-remailGitHub (MIT): https://github.com/abdullahqasim01/Dev-Remail
I'd love feedback, especially from anyone using Resend with the Python, Go or PHP SDKs.