---
title: Shopware App Fundamentals | Shopware Community Hub
description: >-
  Introduces the fundamental underpinnings of the app system, including App file
  structure, defining a Manifest file, and integrating Custom Data.
canonical_url: 'https://hub.shopware.com/learn/course/shopware-app-fundamentals'
---

# Shopware App Fundamentals

<LearningObjectives>

- Build a basic Shopware App.
- Understand how Shopware Apps interact with a Shopware shop.
- Recognize the relative advantages and disadvantages of developing an App over developing a plugin.
- Get familiar with available App features.

</LearningObjectives>

# Shopware App Fundamentals

Apps are designed to allow maximum impact with minimal coding. With the proper understanding of how they work, App development can become a powerful tool in your Shopware toolbox.

In this course, you will explore the **fundamentals of the App System**.

## How This Course Works: "Code-Along"

This course follows a **code-along** approach using the demo App [ShopwareStoreTracker](https://github.com/ShopwareAcademy/ShopwareStoreTracker) as an example.

The App **ShopwareStoreTracker** collects and displays information about Physical Stores belonging to the business.

Each learning unit is linked to a specific [Git Tag](https://git-scm.com/book/en/v2/Git-Basics-Tagging), so you can stay in sync with every step of the development process. You can check out a tag at any point with:

```bash
git checkout tags/[tag_name]
```

<Callout title="Tip" type="info">

If you see an error like `error: Your local changes to the following files would be overwritten by checkout` when checking out a tag, you may need to reset local changes with: `git reset --hard HEAD`. Be careful: This will remove uncommitted changes.

</Callout>

### Course Conventions

Some terminology used in this course may be new to you. Here are the most important terms:

- **Shopware Root**: The base directory of your Shopware installation
- **App Root**: The folder containing your App (usually under `custom/apps/YourAppName`)
- **App-Server Root**: The base directory of your App's backend server (can be anywhere on your machine)
- **Semantic Versioning**: Version numbers follow the format `Major.Minor.Patch` (e.g., `3.1.5`)

<Callout title="Terminal Commands in the Course" type="info">

All commands are shown in a Linux shell. The tools we use (`composer`, `symfony`, `git`, ...) are cross-platform and work with most modern Operating Systems.

</Callout>

## Learning Units

## Units
- [Understanding the App System](/learn/unit/understanding-the-app-system): A theoretical introduction to the Shopware App System: what it is, why it exists, how it differs from plugins, and the core concepts you need to know before…
- [Setting Up Shopware Apps](/learn/unit/app-setting-up-shopware-apps): Get your system ready for App development by setting up Shopware locally and installing the demo App.
- [Understanding the Manifest File](/learn/unit/the-manifest-file): Learn how the manifest.xml file defines your App’s identity, permissions, and integration points within the Shopware App System.
- [Introducing the App Server](/learn/unit/app-introducing-server): Learn what the App server is, when you need one, and how to set up a local instance using the Symfony App bundle.
- [Connecting the App and the App Server](/learn/unit/connecting-app-and-app-server): Understand the Shopware App handshake process in detail: how to register your App Server, exchange secrets, and establish secure two-way communication.
