> ## Documentation Index
> Fetch the complete documentation index at: https://docs.shipthing.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Adding apps

> Learn how to add apps to your ShipThing workspace.

<Warning>
  Advanced topic

  This is an advanced topic - you should only follow these instructions if you are sure you want to add a new app to your ShipThing project within your monorepo and want to keep pulling updates from the ShipThing repository.
</Warning>

In some ways - creating a new repository may be the easiest way to manage your application. However, if you want to keep your application within the monorepo and pull updates from the ShipThing repository, you can follow these instructions.

To pull updates into a separate application outside of `web` - we can use [git subtree](https://github.com/git-subtree/git-subtree).

Basically, we will create a subtree at `apps/web` and create a new remote branch for the subtree. When we create a new application, we will pull the subtree into the new application. This allows us to keep it in sync with the `apps/web` folder and use it as the initialization code for the new app

To add a new app to your ShipThing project, you need to follow these steps:

## Create a subtree

First, we need to create a subtree for the `apps/web` folder. We will create a branch named web-branch and create a subtree for the `apps/web` folder.

```sh theme={"system"}
git subtree split --prefix=apps/web --branch web-branch
```

## Create a new app

Now, we can create a new application in the apps folder.

Let's say we want to create a new app `ai-chat` at `apps/ai-chat` with the same structure as the `apps/web` folder (which acts as the template for all new apps).

```sh theme={"system"}
git subtree add --prefix=apps/ai-chat origin web-branch --squash
```

You should now be able to see the `apps/ai-chat` folder with the contents of the `apps/web` folder.

## Update the app

### Pull the latest updates from the ShipThing repository

The command below will update all the changes from the ShipThing repository:

```sh theme={"system"}
git pull upstream main
```

### Push the web-branch updates

After you have pulled the updates from the ShipThing repository, you can split the branch again and push the updates to the `web-branch`:

```sh theme={"system"}
git subtree split --prefix=apps/web --branch web-branch
```

Now, you can push the updates to the `web-branch`:

```sh theme={"system"}
git push origin web-branch
```

### Pull the updates to the new application

Now, you can pull the updates to the new application:

```sh theme={"system"}
git subtree pull --prefix=apps/ai-chat origin web-branch --squash
```

That's it! You now have a new application in the monorepo 🎉
