As modern software systems grow in complexity, teams structure applications as loosely-coupled components to enable autonomous work without full-system knowledge. Traditional modularity separates frontend and backend by runtime, technology, or infrastructure, which often causes friction such as waiting for APIs, synchronizing deployments, and mismatched layers. Full-stack components encapsulate both frontend UI and backend logic around business goals, enabling teams to deliver complete features without dependencies on other teams and abstracting infrastructure concerns. Harmony is a lightweight library that composes independently delivered full-stack components, called "aspects", to form unified platforms with multiple runtime entry points.
Traditionally, modularity in software has been driven by technical considerations - separating frontend and backend services based on their runtimes, technologies, or infrastructure needs. While this separation has its advantages, it also creates friction. Teams often find themselves waiting on API implementations, synchronizing deployments, or struggling with mismatches between the frontend and backend layers of a feature. Build in AI speed - Compose enterprise-grade applications, features, and components Full-stack components introduce a different way of thinking about modularity.
Instead of splitting software along technical boundaries, they encapsulate entire units based on business goals. A full-stack component includes both the frontend UI and the backend logic required to power it, enabling teams to deliver complete features without dependencies on other teams. This approach abstracts away infrastructure details, allowing developers to think in terms of product functionality rather than system architecture.
Harmony is a lightweight library built to streamline the integration of composable software. It enables teams to combine independently delivered full-stack components, called "aspects", to form unified, cohesive platforms. A single "aspect" component can provide multiple entry files, one for each runtime, whether it's the browser runtime, Node.js runtime, and possibly, other runtimes. For example, see the files of the "People" feature implemented as a Bit aspect component:
Collection
[
|
...
]