Why I Publicly Posted the Full Source for my Business

Stephen Collins
4 min readDec 20, 2024

--

UnAd Logo

Yes, you read that right. I spent almost 3 years working on the code for my business, then posted the entire monorepo on GitHub.

Why?

When I was 12, learning to code on my own, I used to daydream about what ‘real software’ looked like. What did the code look like behind the scenes?How did the “pros” build it?

Now, after decades of learning, building, and running software projects, I’ve decided to open-source UnAd — a full-scale, production-grade SaaS platform I built from the ground up. This project isn’t just a tool; it’s the culmination of everything I’ve learned about clean architecture, scalability, and modern development practices.

If you’re a developer wondering what goes into building ‘real software,’ I hope UnAd gives you the look I always dreamed of.

What Is UnAd?

UnAd is a scalable text-messaging platform built for small and medium-sized businesses. It combines a React frontend, a .NET 8 and Node.js backend, and event processing to create a system that is both responsive and resilient. Underneath it all is a well-structured monorepo designed to keep the development process efficient and maintainable.

Why Open Source It Now?

By open-sourcing UnAd, I’m hoping to help others see what goes into building a production-grade system. Whether you’re curious about monorepo structure, event-driven design, or clean GraphQL APIs, UnAd is a living example of how these pieces can fit together. In a way, this is also a gift to my younger self — a resource I would’ve loved to explore when I was learning.

A Quick Tour of the Code

The UnAd repository is structured as a monorepo, containing every line of code that powered my business — minus any sensitive credentials, of course.

  • Infrastructure as Code: The project was originally hosted on AWS, with all infrastructure push-button deployed using Terraform, ensuring consistency and repeatability.
  • Fully Local Development: The development experience is (almost) entirely local, thanks to Docker containers. The only exceptions are dependencies on Twilio and Stripe for messaging and payments, which require live accounts to test.
  • Backend Simplicity: The backend uses HotChocolate for a clean, intuitive GraphQL implementation, making modifications fast and developer-friendly.
  • Frontend Trade-Off: The frontend was built with Next.js, which worked well initially but revealed long-term challenges that I’ll dive into in a future post.
  • Ease of Use: The system was designed with ease of use in mind for everyone — developers, clients, and customers alike.
  • Local development is streamlined.
  • Deployments are automated via CI/CD pipelines on GitHub.
  • Testing is seamless, thanks to Testcontainers for isolated, reproducible environments.

Whether you’re exploring modern monorepo design, GraphQL backends, or clean infrastructure automation with Terraform and Docker, UnAd provides a practical example of how these tools can come together to deliver a scalable, developer-friendly system.

How Others Can Use It

UnAd isn’t just a project; it’s a learning tool, a real-world example of how modern systems can be built, organized, and deployed. Whether you’re a developer looking to level up or someone curious about what “real software” looks like, here’s what you can do with it:

1. Explore a Full-Scale Monorepo
UnAd is structured as a monorepo, meaning the frontend, backend, and infrastructure code all live together in one place. This setup keeps things clean, centralized, and easy to navigate — perfect for understanding how complex systems can be managed effectively.

2. Learn Modern Development Patterns
UnAd showcases practical solutions to common software challenges, including:

  • Infrastructure as Code with Terraform.
  • Dockerized Local Development for seamless environments.
  • A clean GraphQL backend and a (mostly) smooth Next.js frontend.
  • Automated CI/CD pipelines with GitHub Actions.

If you’ve been wondering how to combine these tools in your own projects, UnAd gives you a living example of how they work together.

3. Dive into Event-Driven Architecture
UnAd relies on Kafka to handle out-of-process tasks, improving scalability and responsiveness. If you’re curious about event-driven systems, the implementation here provides a hands-on way to see it in action.

4. Use It as a Reference for Your Projects
This isn’t a barebones project — it’s the actual code that powered a business. You’ll find practical patterns, real-world design choices, and lessons learned throughout. Whether you’re building something similar or just looking for ideas, UnAd can serve as a reference and a guide.

5. Adapt and Experiment
While the code is licensed for non-commercial use, you’re free to explore, learn from it, and adapt it to your needs. Run it locally, experiment with the architecture, or use parts of it as inspiration for your own work.

A Final Note

In a way, UnAd is my gift to the younger version of me — the one who daydreamed about seeing real software in action. I hope it helps you as much as building it helped me.

You can check out the full repository at https://github.com/The-UnAd/monov2.

I’d love to hear your thoughts, feedback, or any ideas this project might inspire.

Let’s learn together.

--

--

Stephen Collins
Stephen Collins

Written by Stephen Collins

A life-long geek passionate about education and compassion for others.

No responses yet