DEV Community

Juno Threadborne
Juno Threadborne

Posted on

Why I built a Direct-To-Consumer SMS Marketing Platform By Myself (and why it's open source now)

The Problem: Small businesses need marketing automation, but most platforms are either prohibitively expensive, require extensive developer integration, or lack the flexibility to handle complex campaign logic. I wanted to build something that prioritized simplicity and cost-efficiency without sacrificing technical sophistication.

So I built it.

The Stack: This is a production-grade, fully containerized distributed system with 25+ Docker services:

  • C# / .NET — Message orchestration, delivery pipelines, metrics collection
  • Kafka — Event streaming backbone for every message, event, and retry
  • Postgres — State tracking, user segmentation, delivery rule management
  • Prometheus + Grafana — Real-time observability
  • Redis — Deduplication and transient state caching
  • React + TypeScript — Admin UI for campaign management and flow visualization

One command brings up the entire stack.

Why Open Source? This codebase got me hired three times, including my last role before the layoffs. The best way to demonstrate distributed systems expertise isn't to describe it in interviews—it's to show the actual implementation.

I'm open-sourcing it because I believe transparent technical decision-making creates better engineers. And because infrastructure like this shouldn't be locked behind proprietary platforms.

What's Next: Over the coming weeks, I'll be publishing a series diving into the architecture: why I made specific decisions, what tradeoffs I considered, and the reasoning behind the implementation. Not just diagrams and code—the actual thought process.

If you're interested in distributed systems, message orchestration, or just want to see how over 25 services work together in production, follow along.

P.S. You can check out the full repo here: Nudges on GitHub

Star it if you're into this kind of thing—more deep dives coming soon.

Top comments (0)