> ## Documentation Index
> Fetch the complete documentation index at: https://supastack.dev/llms.txt
> Use this file to discover all available pages before exploring further.
> For the full documentation corpus in one file, fetch: https://supastack.dev/llms-full.txt

# Costruisci la tua prima feature

Un percorso end-to-end da una nuova schermata a dati verificati dal server.

## Procedura dettagliata per principianti

Prerequisiti: leggi le due guide per principianti qui sotto, completa la configurazione locale Mobile e apri questo repository alla sua radice nel tuo editor. Le impostazioni Mobile vanno in `apps/mobile/.env.local`; Expo non legge il .env radice. L'anteprima ha bisogno di un backend raggiungibile per i dati reali.

Termini rapidi: uno spazio di lavoro è costituito da utenti, dati e impostazioni separati di un team. Il server è il backend affidabile; mantenere le chiavi del provider fuori dal browser e dal codice del telefono. Una migrazione è una modifica del database con versione che crea o aggiorna tabelle. Un modello AI è il motore che risponde; il catalogo dei modelli è l'elenco del server degli ID e dei prezzi dei modelli disponibili. Un fornitore è un servizio esterno come un servizio di intelligenza artificiale, posta elettronica o fatturazione. Un diritto è una concessione che consente a un'area di lavoro di utilizzare una funzionalità. Un webhook è un messaggio che un servizio invia allo URL di un altro servizio.

1. Apri `.agents/skills/add-a-mobile-screen/SKILL.md` — o chiedi al tuo agente di codifica di seguirlo — e crea una piccola schermata, ad esempio `apps/mobile/app/(app)/ideas.tsx` con la sua logica in `apps/mobile/src/ideas/`.

2. Apri la nuova schermata sul tuo dispositivo tramite l'anteprima in esecuzione e conferma che si renda per un membro con accesso.

3. Controlla un account disconnesso e un account di un secondo workspace — qualsiasi cosa debba restare privata deve tornare negata o assente, perché il server impone il confine.

Per codice personalizzato, nomina la schermata, i dati che mostra, chi può vederla e gli errori da gestire. Dai al tuo agente di codifica questo compito e chiedigli di leggere `AGENTS.md`, `.ai/PROJECT_CONTEXT.md` e gli specchi `.ai/` dei file che toccherà; di elencare file e controlli prima di modificare; e di mostrarti il diff. Usa valori di esempio; non incollare mai un segreto reale.

[Prima di iniziare](https://supastack.dev/it/docs/mobile/before-you-start.md)

[Nozioni di base sui terminali](https://supastack.dev/it/docs/mobile/terminal-basics.md)

[Configurazione locale mobile](https://supastack.dev/it/docs/mobile/ship-in-5-minutes.md)

[Messaggi dell'agente e memoria del progetto](https://supastack.dev/it/docs/mobile/agents.md)


## Creare la schermata

Aggiungi un file di route sotto `apps/mobile/app/(app)/` — Expo Router trasforma il file in una schermata dentro lo stack con accesso. Componila dai primitivi `apps/mobile/src/ui` (Screen, Card, Title, Detail, AppButton) in modo che erediti spaziatura, tipografia e colori dell'app.

```
apps/mobile/app/(app)/ideas.tsx
apps/mobile/src/ideas/index.ts
apps/mobile/src/ideas/index.test.ts
```


## Leggere e scrivere attraverso il client tipizzato

Fai fetch tramite `apps/mobile/src/api/client.ts`, che allega la sessione archiviata a ogni richiesta verso `EXPO_PUBLIC_API_URL` e restituisce errori tipizzati. Mantieni i payload identici al contratto web — gli stessi endpoint servono entrambi i client.

Se la schermata legge dati del workspace, avvolgi la chiamata con gli helper in `apps/mobile/src/offline/` in modo che un errore di rete possa ricadere sulla copia in cache — solo su un errore di rete, mai dopo un errore di autenticazione o permessi.


## Lasciare che il server decida la proprietà

Il server risolve il membro con accesso e il workspace attivo e delimita ogni record per `workspaceId`. L'app mostra ciò che il server restituisce; non invia mai un id di workspace di cui il server dovrebbe fidarsi.

Se i dati di cui hai bisogno non hanno un endpoint, aggiungilo prima sul backend — le regole di business vivono sul server. Un pulsante nascosto nell'app non impone l'accesso.


## Verificare l'accesso e il ripristino

Controlla un membro con accesso, un membro di un altro workspace, una sessione disconnessa e la modalità aereo: i dati del membro appaiono, i dati estranei vengono negati, un dispositivo disconnesso torna all'accesso e la copia offline viene servita solo su un errore di rete.

[Cache di lettura offline](https://supastack.dev/it/docs/mobile/offline.md)

[Checklist di sicurezza Mobile](https://supastack.dev/it/docs/mobile/security.md)


## Rifinire gli stati

Dai alla schermata stati di caricamento, vuoto ed errore tramite i primitivi condivisi, aggiungi ogni nuova stringa a tutti e quattro i cataloghi i18n e collega la route nella navigazione home o impostazioni affinché un membro possa trovarla.


## Successivo

[Costruisci con un agente di codice](https://supastack.dev/it/docs/mobile/agents.md)
