> For the complete documentation index, see [llms.txt](https://akulla-pro.gitbook.io/aphone/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://akulla-pro.gitbook.io/aphone/how-you-make-your-own-apps/create-your-first-app.md).

# Create your first app

## You need to know :

* Applications load at the start-up. Files are automatically loaded depending on their prefix. (sv\_, cl\_, sh\_)
* You can put multiples files of the same realm/same prefix.
* You don't need to put an app meta in every file. They will be loaded no matter their content.
* You don't need to create your main panel, everything is given in the APP:Open meta.

Now that everything is good, let's create our first app! Mine will be a red-painted panel.

**1. Create the folder**

You need to create a folder/addon structure in :

addons/\[Addon Name]/lua/aphone/apps

( Or you can register your app in your addon, you can do this later in the wiki )

**2. Fill with files**

I'm gonna create a file : "**cl\_**&#x6D;ycooladdon.lua". The cl\_ is needed to auto-include your file in the client realm.

Now you need to put this code in your file :

```
local APP = {}
APP.name = "My red-painted panel" // My app name
APP.color = Color( 255, 0, 0) // My app color
APP.icon = "akulla/flux/app_camera.png" // My app icon
```

This code is the header of your file. Everything on top of it can't be an app meta/function.

Now, I'm gonna use the APP:Open meta so I can manipulate my panel

```
function APP:Open(main, main_x, main_y)
     function main:Paint(w, h)
          surface.SetDrawColor(Color(255, 0, 0))
          surface.DrawRect(0,0,w,h)
     end
end
```

Now, my app is done, but there is something missing.

You need to put this at the end of your file :

```
aphone.RegisterApp(APP)
```

This is needed to give your app to the loader. At this point, your app will appear and work

> If you want to make more complicated apps, I invite you to check the next chapter that relates to every function you would need to make your app.

## Final result

```
local APP = {}
APP.name = "My red-painted panel" // My app name
APP.color = Color( 255, 0, 0) // My app color
APP.icon = "akulla/flux/app_camera.png" // My app icon

function APP:Open(main, main_x, main_y)
     function main:Paint(w, h)
          surface.SetDrawColor(Color(255, 0, 0))
          surface.DrawRect(0,0,w,h)
     end
end

aphone.RegisterApp(APP)
```
