All apps must be uploaded in a .zip format, with a specific file directory. This is what a typical .zip file would look like:
| Name | Dir/File | Description | Required? |
|---|---|---|---|
| manifest.json | File | Basic information about the app. Learn more | Yes |
| app.js | File | Source code of the app. | Yes |
| app.css | File | Stylesheet. Learn more | No |
| translations | Dir | Contains one file for each locale. Learn more | No |
| templates | Dir | Contains templates for the app. Learn more | No |
| assets | Dir | Contains images for the app. | No |
Or like this:

The naming conventions used above must be followed exactly, or your app will fail to upload when you get to that step.
We've already talked about manifest.json and app.js, we'll be talking about translations, templates, and assets later.