← Tutte le idee Gestionali per aziende

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.