← Tutte le idee Strumenti online

Space

Manda file e testi all'istante con un codice di sei caratteri

Cosa fa

Si carica un file o un testo e si ottiene un codice di 6 caratteri: chi lo inserisce sull'altro dispositivo lo riceve subito.

Come guadagna

Startup appena presentata su BetaList, che non dichiara incassi. Idee nostre per guadagnare con un progetto simile: versione Pro con file più grandi e codici che durano di più.

Rendilo tuo

  • Per le copisterie: il cliente manda il file da stampare dal telefono con un codice.
  • Per insegnanti: materiali alla classe con un codice.

Le frasi da scrivere all'AI

1. Base del sito e grafica

Crea un'app web in italiano chiamata "Codice e Via": si carica un file o un testo e si ottiene un codice di 6 caratteri: chi lo inserisce su un altro dispositivo lo scarica subito. Niente account, niente email, e i file si cancellano da soli dopo 24 ore. Usa React, Vite, TypeScript e Tailwind CSS.

Pagine da creare:
1. Pagina principale: "Invia" (trascina un file o scrivi un testo) e "Ricevi" (inserisci il codice)
2. Dopo l'invio: codice grande, QR, tempo rimasto
3. Ricezione: anteprima del nome e della dimensione, poi download
4. Pagina Pro
5. Pagina "Come proteggiamo i tuoi file"

Stile: essenziale e veloce: sfondo bianco, nero #111827, accento verde acqua #14B8A6, carattere "Inter", codice enorme in "JetBrains 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:
- "invii": codice, file nello Storage privato o testo, dimensione, scade il, scaricamenti massimi, scaricamenti fatti
- "profili": piano

Regole di sicurezza obbligatorie:
- nessuno può elencare gli invii: si accede solo conoscendo il codice
- i file si scaricano con un link temporaneo e si cancellano dopo la scadenza
- massimo 5 tentativi di codice sbagliato al minuto per evitare chi prova a indovinare

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. Codice, link temporaneo e scadenza

Il file si carica nello Storage privato; la Edge Function "invia" crea un codice di 6 caratteri senza lettere che si confondono (niente 0/O, 1/I), con scadenza a 24 ore e numero massimo di scaricamenti (codice nei Dettagli tecnici).

Chi riceve inserisce il codice: la Edge Function "ricevi" controlla codice e scadenza e restituisce un link firmato valido 60 secondi. Dopo l'ultimo scaricamento o la scadenza, il file viene cancellato da un'operazione programmata ogni ora.

Contro chi prova codici a caso: massimo 5 tentativi sbagliati al minuto per indirizzo.

4. Pro e regole d'uso

Gratis: file fino a 200 MB e 24 ore. Pro: file fino a 5 GB, scadenza fino a 7 giorni, password facoltativa, e codici personalizzati.

Regole d'uso chiare: vietati contenuti illegali, con un indirizzo per le segnalazioni e la rimozione immediata.

5. Pagamenti con Stripe

Aggiungi un pagamento singolo di 5,99 € una volta sola. Il pagamento sblocca file fino a 5 GB, scadenze fino a 7 giorni, password e codici personalizzati.

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. Scadenza: crea un invio, cambia la scadenza nel database a un minuto fa e lancia la pulizia: il file deve sparire dallo Storage e il codice non deve più funzionare.
Correggi quello che non va e scrivimi cosa hai cambiato.

Dettagli tecnici

Invii con codice, scadenza e pulizia

Codici leggibili generati dal database, invii accessibili solo dalle Edge Function, e pulizia oraria dei file scaduti.

create table invii (
  codice text primary key,
  file_path text,
  testo text,
  dimensione_byte bigint,
  scade_il timestamptz not null default now() + interval '24 hours',
  scaricamenti_max int not null default 10,
  scaricamenti int not null default 0,
  check (file_path is not null or testo is not null)
);
alter table invii enable row level security;   -- nessuna regola: solo le Edge Function

-- 6 caratteri senza simboli che si confondono (niente 0, O, 1, I, L)
create function nuovo_codice() returns text language plpgsql as $
declare alfabeto text := 'ABCDEFGHJKMNPQRSTUVWXYZ23456789'; c text;
begin
  loop
    c := '';
    for i in 1..6 loop
      c := c || substr(alfabeto, 1 + floor(random() * length(alfabeto))::int, 1);
    end loop;
    exit when not exists (select 1 from invii where codice = c);
  end loop;
  return c;
end $;

-- Usata dalla Edge Function "ricevi": restituisce il file e conta lo scaricamento
create function ritira(c text) returns table (file_path text, testo text)
language sql security definer set search_path = public as $
  update invii set scaricamenti = scaricamenti + 1
  where codice = upper(c) and scade_il > now() and scaricamenti < scaricamenti_max
  returning invii.file_path, invii.testo;
$;
revoke execute on function ritira(text) from public, anon, authenticated;
grant execute on function ritira(text) to service_role;

-- Ogni ora: cancella file e invii scaduti o esauriti
select cron.schedule('pulizia-invii', '0 * * * *', $
  delete from storage.objects where bucket_id = 'invii' and name in (
    select file_path from invii where scade_il < now() or scaricamenti >= scaricamenti_max);
  delete from invii where scade_il < now() or scaricamenti >= scaricamenti_max;
$);

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.
Cron
Un'operazione programmata che parte da sola a orari fissi, per esempio ogni lunedì mattina.
Link firmato
Un link a un file privato che funziona solo per pochi secondi, creato dal server per chi ne ha diritto.