top of page

From One Supabase App to Ten: When You Realize You're Building a Platform

  • techsandpartnershi
  • 1 day ago
  • 6 min read

AI tools such as Lovable, Claude Code, and Cursor have transformed software development by dramatically increasing the rate at which organizations can create applications. However, they have not changed the economics of architecture. Every new application introduces additional dependencies, shared capabilities, and operational complexity. As a result, teams reach platform-scale challenges far sooner than they did in previous generations of software development. Many organizations still believe they are building a collection of applications, when in reality they are operating the early stages of a platform. The sooner this shift is recognized, the easier it becomes to make sound decisions about ownership, boundaries, data, and long-term system evolution.


Everything Works Fine Until the Next Application


Most architectural problems are invisible when there is only one application.


A single application can own its authentication, permissions, integrations, business logic, user interface, and deployment pipeline. Everything lives in one place, the team understands the system, and moving quickly is often more important than defining perfect boundaries.

This is one of the reasons modern tools such as Supabase and Lovable are so powerful.


They allow teams to turn ideas into working software with unprecedented speed. For many organizations, this means the first application reaches production in days or weeks rather than months.


The challenge begins when the organization builds another application.


The second application often needs some of the same capabilities as the first:


  • Authentication and user management

  • Organizations and team memberships

  • Permissions and roles

  • Notifications and communications

  • CRM data

  • Billing and subscriptions

  • Customer information


At first, these dependencies seem harmless. Reusing a few tables or copying a bit of logic appears much faster than investing in a broader architectural discussion.

Then more applications arrive.


Soon the organization starts asking questions that feel technical on the surface:


  • Should multiple applications share a database?

  • Should we use separate schemas?

  • How do we share authentication?

  • How do we handle migrations?

  • Should applications communicate through APIs or directly access data?

  • How do we avoid implementing the same functionality repeatedly?


These questions appear in almost every growing software organization. They are especially common today because AI-assisted development allows teams to create applications faster than ever before.


However, these are not database problems, migration problems, or even technology problems.


They are signals that the organization has reached a new stage of evolution.


What was once a single application is becoming an ecosystem of applications. And the architecture that worked perfectly for one application is now being asked to support many.


This is the point where most teams discover they are no longer solving an application problem. They are beginning to solve a platform problem.



Every Application Contains Two Different Systems


One of the most common architectural mistakes is treating an application as a single thing.

From the user’s perspective, it is a single thing. They open an application, perform a task, and achieve a desired outcome. The boundaries seem obvious.


From an architectural perspective, however, most applications are actually a combination of two very different systems.


The first is the application layer.


This is the user experience. It defines how users interact with the system and how a specific problem is presented to a specific audience.


Examples include:


  • A customer portal

  • An internal operations dashboard

  • A mobile application

  • A partner portal

  • An administration panel


The application layer is responsible for workflows, screens, navigation, and user experience. It exists to serve a particular audience and solve a particular use case.


The second is the domain layer.


This is where the actual business capabilities live.


Examples include:


  • Identity and authentication

  • Organization management

  • CRM

  • Billing

  • Product catalog

  • Communication and notifications

  • Project management

  • Inventory management


Unlike user interfaces, these capabilities are not tied to a particular application. They represent business concepts that often remain relevant for years, even as applications come and go.


This distinction becomes important as organizations build more software.


A company may launch a customer portal, a mobile application, and an internal administration system. At first glance, these appear to be three separate products. In reality, all three may depend on the same organizations, users, permissions, customer records, and communication capabilities.


The problem is that many teams package both layers together.


Instead of thinking:

  1. CRM Domain

  2. Organization Domain

  3. Identity Domain


consumed by

  1. Customer Portal

  2. Mobile App

  3. Admin Dashboard


they build:

  1. CRM App

  2. Customer App

  3. Admin App


and place the domain logic inside each application.


