← Tutte le idee Marketing e social

Liinks

Una pagina con tutti i tuoi link, per la bio di Instagram

Incasso mensile: 31.000 USD (fonte indicata nella scheda)

Cosa fa

Chi ha un profilo social mette un solo link nella bio. Questo servizio crea una pagina semplice e curata con tutti i link importanti: negozio, ultimo video, contatti. In più prende in automatico i link dai post di Instagram.

Come guadagna

Abbonamento mensile per le funzioni avanzate: colori personalizzati, statistiche sui clic, dominio proprio.

Rendilo tuo

  • Fallo solo per una categoria: ristoranti (menù, prenotazioni, recensioni) o parrucchieri (listino, orari, WhatsApp).
  • Aggiungi il pulsante per prenotare o pagare direttamente dalla pagina.
  • Tutto in italiano, con modelli pronti per le attività locali.

Le frasi da scrivere all'AI

1. Base del sito e grafica

Crea un'app web in italiano chiamata "Bio.Link": crea in pochi minuti una pagina con tutti i link importanti da mettere nella bio di Instagram e TikTok. Usa React, Vite, TypeScript e Tailwind CSS.

Pagine da creare:
1. Pagina iniziale con esempi di pagine per creator, negozi e ristoranti
2. Registrazione e scelta dell'indirizzo (es. /pizzeria-da-mario)
3. Editor della pagina con anteprima dal vivo in una cornice di telefono
4. Pagina pubblica all'indirizzo /:slug
5. Statistiche dei clic

Stile: moderno e colorato: interfaccia bianca con accento rosa #DB2777, carattere "Plus Jakarta Sans"; le pagine pubbliche hanno 8 temi tra cui scegliere. 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:
- "pagine": indirizzo unico, titolo, bio, foto, tema, collegate all'utente
- "link": titolo, indirizzo, icona, ordine, collegati alla pagina
- "clic": ogni clic su un link con data, per le statistiche

Regole di sicurezza obbligatorie:
- le pagine e i link sono visibili a tutti (sono pubblici per scelta)
- solo il proprietario modifica la sua pagina e i suoi link
- chiunque può registrare un clic, ma solo il proprietario legge le statistiche

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. L'editor della pagina

Crea l'editor della pagina: a sinistra i comandi, a destra l'anteprima dal vivo dentro una cornice di telefono.

Comandi: foto profilo (ritagliata tonda), titolo, bio di 160 caratteri, elenco dei link con titolo, indirizzo e icona scelta automaticamente dal dominio (Instagram, WhatsApp, YouTube, Maps...), riordino trascinando, attiva/disattiva per ogni link, e 8 temi colore.

Pulsanti speciali da aggiungere: "Scrivimi su WhatsApp" (con il numero e un messaggio già pronto), "Chiamami", "Indicazioni" (apre Google Maps) e "Prenota".

La pagina pubblica /:slug deve caricarsi in meno di un secondo e avere l'anteprima corretta quando il link viene condiviso.

4. Statistiche dei clic

Registra ogni clic su un link chiamando una funzione pubblica che salva solo link e data (niente dati personali). Nella pagina statistiche mostra: visite e clic degli ultimi 30 giorni in un grafico, il link più cliccato, e la percentuale di clic per link.

Per gli utenti Pro aggiungi il confronto con il mese precedente e l'esportazione in CSV.

5. Pagamenti con Stripe

Aggiungi un abbonamento a 4 € al mese. Gratis l'utente ha: 5 link, 3 temi e la scritta "Fatto con Bio.Link" in fondo. Con il piano Pro sblocca: link illimitati, tutti i temi, statistiche complete e nessuna scritta in fondo.

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. Indirizzi: prova a registrare un indirizzo già usato o con caratteri strani: deve essere rifiutato o corretto.
Correggi quello che non va e scrivimi cosa hai cambiato.

Dettagli tecnici

Tabelle e regole

Pagine e link sono pubblici; i clic li può registrare chiunque, ma li legge solo il proprietario.

create table pagine (
  id uuid primary key default gen_random_uuid(),
  utente_id uuid not null unique references auth.users(id) on delete cascade,
  slug text not null unique check (slug ~ '^[a-z0-9-]{3,30}
  

),
  titolo text not null,
  bio text not null default '' check (length(bio) <= 160),
  foto_url text,
  tema text not null default 'chiaro'
);

create table link (
  id uuid primary key default gen_random_uuid(),
  pagina_id uuid not null references pagine(id) on delete cascade,
  titolo text not null,
  url text not null,
  ordine int not null default 0,
  attivo boolean not null default true
);

create table clic (
  id bigint generated always as identity primary key,
  link_id uuid not null references link(id) on delete cascade,
  creato_il timestamptz not null default now()
);

alter table pagine enable row level security;
alter table link enable row level security;
alter table clic enable row level security;

create policy "pagine pubbliche" on pagine for select using (true);
create policy "modifico la mia pagina" on pagine
  for all using (auth.uid() = utente_id) with check (auth.uid() = utente_id);

create policy "link pubblici" on link for select using (attivo or exists (
  select 1 from pagine p where p.id = pagina_id and p.utente_id = auth.uid()));
create policy "modifico i miei link" on link for all
  using (exists (select 1 from pagine p where p.id = pagina_id and p.utente_id = auth.uid()))
  with check (exists (select 1 from pagine p where p.id = pagina_id and p.utente_id = auth.uid()));

create policy "chiunque registra un clic" on clic for insert with check (true);
create policy "leggo i clic dei miei link" on clic for select using (exists (
  select 1 from link l join pagine p on p.id = l.pagina_id
  where l.id = link_id and p.utente_id = auth.uid()));

Statistiche degli ultimi 30 giorni

Quanti clic ha avuto ogni link nell'ultimo mese, dal più cliccato.

select l.titolo, count(c.id) as clic
from link l
join pagine p on p.id = l.pagina_id
left join clic c on c.link_id = l.id and c.creato_il > now() - interval '30 days'
where p.utente_id = auth.uid()
group by l.id, l.titolo
order by clic desc;

Pezzi comuni a tutti i progetti

Glossario

Slug
La parte finale e leggibile dell'indirizzo di una pagina, es. /pizzeria-da-mario.
CSV
Un file di testo con i dati separati da virgole, che si apre con Excel.