Salta al contenuto
supastack
Sfoglia la documentazione
MobileExpo

For AI agents: fetch the complete documentation index at /llms.txt, the full documentation corpus at /llms-full.txt, the agent skill at /skill.md, or this page as Markdown at /it/docs/mobile/first-feature.md (or send Accept: text/markdown).

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.

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.

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.