OIO
Progetti, clienti e fatture dei freelance con un solo accesso
Cosa fa
Uno strumento per freelance che riunisce progetti, clienti e fatturazione in un unico posto.
Come guadagna
Startup appena presentata su BetaList, che non dichiara incassi. Idee nostre per guadagnare con un progetto simile: abbonamento mensile per freelance.
Rendilo tuo
- Per i freelance italiani in regime forfettario: incassato, limite degli 85.000 € e tasse da accantonare.
- Le fatture elettroniche vanno inviate tramite un servizio autorizzato: collegalo invece di rifarlo.
Le frasi da scrivere all'AI
1. Base del sito e grafica
Crea un'app web in italiano chiamata "Partita IVA Facile": uno strumento per freelance in Italia che riunisce progetti, clienti, ore lavorate e fatture, con i conti giusti per il regime forfettario (rivalsa INPS, marca da bollo) e una stima di quanto mettere da parte per tasse e contributi. Usa React, Vite, TypeScript e Tailwind CSS.
Pagine da creare:
1. Pagina iniziale con le funzioni e il prezzo
2. Clienti e progetti con tariffa oraria o a corpo
3. Ore lavorate con il timer
4. Fatture con i calcoli per il regime forfettario
5. Accantonamento: quanto mettere da parte ogni mese
Stile: chiaro e rassicurante: sfondo bianco, verde #059669, blu #1D4ED8, arancione #D97706 per le scadenze, carattere "Inter", numeri grandi e spiegati. 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:
- "impostazioni": regime (forfettario o ordinario), coefficiente di redditività, aliquota (5% o 15%), cassa previdenziale, rivalsa sì/no
- "clienti", "progetti", "ore"
- "fatture": numero progressivo, righe, rivalsa, bollo, totale, incassata il
Regole di sicurezza obbligatorie:
- ogni utente vede solo i suoi dati
- il numero delle fatture è progressivo per anno e lo assegna il database
- le stime fiscali sono indicative e lo si dice chiaramente
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. Fatture con i calcoli giusti
Le fatture partono dalle ore lavorate o da un importo a corpo. Per il regime forfettario il sito applica: niente IVA con la dicitura di legge, rivalsa INPS del 4% se l'utente la sceglie (per la Gestione Separata), e marca da bollo da 2 € sopra i 77,47 € (codice nei Dettagli tecnici). Numerazione progressiva per anno assegnata dal database.
Le fatture elettroniche si preparano in formato XML per lo SDI; l'invio passa da un intermediario accreditato.
Avviso fisso: "Calcoli indicativi: verifica sempre con il tuo commercialista".
4. Quanto mettere da parte
Dagli incassi dell'anno il sito stima, per il forfettario: reddito imponibile (incassi × coefficiente di redditività), contributi (es. Gestione Separata) e imposta sostitutiva, e quindi quanto conviene accantonare ogni mese. Grafico degli incassi rispetto al limite di 85.000 € del forfettario.
Ore per progetto e guadagno orario reale, per capire quali clienti rendono di più.
5. Pagamenti con Stripe
Aggiungi un abbonamento a 8 € al mese. Gratis l'utente ha: 3 clienti e 5 fatture all'anno. Con il piano Pro sblocca: clienti e fatture illimitati, timer delle ore, stima dell'accantonamento ed esportazione per il commercialista.
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. Calcoli: fattura forfettaria da 1.000 € con rivalsa 4%: 1.040 € più 2 € di bollo. Controllala a mano con il commercialista prima del lancio.
Correggi quello che non va e scrivimi cosa hai cambiato.
Dettagli tecnici
Totale della fattura nel regime forfettario
Calcola rivalsa INPS (se scelta), marca da bollo e totale per una fattura in regime forfettario, in centesimi. Valori da verificare ogni anno con il commercialista.
type Impostazioni = { rivalsaInps: boolean; percentualeRivalsa: number }; // es. 4 (Gestione Separata)
const SOGLIA_BOLLO = 7747; // 77,47 € in centesimi
const BOLLO = 200; // 2,00 €
export function totaleForfettario(imponibileCentesimi: number, i: Impostazioni) {
const rivalsa = i.rivalsaInps ? Math.round((imponibileCentesimi * i.percentualeRivalsa) / 100) : 0;
const prestazione = imponibileCentesimi + rivalsa;
const bollo = prestazione > SOGLIA_BOLLO ? BOLLO : 0; // il bollo si può addebitare al cliente
return {
imponibile: imponibileCentesimi,
rivalsa,
bollo,
totale: prestazione + bollo,
dicitura: "Operazione effettuata ai sensi dell'art. 1, commi da 54 a 89, della Legge n. 190/2014 " +
"(regime forfettario). Operazione senza applicazione dell'IVA.",
};
}
// Stima indicativa dell'imposta sostitutiva sugli incassi dell'anno (contributi esclusi)
export const impostaStimata = (incassi: number, coefficiente: number, aliquota: 5 | 15) =>
Math.round((incassi * coefficiente / 100) * aliquota / 100);Numero progressivo e incassi dell'anno
Il numero di fattura si assegna all'emissione, progressivo per anno; la query somma gli incassi rispetto al limite del forfettario.
create table fatture (
id uuid primary key default gen_random_uuid(),
utente_id uuid not null references auth.users(id) on delete cascade,
anno int, numero int,
data date,
cliente_id uuid not null,
righe jsonb not null,
totale_centesimi int not null,
incassata_il date,
unique (utente_id, anno, numero)
);
alter table fatture enable row level security;
create policy "le mie righe" on fatture
for all using (auth.uid() = utente_id) with check (auth.uid() = utente_id);
create function prossimo_numero(per_anno int) returns int
language sql security definer set search_path = public as $
select coalesce(max(numero), 0) + 1 from fatture
where utente_id = auth.uid() and anno = per_anno;
$; -- con il vincolo unique: se due fatture prendono lo stesso numero, la seconda fallisce e si riprova
-- Incassi dell'anno (principio di cassa) rispetto al limite di 85.000 €
select coalesce(sum(totale_centesimi), 0) / 100.0 as incassato,
round(100.0 * coalesce(sum(totale_centesimi), 0) / 8500000, 1) as percentuale_del_limite
from fatture
where utente_id = auth.uid() and extract(year from incassata_il) = extract(year from current_date);
Pezzi comuni a tutti i progetti
Glossario
- JSONB
- Un tipo di colonna che contiene dati strutturati flessibili, come un piccolo documento.
- Regime forfettario
- Un regime fiscale semplificato per partite IVA con ricavi fino a 85.000 €: niente IVA in fattura e un'imposta unica.
- Rivalsa INPS
- Il 4% che il freelance iscritto alla Gestione Separata può aggiungere in fattura per i contributi.