I Built a Classifieds Site Where You Never Give Out Your Email — Here's the Architecture
Every time you post a classified ad — a used phone, a sublet, a gig offer — you're asked to hand over your email address. That address then sits on a public page, scraped by bots, and three days later your inbox fills up
Every time you post a classified ad — a used phone, a sublet, a gig offer — you're asked to hand over your email address. That address then sits on a public page, scraped by bots, and three days later your inbox fills up with "You've won a $500 gift card" and "URGENT: verify your account now."
I kept running into this problem, so I built the thing I wished existed: MingList — a free classifieds site where the posting form doesn't even have an email field. It just launched. Here's how it works under the hood.
The core idea: a relay address per listing
Instead of collecting your email, MingList generates a per-listing relay address, like [email protected]. Buyers see only that address on the listing page. When they reply, the relay forwards the message to your real inbox — with your real address stripped out. You reply from your normal mail client, and the response goes back through the relay, so the buyer still never learns who you are.
Two-way, per-listing, disposable by design. If a listing attracts spam, the relay can be muted without touching anything else.
The stack (and why it costs $0/month)
I'm a solo developer, so the stack had to be boring and cheap:
- Cloudflare Pages hosts the frontend — plain HTML/JS, no framework tax, cached at the edge.
- Cloudflare Workers run the API: posting, replying, relay routing. Workers sit naturally in the mail path, which makes the relay logic a simple function instead of a separate email microservice.
- Cloudflare D1 (SQLite at the edge) stores listings and relay mappings. One logical database, replicated close to users.
- Resend handles the actual email delivery for relay forwards. Everything runs inside the Cloudflare free tier. The only variable cost is email volume through Resend, which is negligible at classifieds scale. The whole site has no accounts, no passwords, and no card — posting asks for a display name and a listing, nothing else. Design decisions worth sharing
- No accounts at all. Sign-up friction kills classifieds sites, and stored accounts create a data-leak liability. Removing the account system removed an entire class of privacy problems. The tradeoff is lighter moderation hooks — something I'm actively working on (report buttons and rate limiting are next on the roadmap).
- The relay is per-listing, not per-user. A per-user alias would leak correlation across listings ("this seller on three different posts is the same person"). Per-listing aliases keep each ad an independent identity.
- Bot-resistant by construction. Since there's no email address on the posting page to scrape, the classic "harvest ads → spam sellers" pipeline has nothing to harvest. Buyers write to the relay; the relay decides what gets through.
- Trust without identity. There's a trust & safety page explaining exactly what is and isn't collected — because a privacy product that can't articulate its own data flow isn't credible. What I learned building it
- Email is an API. Treating replies as structured messages routed through Workers (rather than a mailbox to check) made the whole feature surprisingly small.
- Removing features is a feature. "No email field" became the entire marketing hook — the demo writes itself, and people instantly get it.
- Free-tier serverless is enough for launch. The launch-week plan is Product Hunt, Reddit, Show HN — none of that traffic requires a provisioned server. Try it The site is live at minglist.top — free, no account, no card. There's also a 1-minute explainer video showing the relay flow. If you've built something on Workers/D1, I'd love to hear how you handled email — the relay edge cases are the most interesting part of this system. Ask me anything in the comments.
Originally published by Dev.to WebDev. Aggregated on AIWithGhost for educational purposes — full credit and traffic to the original publisher.