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

# Sviluppo locale

> Sviluppa e testa il tuo progetto backend in locale con base44 dev

Lo sviluppo locale ti consente di eseguire il tuo progetto backend sulla tua macchina in modo da testare le modifiche istantaneamente, ispezionare i dati senza impattare la produzione e individuare problemi prima della distribuzione.

Consulta [Configurazione](/developers/backend/overview/local-dev/get-started) per i prerequisiti e le istruzioni passo passo.

## Cosa viene eseguito in locale

Il dev server gestisce interamente queste funzionalità sulla tua macchina:

* **[Funzioni](#functions):** le funzioni backend vengono eseguite in locale con ricarica automatica alle modifiche dei file.
* **[Entità](#entities):** i dati delle entità vengono archiviati in un database locale in memoria. Le modifiche allo schema vengono rilevate automaticamente.
* **[Media](#media):** i caricamenti di file vengono salvati in locale.
* **[Autenticazione](#authentication):** registrazione e login con email/password funzionano in locale.

<Note>
  Le [automazioni](/developers/backend/resources/backend-functions/automations)
  delle funzioni non vengono eseguite in locale.
</Note>

## Cosa viene inoltrato

Alcune funzionalità non sono ancora gestite in locale. Quando il dev server riceve una richiesta che non può servire, la inoltra alla tua app distribuita in modo che la chiamata funzioni comunque. Il server registra un avviso ogni volta che questo accade.

Le funzionalità inoltrate includono:

* **Autenticazione:** i percorsi OAuth e di social login vengono reindirizzati a Base44 in modo che i cookie di sessione funzionino correttamente. L'autenticazione email/password viene eseguita in locale.
* **Integrazioni core:** endpoint come `SendEmail` o la generazione IA vengono inoltrati. I caricamenti di file sono l'eccezione ed eseguiti in locale.
* **Integrazioni personalizzate:** chiamate API configurate tramite specifiche OpenAPI.

Questo significa che la tua app continua a funzionare end-to-end durante lo sviluppo. Le funzionalità eseguite in locale usano dati locali e tutto il resto usa la produzione.

## Funzioni

Le funzioni backend vengono eseguite in locale sulla tua macchina. Puoi chiamarle dal tuo frontend proprio come le funzioni distribuite.

* Ogni funzione viene eseguita come processo [Deno](https://docs.deno.com/runtime/) separato, che deve essere [installato separatamente](https://docs.deno.com/runtime/getting_started/installation/).
* Le funzioni vengono ricaricate automaticamente quando modifichi il codice sorgente.
* L'output delle funzioni viene stampato direttamente nel tuo terminale. Non è necessario usare [`base44 logs`](/developers/references/cli/commands/logs) durante lo sviluppo locale.

Quando una richiesta raggiunge il dev server e viene inoltrata alla tua funzione Deno locale, il server può aggiungere o normalizzare le intestazioni in modo che la tua funzione veda la stessa forma di contesto della produzione:

* **`Base44-App-Id`:** impostato dall'intestazione **`X-App-Id`** in ingresso quando presente.
* **`Base44-Service-Authorization`:** impostato dall'intestazione **`Authorization`** in ingresso quando presente, in modo che il codice che legge l'intestazione di autorizzazione del servizio in locale corrisponda al comportamento distribuito.
* **`Base44-Api-Url`:** impostato all'URL di base del tuo dev server (schema e host), in modo che le funzioni possano costruire callback o URL assoluti verso il server locale.

L'intestazione **`Authorization`** originale viene comunque inoltrata invariata.

<Note>
  La prima richiesta a una funzione può essere più lenta perché il dev server
  avvia il processo su richiesta. Le richieste successive riutilizzano il processo in esecuzione.
</Note>

## Entità

Le operazioni sulle entità vanno a un database locale in memoria invece che al database remoto. Questo ti consente di creare, leggere, aggiornare ed eliminare record senza impattare i dati di produzione.

* Tutti i dati sono archiviati in memoria e vengono cancellati quando arresti il dev server.
* Le modifiche allo schema vengono rilevate automaticamente. Modificare uno schema di entità cancella tutti i dati in memoria per quell'entità.
* Le sottoscrizioni realtime funzionano in locale. Se il tuo frontend usa `entities.subscribe()`, riceve eventi per le modifiche alle entità locali.
* L'entità `User` viene eseguita in locale. All'avvio, il dev server crea un singolo record utente usando le credenziali CLI autenticate. Le operazioni di lettura e aggiornamento su `me` funzionano come in produzione. Le richieste di creare o eliminare utenti vengono ignorate silenziosamente, in linea con il comportamento di produzione in cui la gestione diretta degli utenti non è consentita.

## Media

I caricamenti di file vengono gestiti in locale in modo da poter testare le funzionalità multimediali senza caricare nello storage di produzione. I file vengono salvati in una directory temporanea e ripuliti all'arresto del dev server. La dimensione massima del file è 50 MB.

## Autenticazione

Registrazione e login con email/password vengono eseguiti in locale quando la tua app usa il sistema di autenticazione integrato. I percorsi OAuth e di social login vengono reindirizzati a Base44.

Per registrare un nuovo utente durante lo sviluppo usando l'autenticazione email/password:

1. Chiama l'endpoint di registrazione. Il dev server stampa un codice di verifica monouso nel tuo terminale invece di inviare un'email.
2. Invia il codice all'endpoint verify-OTP per confermare l'indirizzo e creare l'utente.
3. Accedi con l'email e la password registrate.

Il tuo account sviluppatore (l'email che hai usato per `base44 login`) può accedere con qualsiasi password, senza registrazione.

<Warning>
  I token emessi dal dev server locale sono validi solo in locale. Sono firmati con un segreto diverso rispetto alla produzione, quindi la tua app distribuita li rifiuterà. Quando passi dallo sviluppo locale alla tua app distribuita, esci prima dalla tua sessione locale o elimina i token dall'archiviazione del tuo browser locale. Poi, effettua nuovamente l'accesso tramite l'app distribuita per ottenere un token valido.
</Warning>

## Vedi anche

* [Configurazione](/developers/backend/overview/local-dev/get-started): prerequisiti e istruzioni passo passo
* [Funzioni backend](/developers/backend/resources/backend-functions/overview): scrivi funzioni serverless che vengono eseguite sull'infrastruttura di Base44
* [Entità](/developers/backend/resources/entities/overview): definisci i modelli di dati per la tua app
* [Struttura del progetto](/developers/backend/overview/project-structure): come sono organizzati i file di progetto

<Note>Questa pagina è stata tradotta utilizzando l'IA. Per informazioni più accurate e aggiornate, consulta la [versione inglese](/). </Note>
