Over the last two decades, I've worked on more projects than I can count. Each new one was an improvement over the last sometimes because I learned from mistakes, other times because new tools or patterns became available.
But no matter how much experience I had, every project came with its own quirks. Different requirements, different client needs, different libraries, and platforms that kept evolving (or disappearing).
The Authentication Saga
Take authentication, for example. We knew early on it wasn't worth reinventing the wheel.
We started with IdentityServer, which was great until it became a licensed product and disappeared from the open-source space.
Then came ASP.NET Identity, but it quickly grew bloated with features we didn't need.
We tried Azure AD, but setting it up was a pain and supporting Apple ID logins was in the preview at that time.
Later, we moved to Firebase Auth, which worked until it didn't. When it went down for 6 hours last month, my clients lost 6 hours of sales. That's not the kind of reliability you can build a business on.
Another Pain Point: Spaghetti Business Logic
Another thing I kept seeing: developers scattering business logic everywhere. Massive services, unnecessary abstractions, code that didn't belong where it was. Debugging or extending features became a treasure hunt.
The Breakthrough
On every new project, I made small, incremental improvements. Over time, I pushed those improvements back into older projects too.
What I noticed made me very happy:
A rigid but sensible structure prevented over-engineering.
Developers stopped putting code in the wrong place.
The team spent less time on boilerplate and more time building actual features.
The result? Productivity shot up, and everyone was happier.
The Culmination: ShipDotnet
All those lessons, improvements, and scars from past projects led me to build:
... a proven foundation that today powers multiple multi-million-dollar companies.
It's not just code. It's a product-ready starter kit with the boring stuff already done, so you can focus on what makes your app unique.
Out of the box, ShipDotnet comes with:
β Authentication & Authorization
β Payments
β Multi-tenancy support
β Dashboard, Landing Page & Docs site
β Built-in CQRS + DDD patterns (easy to grasp in practice)
β AI integration
β Real-time data
β Dynamic roles
β Scalability from day one β grow without painful refactors
I wanted to build something I wish I had when I started all those years ago.
If you're an experienced dev, it gives you a battle-tested foundation so you don't waste time on setup.
If you're a fresh developer, it gives you a real-world look at how production software is built, you'll learn modern patterns, architecture, and best practices just by working with it.
π Check it out here: shipdotnet.com
If you enjoyed this post and want to stay updated, follow me on Twitter for the latest updates and check out my projects on GitHub.
Feel free to reach out with any questions or feedback.
Top comments (0)