How to Build a Reusable SaaS Foundation That Compounds
A practical guide to building a reusable SaaS foundation: what to standardize first, what to leave per product, and how to keep the shared core from rotting.
Build a reusable SaaS foundation by standardizing the parts every product shares and refusing to standardize the parts that make each product different. That line is the whole design problem. Get it right and every new venture starts at the seventy percent mark. Get it wrong and you build a rigid framework that fights every product you try to ship on top of it. Here is how I draw the line.
What to put in the shared foundation first
Start with the plumbing that is identical across products and that nobody wants to rewrite: authentication, billing, deploy pipeline, logging, and the base data layer. These are the parts where being different buys you nothing. Nobody chooses your product because your login is bespoke. They just want it to work, be secure, and not leak.
I standardize these first because they carry the most audit and security risk, and I want that risk handled once. When auth lives in the foundation, every venture inherits the same session handling, the same permission model, the same audit trail. That is how you get one governed foundation under every company instead of twenty inconsistent implementations of the same login screen.
Deploy comes next. If shipping a new product means reinventing CI, you have not saved anything. Owning your own deploy pipeline once, then pointing every venture at it, is where a lot of the real time savings hide.
What to leave per product on purpose
Do not put the product itself in the foundation. The core value, the thing a customer pays for, has to stay per venture, and you should feel free to build it however that product needs. Domain logic, the specific data model, the UI that makes the product feel like itself: keep all of it out of the shared core.
The mistake I see is a team that tastes the reuse win on auth and then tries to abstract the product too. They build a configurable mega-framework that can supposedly be any SaaS with the right settings. It can be none of them well. The foundation should be invisible scaffolding, not a straitjacket. If adding a foundation feature requires you to reason about five unrelated products at once, it does not belong in the foundation.
How to keep the shared core from rotting
A reusable core rots the moment nobody owns it and everyone forks it. Two rules keep mine alive.
First, the two-customer rule. Nothing enters the shared foundation until a second venture actually needs it. One venture needing something is a feature of that venture. A second venture asking is the signal that the thing is genuinely shared. Premature abstraction is how you build wrong abstractions that everyone then has to work around.
Second, version and deprecate like a real vendor. When I change the shared billing module, every venture on it feels the change. So changes are backward compatible by default, deprecations get announced before they break anything, and migrations ship as scripts, not as a note that says update your code. This is the same discipline you would demand from any dependency you did not control. Your own foundation deserves it more, not less.
Use the build loop to keep it real
A foundation described in a wiki is a wish. A foundation that ships as tested code is an asset. I run every foundation change through the same spec-driven development loop I use for product work, so a change to the shared core arrives with a spec, tests, and a real diff. Bootspring is the tool that turns those specs into shippable increments, which matters more for shared code than product code, because a broken foundation breaks everything downstream at once.
The payoff shows up on venture number three, not venture number one. The first product pays full price to build the foundation and its own logic. The second reuses the plumbing and feels the discount. By the third, starting a company means writing the part that is actually new and inheriting the rest, which is exactly why each next venture is cheaper to ship.
Standardize the plumbing, protect the product, own the core, and make the whole thing good enough that nobody wants to copy-paste around it. That is a reusable foundation that compounds instead of one that rots.