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

# Costruisci un'app mobile

> iOS, Android o Flutter sulla stessa Storefront API.

Un'app mobile usa **esattamente la stessa Storefront API** di un frontend web. L'unica
differenza è che non gira sul dominio del negozio, quindi identifica il negozio con la
[chiave publishable](/authentication) su ogni richiesta.

## Setup del client

<CodeGroup>
  ```dart Flutter theme={null}
  final dio = Dio(BaseOptions(
    baseUrl: "https://api.vellaro.io/api/v1",
    headers: { "X-Vellaro-Key": "cx_pk_live_demo_XXXXXXXXXXXX" },
  ));
  final res = await dio.get("/products", queryParameters: {"page": 1});
  ```

  ```swift Swift theme={null}
  var req = URLRequest(url: URL(string: "https://api.vellaro.io/api/v1/products")!)
  req.setValue("cx_pk_live_demo_XXXXXXXXXXXX", forHTTPHeaderField: "X-Vellaro-Key")
  ```

  ```kotlin Kotlin theme={null}
  val req = Request.Builder()
    .url("https://api.vellaro.io/api/v1/products")
    .header("X-Vellaro-Key", "cx_pk_live_demo_XXXXXXXXXXXX")
    .build()
  ```
</CodeGroup>

## Login del cliente & token

Il login (`POST /auth/login`) restituisce `access_token` (\~30 min) e `refresh_token`.
Conserva il refresh token in modo sicuro (Keychain / Keystore) e rinnova l'access token con
`POST /auth/refresh`. Manda l'access token come `Authorization: Bearer` sulle chiamate
dell'area account.

## Notifiche push

Registra il device token del cliente per le notifiche transazionali (ordine spedito, ecc.)
tramite gli endpoint device-push della Storefront API — vedi la [API Reference](/api-reference).

<Note>
  Immagini e pagamenti funzionano come sul web: gli URL immagine vanno prefissati con
  l'origin, e il flusso di pagamento restituito da `POST /checkout` va completato con l'SDK
  nativo del gateway (Stripe/PayPal/…) quando serve.
</Note>
