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

# Commit e caricamento

> Carica una nuova applicazione su Square Cloud oppure effettua il commit di nuovi file su una esistente.

## Caricare una nuova applicazione

`api.applications.create(file)` carica uno zip e crea un'applicazione nuova di zecca. L'argomento `file` è un percorso di file locale oppure un `Buffer`.

```typescript theme={null}
import { SquareCloudAPI } from "@squarecloud/api";
import { join } from "node:path";

const api = new SquareCloudAPI(process.env.SQUARE_API_KEY!);

const result = await api.applications.create(join(__dirname, "my-app.zip"));

console.log(result.id);   // newly created application ID
console.log(result.name); // display name
console.log(result.lang); // language slug (e.g. "javascript")
console.log(result.ram);  // allocated RAM in MB
```

Lo zip deve contenere almeno:

* **File principale** — punto di ingresso della tua applicazione
* **File delle dipendenze** — `package.json`, `requirements.txt`, ecc.
* **`squarecloud.app`** — file di configurazione con nome, descrizione, file principale, versione, ecc. Consulta la [guida al file di configurazione](/it/getting-started/config-file)

## Effettuare il commit di file su un'applicazione esistente

`app.commit(file, fileName?)` carica file in un'applicazione già in deploy. Passa uno zip per sostituire più file contemporaneamente, oppure un singolo file per aggiornare solo quello.

| Parametro  | Tipo               | Descrizione                                                                                                                 |
| ---------- | ------------------ | --------------------------------------------------------------------------------------------------------------------------- |
| `file`     | `string \| Buffer` | Percorso del file locale o contenuto `Buffer`                                                                               |
| `fileName` | `string?`          | Nome allegato al caricamento. `.zip` viene estratto sul server; qualsiasi altra estensione viene scritta come singolo file. |

<Tabs>
  <Tab title="Commit di un singolo file (Buffer)">
    ```typescript theme={null}
    const content = Buffer.from("console.log('hello')\n");
    await app.commit(content, "index.js");
    ```
  </Tab>

  <Tab title="Commit di uno zip dal disco">
    ```typescript theme={null}
    import { readFile } from "node:fs/promises";

    const zip = await readFile("./dist.zip");
    await app.commit(zip, "dist.zip");
    ```
  </Tab>

  <Tab title="Commit di un file tramite percorso">
    ```typescript theme={null}
    import { join } from "node:path";

    const filePath = join(__dirname, "index.js");
    await app.commit(filePath, "index.js");
    ```
  </Tab>
</Tabs>

<Warning>
  In v3 `commit()` accettava un terzo argomento `restart`. **In v4 il terzo parametro è stato rimosso** — usa `app.restart()` dopo il commit se hai bisogno di un riavvio.
</Warning>

```typescript theme={null}
await app.commit(zip, "dist.zip");
await app.restart();
```
