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

# App configuration

> Describe an app with marina.json and link a directory to its Marina app.

Most static sites need no configuration. Add `marina.json` at the project root
when you want to declare app identity or runtime behavior explicitly.

```json marina.json theme={null}
{
  "schema": 1,
  "name": "My App",
  "icon": "⛵",
  "type": "static"
}
```

## Manifest fields

| Field        | Required     | Description                                                    |
| ------------ | ------------ | -------------------------------------------------------------- |
| `schema`     | No           | Manifest format. Use `1`.                                      |
| `name`       | No           | Initial display name, up to 80 characters.                     |
| `icon`       | No           | Initial app icon as an emoji.                                  |
| `type`       | No           | `static` or `dynamic`. Defaults to `static`.                   |
| `entrypoint` | Dynamic apps | Program Marina runs, relative to the project root.             |
| `port`       | No           | Dynamic app port. Defaults to `8080`; Marina also sets `PORT`. |

The name and icon initialize a newly created app. After creation, change display
metadata in the Marina dashboard; later code deployments preserve it.

## Static apps

A directory containing `index.html` can deploy directly. Projects with a
`package.json` and a build script are built before deployment. Marina recognizes
static output in `dist`, `build`, `out`, `public`, or `.output/public` when that
directory contains `index.html`.

## Dynamic apps

Dynamic apps declare the file Marina should run:

```json marina.json theme={null}
{
  "schema": 1,
  "name": "Status API",
  "icon": "📡",
  "type": "dynamic",
  "entrypoint": "server.js",
  "port": 8080
}
```

Listen on the `PORT` environment variable rather than hardcoding a platform
port.

## Project linking

After the first successful deploy, the CLI writes `.marina/project.json`. This
stable link tells future commands which Marina app the directory belongs to,
even if its display name changes.

Do not commit `.marina/project.json`. To target an app explicitly from an
unlinked directory, pass `--app <slug>`.

## Name precedence

When creating an app, the CLI chooses its name in this order:

1. `--name`
2. `name` in `marina.json`
3. `name` in `package.json`
4. The directory name
