Newsletter sulla scrittura
Una newsletter con 2.800 iscritti dedicata alla scrittura
Incasso mensile: 20 USD (fonte indicata nella scheda)
Cosa fa
Newsletter su Substack per chi scrive, con oltre 2.800 iscritti. Venduta per circa 4.000 $: il pubblico costruito ha un valore.
Come guadagna
Incasso annuo dichiarato di circa 235 $ nell'annuncio di vendita su Microns, che verifica i dati. Il nome del progetto non è pubblico.
Rendilo tuo
- Una newsletter italiana per chi vuole scrivere un libro o un blog.
- Guadagna con corsi o con una versione a pagamento.
Le frasi da scrivere all'AI
1. Base del sito e grafica
Crea un'app web in italiano chiamata "Penna Viva": una newsletter per chi scrive (racconti, romanzi, blog): ogni settimana una lezione, un esercizio di scrittura e, per gli abbonati, la correzione commentata dei propri testi. Usa React, Vite, TypeScript e Tailwind CSS.
Pagine da creare:
1. Pagina iniziale con l'iscrizione gratuita e il piano a pagamento
2. Archivio delle lezioni: alcune libere, altre per gli abbonati
3. Pagina della lezione con l'esercizio
4. Consegna del proprio testo per la correzione (abbonati)
5. Pannello autore: lezioni, iscritti, testi da correggere
Stile: letterario e intimo: sfondo carta #FDFBF6, inchiostro #1F2937, rosso matita #B91C1C per le correzioni, carattere "Libre Baskerville" per i testi e "Inter" per l'interfaccia, colonna di lettura stretta. 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:
- "lezioni": titolo, testo, esercizio, solo per abbonati o libera, data
- "consegne": testo dell'abbonato, lezione, commento dell'autore, stato (inviata, corretta)
Regole di sicurezza obbligatorie:
- le lezioni libere le leggono tutti; quelle per abbonati solo gli abbonati: lo decide il database
- ogni abbonato vede solo le sue consegne
- 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. Lezioni libere e per abbonati
Ogni settimana l'autore pubblica una lezione (es. "Come scrivere un dialogo che non annoia") con un esercizio. Gli iscritti gratuiti ricevono l'inizio della lezione per email; gli abbonati la lezione completa e l'archivio intero.
Il testo completo delle lezioni per abbonati arriva al browser solo se l'utente è abbonato: la regola sta nel database (codice nei Dettagli tecnici). Gli altri vedono le prime righe e il riquadro "Continua a leggere con l'abbonamento".
Invio delle email con Resend, con doppia conferma dell'iscrizione e disiscrizione con un clic.
4. Correzioni commentate
Gli abbonati consegnano fino a 2 testi al mese (massimo 1.500 parole). Prima della correzione dell'autore, il sito offre una prima lettura automatica: Claude segnala ripetizioni, frasi troppo lunghe e punti poco chiari, senza riscrivere il testo.
L'autore corregge con commenti a margine. L'abbonato riceve un'email quando la correzione è pronta.
5. Pagamenti con Stripe
Aggiungi un abbonamento a 6 € al mese o 60 € all'anno. Gratis l'utente ha: l'inizio delle lezioni e 3 lezioni libere al mese. Con il piano Pro sblocca: tutte le lezioni, l'archivio e 2 correzioni commentate al mese.
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. Paywall: con un account gratuito prova a leggere il testo completo di una lezione per abbonati chiamando direttamente il database: deve arrivare solo l'anteprima.
Correggi quello che non va e scrivimi cosa hai cambiato.
Dettagli tecnici
Lezioni per abbonati protette dal database
L'anteprima è pubblica; il testo completo sta in una tabella separata, leggibile solo dagli abbonati o per le lezioni libere.
create table lezioni (
id uuid primary key default gen_random_uuid(),
slug text not null unique,
titolo text not null,
anteprima text not null, -- le prime righe, per tutti
solo_abbonati boolean not null default true,
pubblicata_il date not null default current_date
);
create table testi_lezioni (
lezione_id uuid primary key references lezioni(id) on delete cascade,
testo text not null,
esercizio text not null
);
alter table lezioni enable row level security;
alter table testi_lezioni enable row level security;
create policy "anteprime pubbliche" on lezioni for select using (true);
create policy "testo libero o per abbonati" on testi_lezioni for select using (
not (select l.solo_abbonati from lezioni l where l.id = lezione_id)
or exists (select 1 from profili p where p.id = auth.uid() and p.piano = 'pro')
);
create table consegne (
id uuid primary key default gen_random_uuid(),
utente_id uuid not null references auth.users(id) on delete cascade,
lezione_id uuid references lezioni(id),
testo text not null check (array_length(regexp_split_to_array(trim(testo), '\s+'), 1) <= 1500),
commento text,
stato text not null default 'inviata' check (stato in ('inviata', 'corretta')),
inviata_il timestamptz not null default now()
);
alter table consegne enable row level security;
create policy "le mie consegne" on consegne for select using (auth.uid() = utente_id);
create policy "consegno se abbonato" on consegne for insert with check (
auth.uid() = utente_id and stato = 'inviata' and commento is null
and exists (select 1 from profili p where p.id = auth.uid() and p.piano = 'pro'));
Pezzi comuni a tutti i progetti
Glossario
- Slug
- La parte finale e leggibile dell'indirizzo di una pagina, es. /pizzeria-da-mario.
- Paywall
- Il punto in cui un contenuto si blocca e serve pagare per vederlo. Qui lo controlla il database, quindi non si può aggirare.