← Tutte le idee Marketing e social

POST BRIDGE

Carichi un video una volta e va su tutti i social

Incasso mensile: 49.682 USD (fonte indicata nella scheda)

Cosa fa

Strumento semplice per pubblicare lo stesso contenuto su più social insieme da un'unica pagina: carichi un video o una foto, scrivi il testo, scegli i social e l'ora. Pensato per chi fa marketing da solo.

Come guadagna

Piani da 39 e 99 $ al mese, oltre 1.600 abbonati, 560.000 $ incassati in totale. Il fondatore Jack Friks ha 183.000 follower su X e lo ha costruito con Next.js, Supabase e Stripe. Incassi verificati con Stripe.

Rendilo tuo

  • Ancora più semplice e in italiano, per negozi e artigiani.
  • Prezzo basso fisso senza limiti di account.
  • Testi adattati da soli per ogni social (lunghezza, hashtag).

Le frasi da scrivere all'AI

1. Base del sito e grafica

Crea un'app web in italiano chiamata "Un Clic Social": un'app che pubblica lo stesso video o la stessa foto su TikTok, Instagram, YouTube Shorts, Facebook e LinkedIn in una volta sola, subito o a un'ora programmata. Usa React, Vite, TypeScript e Tailwind CSS.

Pagine da creare:
1. Pagina iniziale con il prezzo e un video dimostrativo di 30 secondi
2. Registrazione e collegamento dei social
3. Nuovo post: carica il file, scrivi il testo, spunta i social, scegli quando
4. Storico con lo stato per ogni social

Stile: minimale: sfondo bianco, nero #0A0A0A, un solo colore d'accento verde #22C55E, carattere "Inter", tutto su una colonna. 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:
- "account_social": piattaforma, nome, token cifrato
- "pubblicazioni": file, testo, quando, social scelti
- "esiti": pubblicazione, social, stato, link, errore

Regole di sicurezza obbligatorie:
- ogni utente vede solo i suoi account e post
- i token non tornano mai al browser
- 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. Un caricamento, tanti social

Il file si carica una volta sola nello Storage di Supabase (caricamento diretto dal browser con un link firmato, così i video grandi non passano dal server).

All'ora scelta una Edge Function crea un "esito" per ogni social e lo pubblica con l'API ufficiale di quel social. Se un social fallisce, gli altri vanno comunque; l'esito mostra il motivo in italiano e un pulsante "Riprova".

Controlli prima di pubblicare: durata e formato del video accettati da ogni social (es. Shorts sotto i 3 minuti e verticale), lunghezza massima del testo.

4. Storico e stato

Storico delle pubblicazioni con l'icona di ogni social: verde pubblicato (con link), giallo in corso, rosso errore. Filtri per social e per data.

Testi diversi per social, facoltativi: un testo lungo per LinkedIn, corto con hashtag per TikTok.

5. Pagamenti con Stripe

Aggiungi un abbonamento a 9,99 € al mese o 79 € all'anno. Gratis l'utente ha: 2 social e 5 post al mese. Con il piano Pro sblocca: tutti i social, post illimitati e programmazione.

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. Errori: collega un social con il token scaduto e controlla che il post vada sugli altri e che quello mostri un errore chiaro con "Riprova".
Correggi quello che non va e scrivimi cosa hai cambiato.

Dettagli tecnici

Caricare video grandi direttamente nello Storage

Il server crea un link firmato di caricamento; il browser manda il file direttamente a Supabase Storage.

import { supabase } from "./supabase";

export async function caricaVideo(file: File, utenteId: string) {
  const percorso = utenteId + "/" + crypto.randomUUID() + "-" + file.name.replace(/[^\w.-]/g, "_");
  const { data, error } = await supabase.storage.from("media").createSignedUploadUrl(percorso);
  if (error) throw error;
  const { error: e2 } = await supabase.storage.from("media").uploadToSignedUrl(percorso, data.token, file, {
    contentType: file.type,
  });
  if (e2) throw e2;
  return percorso;   // salvato nella pubblicazione
}

// Controlli prima di pubblicare
export function adattoA(social: string, durataSec: number, verticale: boolean) {
  if (social === "youtube_shorts") return durataSec <= 180 && verticale;
  if (social === "tiktok") return durataSec <= 600;
  if (social === "instagram") return durataSec <= 900;
  return true;
}

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.
Link firmato
Un indirizzo temporaneo che permette di caricare o scaricare un file preciso, senza dare accesso a tutto lo Storage.