# Building a cohesive product

Components form the basis for the software that runs in Fuchsia user space. The
components you've explored so far are part of the core platform that is
generally common to all products running Fuchsia. Fuchsia products are composed
of platform components and product-specific elements to serve the unique needs
of the device hardware and user experience. In this section, you'll explore how
Fuchsia builds on components to enable product-level customization.

![Data table showing how Fuchsia enables product customization on top of the
core platform through the Session Framework and Driver Framework.](https://fuchsia.dev/static/docs/get-started/images/components/product.png)

## Session components

Sessions are components that encapsulate a product's user experience. The
session component serves as a boundary between the Fuchsia platform and the
product-level user interaction. Each Fuchsia product defines a single session
instance as the root of the product experience, which may or may not manage
additional child components.

The `session_manager` platform component starts the session component on boot
and offers it a set of capabilities necessary to support the product experience
such as window management, input event handling, or accessibility.

## Driver framework

Similar to session, the Fuchsia Driver Framework enables developers to
implement product-specific device drivers as components. Some driver components
represent hardware interface controllers, such as PCI or USB, while others
interact with end devices, such as an ethernet controller or keyboard.

As devices are discovered or attached to the system, the `driver_manager`
platform component starts the necessary driver components, binds them to the
hardware interfaces, and manages their lifecycle.

> [!NOTE]
> **Note:** For more details on the driver framework, see [Fuchsia Driver Framework](https://fuchsia.dev/docs/development/drivers/concepts/fdf).

## What's Next?

Congratulations! You've successfully built some basic Fuchsia components and
integrated them into a working system.

In the next module, you'll learn more about how Fuchsia components interact with
each other using:

[Fuchsia interfaces](https://fuchsia.dev/docs/get-started/learn/fidl)
[](https://issues.fuchsia.dev/issues/new?component=1439230&template=1881640&description=Issue+on:+https://fuchsia.dev/docs/get-started/learn/components/build-product.md "Report a bug or suggest improvements on this page") [](https://cs.opensource.google/fuchsia/fuchsia/+/main:docs/get-started/learn/components/build-product.md "View the source code of this page") [](https://ci.android.com/edit?repo=fuchsia/fuchsia/main&file=docs/get-started/learn/components/build-product.md&cloneRepo=fuchsia/fuchsia:refs/heads/main&fullPath=fuchsia/docs/get-started/learn/components/build-product.md "Edit the source code of this page")