App scanner e editor PDF
Scansiona, modifica e firma documenti PDF dal telefono
Incasso mensile: 9 USD (fonte indicata nella scheda)
Cosa fa
App per iPhone per scansionare documenti, modificarli, firmarli e condividerli. Venduta per circa 1.000 $: un esempio di mercato molto affollato.
Come guadagna
Incasso annuo dichiarato di circa 100 $ nell'annuncio di vendita su Microns, che verifica i dati, segno che in un mercato affollato è difficile emergere. Il nome del progetto non è pubblico.
Rendilo tuo
- Meglio una nicchia precisa: scansione di ricevute per il 730, documenti per la pratica del mutuo.
- Prima di costruire, cerca quanti concorrenti ci sono: qui sono tantissimi.
Le frasi da scrivere all'AI
1. Base del sito e grafica
Crea un'app web in italiano chiamata "Scansiona e Firma": scansiona documenti con la fotocamera del telefono, li unisce in un PDF, permette di firmarli e di condividerli, tutto nel browser senza caricare i documenti su un server. Usa React, Vite, TypeScript e Tailwind CSS.
Pagine da creare:
1. Pagina iniziale con le funzioni e il prezzo
2. Scansione: fotocamera con ritaglio e filtro "documento"
3. Pagine del documento: riordina, ruota, elimina
4. Firma: disegna la firma e posizionala sulla pagina
5. Documenti recenti salvati nel telefono
Stile: semplice e da ufficio: sfondo grigio chiaro #F3F4F6, blu #2563EB, nero #111827, carattere "Inter", pulsanti grandi in basso come in un'app. 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:
- "profili": solo piano (gratis o completo), collegato all'utente. I documenti NON si salvano sul server
Regole di sicurezza obbligatorie:
- i documenti restano nel telefono dell'utente
- 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. Scansione e PDF
La scansione usa la fotocamera posteriore: l'utente scatta, poi trascina i 4 angoli per ritagliare il foglio. Il filtro "documento" rende lo sfondo bianco e il testo nero con un aumento di contrasto. Si possono aggiungere più pagine, riordinarle trascinando, ruotarle.
Il PDF si crea nel browser con la libreria pdf-lib (codice nei Dettagli tecnici), in formato A4, con un peso ridotto per l'invio via email. I documenti recenti restano salvati nel telefono (IndexedDB), mai sul server.
Si possono anche aprire PDF esistenti per aggiungere pagine scansionate o firmarli.
4. Firma e condivisione
Pagina firma: si disegna la firma con il dito su un riquadro (salvabile nel telefono per le volte successive), poi la si posiziona e ridimensiona sulla pagina. Si aggiungono anche data e testo.
Condivisione con il menu del telefono (WhatsApp, email, Drive) tramite la Web Share API. Ricorda che questa è una firma semplice: per i contratti che richiedono la firma digitale qualificata servono servizi certificati.
5. Pagamenti con Stripe
Aggiungi un pagamento singolo di 4,99 € una volta sola. Il pagamento toglie il limite di 3 pagine per documento e la scritta in fondo al PDF, e sblocca la firma.
A pagamento riuscito il webhook imposta "piano" a "pro" nella tabella "profili", sulla riga dell'utente indicata in client_reference_id.
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. Privacy: controlla nella scheda Rete del browser che durante la scansione, la firma e la creazione del PDF non venga inviato nessun file.
Correggi quello che non va e scrivimi cosa hai cambiato.
Dettagli tecnici
Dalle foto al PDF firmato
Crea un PDF A4 dalle pagine scansionate e aggiunge l'immagine della firma nella posizione scelta, tutto nel browser.
import { PDFDocument } from "pdf-lib";
const A4 = { larghezza: 595.28, altezza: 841.89 }; // punti tipografici
export async function creaPdf(
pagine: Blob[], // JPEG già ritagliati
firma?: { immagine: Blob; pagina: number; x: number; y: number; larghezza: number },
): Promise<Blob> {
const pdf = await PDFDocument.create();
for (const foto of pagine) {
const img = await pdf.embedJpg(await foto.arrayBuffer());
const scala = Math.min(A4.larghezza / img.width, A4.altezza / img.height);
const pagina = pdf.addPage([A4.larghezza, A4.altezza]);
pagina.drawImage(img, {
x: (A4.larghezza - img.width * scala) / 2,
y: (A4.altezza - img.height * scala) / 2,
width: img.width * scala,
height: img.height * scala,
});
}
if (firma) {
const png = await pdf.embedPng(await firma.immagine.arrayBuffer());
const altezza = (png.height / png.width) * firma.larghezza;
pdf.getPage(firma.pagina).drawImage(png, { x: firma.x, y: firma.y, width: firma.larghezza, height: altezza });
}
const byte = await pdf.save();
return new Blob([byte], { type: "application/pdf" });
}
// Condivisione con il menu del telefono
export async function condividi(pdf: Blob, nome: string) {
const file = new File([pdf], nome + ".pdf", { type: "application/pdf" });
if (navigator.canShare?.({ files: [file] })) await navigator.share({ files: [file], title: nome });
}
Pezzi comuni a tutti i progetti
Glossario
- pdf-lib
- Una libreria gratuita che crea e modifica PDF direttamente nel browser.
- Firma digitale qualificata
- La firma elettronica con valore legale pieno, rilasciata da enti certificati: diversa da una firma disegnata.