Capgo
Aggiorni la tua app sul telefono degli utenti senza aspettare l'App Store
Incasso mensile: 33.349 USD (fonte indicata nella scheda)
Cosa fa
Servizio per chi crea app con Capacitor (app per telefono fatte con tecnologie web): manda gli aggiornamenti direttamente sui telefoni degli utenti, con canali di prova, ritorno alla versione precedente e build automatiche.
Come guadagna
Abbonamenti con 14 giorni di prova senza carta, oltre 1.200 abbonati, 587.000 $ incassati in totale. Nato nel 2021 in Estonia, il codice è open source. Incassi verificati con Stripe.
Rendilo tuo
- Per agenzie che fanno app per tanti clienti: un pannello per tutti.
- Statistiche degli errori dopo ogni aggiornamento, con ritorno automatico.
- Versione per app fatte con l'AI, guidata passo passo.
Le frasi da scrivere all'AI
1. Base del sito e grafica
Crea un'app web in italiano chiamata "Aggiorna Subito": un servizio per sviluppatori di app Capacitor: caricano il nuovo pacchetto web dell'app e gli utenti lo ricevono all'apertura successiva, con canali (prova, produzione) e ritorno automatico se la nuova versione si blocca. Usa React, Vite, TypeScript e Tailwind CSS.
Pagine da creare:
1. Pagina iniziale per sviluppatori con prezzi
2. Registrazione
3. Le mie app e i canali
4. Versioni caricate con percentuale di diffusione
5. Statistiche: aggiornamenti scaricati, errori, ritorni
Stile: da sviluppatori: sfondo #09090B, viola #A855F7, verde #22C55E, carattere "Geist" e "Geist Mono". Nessuna immagine generica di stock.
Tutto deve funzionare perfettamente da telefono. Tutti i testi in italiano, chiari e senza parole tecniche.
2. Database, account e sicurezza
Collega il progetto a Supabase e attiva la registrazione con email e password.
Crea queste tabelle:
- "app": nome, identificativo, chiave pubblica
- "versioni": app, numero, file zip, impronta, data
- "canali": app, nome, versione attiva, percentuale
- "dispositivi": app, id anonimo, versione installata, ultimo contatto, esito
Regole di sicurezza obbligatorie:
- ogni sviluppatore vede solo le sue app
- i pacchetti stanno in uno Storage con link firmati
- il piano non si modifica dal browser
Usa esattamente il codice SQL che trovi nei "Dettagli tecnici" di questa scheda: eseguilo nel SQL Editor di Supabase prima di continuare, poi collega le pagine alle tabelle.
3. Controllo dell'aggiornamento all'apertura
Il plugin nell'app, all'apertura, chiama l'indirizzo "controlla" con l'id dell'app, il canale e la versione installata. La Edge Function risponde con la nuova versione e un link firmato, oppure "sei aggiornato" (codice nei Dettagli tecnici).
Il plugin scarica lo zip, ne controlla l'impronta, lo installa e lo usa alla prossima apertura. Se l'app non segnala "tutto ok" entro 10 secondi dall'avvio, torna da sola alla versione precedente e lo comunica: gli utenti non restano mai con un'app rotta.
Regola dei negozi: si possono aggiornare così solo il codice web e i contenuti, non le parti native dell'app né la sua funzione principale.
4. Diffusione graduale e statistiche
Si pubblica una versione al 10% dei dispositivi, si guardano gli errori, poi si sale al 50% e al 100%. Pulsante "ritira" che rimette la versione precedente a tutti.
Statistiche per versione: quanti l'hanno ricevuta, quanti sono tornati indietro.
5. Pagamenti con Stripe
Aggiungi un abbonamento a 14 € al mese fino a 1.000 utenti, 49 € fino a 10.000. Gratis l'utente ha: 14 giorni di prova. Con il piano Pro sblocca: aggiornamenti illimitati, canali, diffusione graduale e statistiche.
A pagamento riuscito il webhook porta l'utente al piano Pro; se l'abbonamento viene disdetto o non rinnovato lo riporta al piano gratuito.
Per la sessione di pagamento e il webhook segui la guida "Pagamenti con Stripe" di Fattibile.
6. Controlli specifici di questo progetto
Oltre ai controlli della guida "Controllo finale", verifica in particolare:
1. Ritorno: pubblica apposta una versione che si blocca all'avvio e controlla che il dispositivo torni da solo alla precedente.
Correggi quello che non va e scrivimi cosa hai cambiato.
Dettagli tecnici
Controllo dell'aggiornamento
Edge Function chiamata dall'app: decide se c'è una versione nuova per quel dispositivo, anche con la diffusione graduale.
import { createClient } from "npm:@supabase/supabase-js@2";
// stesso dispositivo -> stesso numero da 0 a 99, così la percentuale è stabile
async function quota(idDispositivo: string) {
const h = new Uint8Array(await crypto.subtle.digest("SHA-256", new TextEncoder().encode(idDispositivo)));
return h[0] % 100;
}
Deno.serve(async (req) => {
const { app, canale, versione, dispositivo } = await req.json();
const db = createClient(Deno.env.get("SUPABASE_URL")!, Deno.env.get("SUPABASE_SERVICE_ROLE_KEY")!);
const { data: c } = await db.from("canali").select("versione_attiva, percentuale, versioni(numero, file, impronta)")
.eq("app_id", app).eq("nome", canale).single();
if (!c || c.versioni.numero === versione || (await quota(dispositivo)) >= c.percentuale)
return Response.json({ aggiorna: false });
const { data: link } = await db.storage.from("pacchetti").createSignedUrl(c.versioni.file, 600);
return Response.json({ aggiorna: true, versione: c.versioni.numero, url: link!.signedUrl, impronta: c.versioni.impronta });
});
Pezzi comuni a tutti i progetti
Glossario
- Storage
- Lo spazio di Supabase dove si salvano i file, come foto e audio, con le sue regole di accesso.
- Capacitor
- Uno strumento che trasforma un'app web in un'app per iPhone e Android.
- Aggiornamento OTA
- Over The Air: un aggiornamento che arriva direttamente sul telefono, senza passare dal negozio di app.