Initially, this approach feels efficient. Each team owns its own application, and development can move quickly.


Over time, however, the same business capabilities start appearing in multiple places. Authentication is implemented repeatedly. Organization management is duplicated.

Customer data exists in several systems. Integrations become scattered across applications.


The organization believes it has multiple applications, but what it has actually created are multiple copies of the same domains.


This is often the moment when discussions about shared databases, cross-schema joins, migration ownership, and service boundaries begin to emerge.


The real issue is not the technology.


The real issue is that business capabilities have been embedded inside applications instead of being treated as independent domains with clear ownership.


Applications should be optimized for delivering a unique experience to a specific audience.


Domains should be optimized for ownership, consistency, and reuse.


When these two concerns are separated, adding a new application becomes significantly easier. Instead of rebuilding capabilities that already exist, the new application simply consumes domains that the organization already owns.



Applications Should Consume Domains, Not Own Them


As organizations build more applications, they often discover that the same business capabilities keep appearing everywhere.


The CRM application manages organizations.


The customer portal manages organizations.


The hiring application manages organizations.


Each application implements its own permissions, integrations, user management, and business rules.


What initially looks like application independence gradually becomes duplication.


The root cause is simple: applications are being treated as owners of business capabilities.


A more sustainable approach is to identify the capabilities that exist beyond any individual application and treat them as independent domains.


For example:

  1. Identity

  2. Organization Management

  3. CRM

  4. Communication

  5. Billing


These domains own their data, business rules, permissions, and integrations. Applications no longer own those capabilities. Instead, they consume them.


A customer portal, mobile application, and administration dashboard may all rely on the same Identity and Organization domains while delivering completely different user experiences.


This shift creates an important realization. Once multiple applications start depending on the same domains, a platform naturally begins to emerge.


Most organizations do not consciously decide to build a platform. They simply build more applications until they discover that authentication, permissions, organizations, communication, and other capabilities have become shared dependencies.


At that point, the architectural challenge is no longer about individual applications. It is about defining ownership of reusable business capabilities.


Applications should own user experiences.


Domains should own business capabilities.


The collection of those shared domains becomes the foundation upon which future applications can be built without recreating the same functionality over and over again.


The Organizations That Scale Will Think in Domains



The next generation of software organizations will not be defined by how quickly they can build applications.


AI has already changed that equation.


Building software is becoming increasingly accessible. Creating a new application, dashboard, workflow, or internal tool is no longer the primary challenge. Every year the cost of implementation decreases, and the speed of delivery increases.


What remains difficult is managing complexity.


As organizations create more applications, they inevitably face questions about ownership, shared capabilities, data boundaries, authentication, permissions, integrations, and governance. These are not technology problems. They are consequences of how the organization structures its systems.


Teams that continue thinking primarily in terms of applications often find themselves rebuilding the same capabilities repeatedly. Authentication appears in every application.

Customer management appears in every application. Permissions, notifications, billing, and integrations become scattered across multiple systems. Every new application increases complexity faster than it creates value.


Organizations that think in terms of domains take a different path.


They identify the business capabilities that are central to their operation and give them clear ownership. Identity becomes a domain. Organization management becomes a domain. CRM becomes a domain. Communication becomes a domain. Applications are then built as consumers of those capabilities rather than owners of them.


The result is not just better architecture.


It is a different way of evolving software.


New applications can be created without recreating existing capabilities. Teams can move faster without creating additional silos. Business logic becomes more consistent, ownership becomes clearer, and architectural decisions become easier because the boundaries already exist.


Many organizations believe they are managing a collection of applications. In reality, they are building the early stages of a platform.


The sooner this shift is recognized, the easier it becomes to make decisions that will continue to serve the organization years from now.


The most important question is no longer:

What application should we build next?

It is:

Which business capability should we own next?

The organizations that learn to answer that question well will be the ones best positioned to scale in the age of AI-native software development.

 
 
 
bottom of page