> ## 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 y subida

> Sube una nueva aplicación a Square Cloud o haz commit de nuevos archivos a una existente.

## Subir una nueva aplicación

`api.applications.create(file)` sube un zip y crea una aplicación totalmente nueva. El argumento `file` es una ruta de archivo local o 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);   // ID de la aplicación recién creada
console.log(result.name); // nombre para mostrar
console.log(result.lang); // slug del lenguaje (e.g. "javascript")
console.log(result.ram);  // RAM asignada en MB
```

El zip debe contener al menos:

* **Archivo principal** — punto de entrada de tu aplicación
* **Archivo de dependencias** — `package.json`, `requirements.txt`, etc.
* **`squarecloud.app`** — archivo de configuración con nombre, descripción, archivo principal, versión, etc. Consulta la [guía del archivo de configuración](/es/getting-started/config-file)

## Hacer commit de archivos a una aplicación existente

`app.commit(file, fileName?)` sube archivos a una aplicación ya desplegada. Pasa un zip para reemplazar varios archivos a la vez, o un solo archivo para actualizar únicamente ese.

| Parámetro  | Tipo               | Descripción                                                                                                               |
| ---------- | ------------------ | ------------------------------------------------------------------------------------------------------------------------- |
| `file`     | `string \| Buffer` | Ruta de archivo local o contenido de un `Buffer`                                                                          |
| `fileName` | `string?`          | Nombre adjuntado a la subida. `.zip` se extrae en el servidor; cualquier otra extensión se escribe como un único archivo. |

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

  <Tab title="Commit de un zip desde 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 de un archivo por ruta">
    ```typescript theme={null}
    import { join } from "node:path";

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

<Warning>
  En la v3, `commit()` aceptaba un tercer argumento `restart`. **En la v4 el tercer parámetro se ha eliminado** — usa `app.restart()` después del commit si necesitas un reinicio.
</Warning>

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