# Widgets

To build a data widget with CARTO, you need:

* **A data source:** The data for your widget and layers. It contains the authentication, connection details and location for the data in your cloud data warehouse. Learn more about [Data Sources](https://docs.carto.com/carto-for-developers/reference/carto-widgets-reference/data-sources).
  * Depending on the data source you're using, the widget will use *server-side calculations* (fully powered by your Data Warehouse) or *client-side calculations* (powered by the user's device after querying your Data Warehouse). Learn more about [Server-side vs client-side](https://docs.carto.com/carto-for-developers/reference/carto-widgets-reference/server-side-vs.-client-side).
* **A data model:**
  * [getFormula](https://docs.carto.com/carto-for-developers/reference/carto-widgets-reference/models/getformula)
  * [getCategories](https://docs.carto.com/carto-for-developers/reference/carto-widgets-reference/models/getcategories)
  * [getHistogram](https://docs.carto.com/carto-for-developers/reference/carto-widgets-reference/models/gethistogram)
  * [getRange](https://docs.carto.com/carto-for-developers/reference/carto-widgets-reference/models/getrange)
  * [getScatter](https://docs.carto.com/carto-for-developers/reference/carto-widgets-reference/models/getscatter)
  * [getTimeSeries](https://docs.carto.com/carto-for-developers/reference/carto-widgets-reference/models/gettimeseries)
  * [getTable](https://docs.carto.com/carto-for-developers/reference/carto-widgets-reference/models/gettable)
* Optionally, **filters.**
  * [Column-based filters](https://docs.carto.com/carto-for-developers/reference/filters/column-filters)
  * [Spatial filters](https://docs.carto.com/carto-for-developers/reference/filters/spatial-filters)

Additionally, you'll need:

* **A UI of your choice:** use a completely custom HTML component or integrate your favorite charting library. Many of our examples use [Apache ECharts](https://echarts.apache.org/en/index.html), but you can choose and customize your favorite library or component.
