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

# Database

> Istanze Postgres dedicate per le tue app.

Ogni database è un'istanza Postgres dedicata, isolata, con scalabilità a zero, con connessioni in pool e dirette. Chiedi all'AI di crearne una e gestisce setup e credenziali.

## Creazione di un database

Descrivi all'AI cosa serve all'app. Dovrebbe elencare prima i database esistenti e riutilizzare un database attivo adatto quando esiste. Crea una nuova istanza Postgres solo quando chiedi isolamento o nessun database esistente è idoneo.

## Credenziali

Le credenziali del database sono gestite tramite il [vault](/work/vault).

* **Visualizza credenziali** - restituisce gli URI di connessione attuali per il database.
* **Rigenera credenziali** - reimposta la password del database e crea nuovi segreti nel vault. Usa quando le credenziali mancano, sono compromesse o necessitano rotazione. Le credenziali vecchie smettono di funzionare immediatamente.

### Utilizzo delle credenziali in un'app

Per le app generate, l'AI collega le credenziali del database nel componente process con lo strumento `db`. Il codice dell'app legge variabili env normali come `DATABASE_URL` e `DIRECT_DATABASE_URL`.

Per comandi locali manuali, esegui tramite la CLI Kazzle con la giusta collection e ambiente:

```json theme={"theme":"material-theme-darker"}
{
  "scripts": {
    "dev": "kazzle run --collection=my-saas --env=dev -- bun run server.ts"
  }
}
```

Non inserire URL del database nel codice frontend o in variabili `VITE_*`.

## Migrazioni

I cambiamenti dello schema vanno in file SQL nel repo dell'app (es. `migrations/001_create_todos.sql`). Kazzle può eseguire quelle migrazioni come parte del flusso di deploy della tua app. Se la sincronizzazione realtime è abilitata, l'AI aggiorna anche la configurazione di sync correlata.

## Abilitazione della sincronizzazione realtime

Chiedi all'AI di abilitare la sync su un database. Dovrebbe attendere fino a quando il database non mostra `sync: ready` prima di collegare un'app realtime. Vedi [Sincronizzazione realtime](/apps/sync) per come funziona.

## Eliminazione di un database

Chiedi all'AI di eliminare un database. Kazzle lo contrassegna come eliminato per primo, e il database può essere ripristinato prima che la pulizia permanente venga eseguita.

## Esempio: configurazione di un database da zero

1. "Crea un database chiamato my-app-db"
2. L'AI riutilizza un database adatto o configura Postgres e archivia le credenziali nel vault
3. "Crea una tabella todos con id, text, done e created\_at"
4. L'AI esegue l'SQL
5. "Collegalo alla mia app" - l'AI connette il database al componente process dell'app

Per app realtime con supporto offline, l'AI attiva anche la sync e configura lo schema lato client. Vedi [creazione di un'app realtime](/apps/build-and-publish) per il flusso completo.
