# Overview

Source: https://developers.swell.is/apps/overview

Swell Apps offer deep configurability in a cloud-based environment, which allows apps to solve the most important and complex challenges faced by merchants, without the headaches of maintaining their own software and infrastructure.

With Swell, apps have a unique ability to package low-level functionality, for example, by enhancing or adding to a store’s native API and database, giving back control to merchants by enabling apps that can unify their data, APIs, admin workflows, and storefront experiences, all in one place.

### App architecture

The Swell app architecture is uniquely positioned to provide the ultimate control over various areas of configuration within a Swell store.

#### Data

- [**Data models**](https://developers.swell.is/apps/models) can alter a store’s database schema, either by adding fields to existing models (like products and orders) or creating completely new ones. They can also define API endpoints for CRUD requests, and display UI in the dashboard for admins to view and edit content.
- [**Assets**](https://developers.swell.is/apps/assets), including images and other types, can be stored natively in a store’s database using file fields within an app-specific or standard model. When retrieved using the automatically assigned URL, the file will get cached and served by the Swell CDN. Images can be transformed on the fly using a set of query parameters.

#### Logic

- [**Events**](https://developers.swell.is/apps/events) can be configured to fire when certain conditions are met. These can be used to trigger functions and webhooks, send notifications, or simply observe when something in the system happens that you want to keep track of.
- Apps can define [**notifications**](https://developers.swell.is/apps/notifications) for sending emails to admins or users when certain conditions are met.
- [**Webhooks**](https://developers.swell.is/apps/webhooks) can be configured to call a URL when a particular event occurs, enabling outgoing calls to external services.
- Apps can define [**functions**](https://developers.swell.is/apps/functions) to run custom code. They can be triggered by events, a cron schedule, or via URL to enable incoming calls from external services. Functions are deployed to edge data centers in 200+ locations and have no cold start time.

#### UI

- [**Settings**](https://developers.swell.is/apps/settings) provide a way for merchants to install and configure apps in the dashboard.
- [**Content views**](https://developers.swell.is/apps/content) define a full-page structure for displaying collections and records in the dashboard, or enhancing standard collections with custom fields and actions.
- **Activities** `Coming soon` define conditions and formatting for displaying event information in dashboard activity feeds, either in aggregate or for a single record.
- **Widgets** `Coming soon` are small components for viewing and editing content/data in the dashboard. They can either target a single field or a group of fields.

## First steps

- Read the [Getting started](https://developers.swell.is/apps/getting-started) guide.
- Follow a tutorial on how to [Build an admin app](https://developers.swell.is/apps/build-an-admin-app-tutorial).
- Get help from the developer community on GitHub Discussions.
