Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
14 changes: 14 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,20 @@ Tutte le modifiche rilevanti a EasyPIVA vengono tracciate in questo file.

Nessuna modifica in attesa di rilascio.

## [1.1.1] - 2026-08-08

- corretto il calcolo INPS 2026 per Artigiani e Commercianti distinguendo il massimale di 93.707€ per chi possiede anzianità contributiva al 31 dicembre 1995 dal massimale di 122.295€ applicabile negli altri casi, con scelta esplicita nei tre simulatori e nel confronto regimi;
- documentate le due fasce di massimale nell'ADR fiscale e nella pagina informativa, ora collegata direttamente alle fonti normative primarie;
- corrette la data predefinita del preventivo affinché usi il giorno locale e la persistenza dell'ultima modifica ancora in debounce alla chiusura della pagina;
- limitato l'upload del logo a PNG, JPEG e WebP entro 1 MB, sanificando anche le bozze già archiviate e mostrando messaggi accessibili in caso di errore;
- aggiunto un messaggio accessibile quando la generazione PDF fallisce;
- migliorata l'accessibilità con skip link, titoli documento per route, menu mobile modale con gestione nativa di focus ed Escape, etichetta testuale del grafico del calcolatore e contrasto corretto nella hero;
- eliminato il layout shift del primo caricamento rendendo eager la piccola home e mantenendo il lazy loading per le route applicative più pesanti;
- aggiunti test axe end-to-end sulle otto route pubbliche e test unitari per massimali INPS, data locale, logo e gestione errori;
- aggiunti `robots.txt`, `sitemap.xml` e `llms.txt` statici per rendere esplicite le route pubbliche e la natura informativa del progetto;
- riorganizzato il README in modo product-first, chiarito l'ambito delle issue e aggiunta una social preview GitHub dedicata con provenienza documentata;
- aggiornate le dipendenze transitive interessate dagli advisory npm; `npm audit` non rileva vulnerabilità note.

## [1.1.0] - 2026-08-02

- rimosse le devDependencies inutilizzate `@types/express` (nessun uso di Express nel progetto) e `autoprefixer` (il progetto non ha una pipeline PostCSS: Tailwind CSS v4 passa da `@tailwindcss/vite`), per un totale di 14 pacchetti in meno nell'albero di installazione;
Expand Down
4 changes: 2 additions & 2 deletions CITATION.cff
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,6 @@ authors:
given-names: Michael
url: 'https://github.com/TheStreamCode/easypiva'
repository-code: 'https://github.com/TheStreamCode/easypiva'
version: '1.1.0'
date-released: '2026-08-02'
version: '1.1.1'
date-released: '2026-08-08'
license: MIT
5 changes: 3 additions & 2 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,14 +5,15 @@ EasyPIVA è un repository pubblico con licenza MIT, ma il codice viene gestito c
## Ambito della policy

- Le pull request esterne non fanno parte del processo di manutenzione ufficiale.
- Issue, discussion e richieste di supporto pubblico non sono il canale operativo del progetto.
- Sono benvenute issue per bug riproducibili, problemi di accessibilità o privacy e assunzioni fiscali corredate da fonti primarie verificabili.
- Issue e discussion non sono canali di consulenza fiscale, assistenza personalizzata o supporto operativo.
- Fork e riuso del codice restano consentiti nei limiti della licenza MIT.

## Segnalazioni

- Per vulnerabilità o problemi di privacy, consulta [`SECURITY.md`](SECURITY.md).
- Per contatti operativi non legati alla sicurezza, scrivi a `info@mikesoft.it`.
- Le issue pubbliche, quando abilitate, devono usare i template in `.github/ISSUE_TEMPLATE/` e includere passaggi riproducibili o fonti primarie.
- Le issue pubbliche devono usare i template in `.github/ISSUE_TEMPLATE/` e includere passaggi riproducibili o fonti primarie.
- Le pull request devono usare `.github/pull_request_template.md` e riportare i comandi di verifica eseguiti.

## Workflow interno dei maintainer
Expand Down
133 changes: 61 additions & 72 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,56 +3,64 @@
[![CI](https://github.com/TheStreamCode/easypiva/actions/workflows/ci.yml/badge.svg)](https://github.com/TheStreamCode/easypiva/actions/workflows/ci.yml)
[![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](LICENSE)

Versione corrente del repository: `1.1.0`.
![EasyPIVA — Simulazioni fiscali indicative per la Partita IVA italiana](docs/assets/easypiva-social-preview.png)

EasyPIVA è una web app client-side per simulazioni fiscali indicative dedicate alla Partita IVA italiana. Copre regime forfettario, contributi INPS, confronto tra regimi, pianificazione dei ricavi e generazione di preventivi con export PDF.
EasyPIVA è una web app open source per simulazioni fiscali indicative dedicate alla Partita IVA italiana. Riunisce calcolo del regime forfettario, contributi INPS, confronto con il regime ordinario, pianificazione dei ricavi e generazione di preventivi con export PDF.

Tutti i calcoli vengono eseguiti localmente nel browser. Il progetto non richiede account e non usa un backend applicativo.
**[Apri EasyPIVA](https://easypiva.vercel.app)** · **[Consulta le fonti fiscali](https://easypiva.vercel.app/informativa)** · **[Leggi il changelog](CHANGELOG.md)**

**App online:** [easypiva.vercel.app](https://easypiva.vercel.app)
- Tutti i calcoli vengono eseguiti localmente nel browser.
- Non richiede account, backend applicativo o telemetria.
- Le assunzioni fiscali 2026 sono centralizzate, testate e documentate con fonti primarie.
- Il codice è pubblico e distribuito con licenza MIT.

![Screenshot della dashboard EasyPIVA con strumenti per simulazioni fiscali Partita IVA 2026](docs/assets/easypiva-dashboard.png)
> I risultati sono stime indicative e non costituiscono consulenza fiscale, legale o contabile. Per decisioni professionali è necessario rivolgersi a un consulente abilitato.

## Branding e packaging
## Funzionalità

- Brand prodotto: `EasyPIVA`.
- Maintainer e autore del repository: `Michael Gasperini (Mikesoft)`.
- Packaging supportato: applicazione web statica buildata con Vite.
- Questo repository non è una VS Code extension: non usa `vsce`, non genera `.vsix` e non richiede icone separate per Activity Bar, sidebar o Marketplace.
- Calcolo del regime forfettario 2026.
- Confronto indicativo tra regime forfettario e ordinario.
- Simulazione dei contributi INPS per Gestione Separata, Artigiani e Commercianti.
- Calcolo inverso del fatturato necessario per raggiungere un netto obiettivo.
- Pianificazione mensile dei ricavi rispetto alle soglie del regime.
- Preventivo locale con anteprima A4, autosalvataggio nel browser ed export PDF.

## Release 1.1.0
## Attendibilità e limiti

- Allinea i contributi INPS 2026 (minimale, contributi fissi, aliquota aggiuntiva +1% e massimale) alle Circolari INPS 8/2026 e 14/2026.
- Migliora il confronto con il regime ordinario introducendo la detrazione per redditi di lavoro autonomo.
- Aggiorna runtime e toolchain: Node.js 24 LTS, TypeScript 6, ESLint 10, `react-router` 8.
- Elimina la richiesta runtime a Google Fonts self-hostando i font nel bundle, in coerenza con l'architettura local-first.
- Ripulisce le dipendenze di sviluppo non utilizzate e allinea metadata, citazione e documentazione.
EasyPIVA rende verificabili le proprie assunzioni senza presentarsi come sostituto di un professionista:

Il dettaglio completo è nel [changelog](CHANGELOG.md).
- soglie, aliquote e coefficienti sono centralizzati in `src/lib/fiscal-data.ts`;
- la logica fiscale è isolata in funzioni pure sotto `src/lib/calculations/`;
- le assunzioni e le fonti normative sono documentate nell'[ADR fiscale](docs/ADRs/0001-fiscal-assumptions.md) e nell'[informativa pubblica](https://easypiva.vercel.app/informativa);
- test unitari, UI ed end-to-end proteggono i principali casi di regressione;
- ogni cambiamento fiscale richiede aggiornamenti coordinati di codice, test, documentazione e copy pubblica.

## Funzionalità principali
## Privacy

- Calcolatore del regime forfettario 2026.
- Confronto tra regime forfettario e ordinario.
- Simulatore contributi INPS per Gestione Separata, Artigiani e Commercianti.
- Calcolo inverso del fatturato necessario per raggiungere un netto obiettivo.
- Pianificazione mensile dei ricavi rispetto alle soglie del regime.
- Preventivo locale con anteprima A4, autosalvataggio della bozza nel browser ed export PDF.
Il progetto segue un'architettura local-first: non invia a un server i valori inseriti nei simulatori o nel preventivo. Tema, consenso al disclaimer e bozza del preventivo possono essere salvati nel `localStorage` del browser. Il dettaglio è in [Privacy e storage locale](docs/privacy-and-storage.md).

## Release 1.1.1

La versione corrente del repository è `1.1.1`.

- Corregge la scelta del massimale INPS 2026 per Artigiani e Commercianti in base all'anzianità contributiva.
- Rafforza accessibilità, navigazione da tastiera e gestione del menu mobile.
- Rende più robusti upload del logo, autosalvataggio ed export PDF del preventivo.
- Aggiunge controlli axe end-to-end, metadata per i crawler e aggiornamenti di sicurezza delle dipendenze.

Il dettaglio completo è nel [changelog](CHANGELOG.md).

## Stack

- React 19, React Router 8, TypeScript 6, Vite 6.
- React 19, React Router 8, TypeScript 6 e Vite 6.
- Tailwind CSS v4 e componenti shadcn/ui.
- Zustand per lo stato client-side.
- React Hook Form e Zod per i form.
- Recharts, motion e jsPDF per visualizzazione ed export.
- Zustand, React Hook Form e Zod.
- Recharts, motion e jsPDF.
- Vitest con jsdom e Playwright con Chromium.

## Requisiti locali
## Sviluppo locale

- Node.js 24 LTS e npm 11, in linea con `.nvmrc`, `package.json` e CI.
- npm come package manager canonico.

## Avvio locale
Richiede Node.js 24 LTS, npm 11 e npm come package manager canonico.

```bash
git clone https://github.com/TheStreamCode/easypiva.git
Expand All @@ -61,20 +69,18 @@ npm ci
npm run dev
```

L'app viene servita in sviluppo su `http://127.0.0.1:3000`.
L'app viene servita su `http://127.0.0.1:3000`.

## Script principali
### Verifiche

- `npm run dev` avvia il server di sviluppo.
- `npm run dev:e2e` avvia Vite su `http://127.0.0.1:4173` per Playwright.
- `npm run typecheck` esegue il controllo TypeScript.
- `npm run lint` esegue ESLint.
- `npm run test` esegue la suite Vitest.
- `npm run test:e2e` esegue la suite Playwright.
- `npm run build` genera la build di produzione in `dist/`.
- `npm run ci` esegue il flusso completo usato dalla CI: format check, typecheck, lint, Vitest, build e Playwright.
```bash
npm run ci
npm audit
```

Per gli end-to-end in locale può servire una sola volta `npx playwright install chromium`.
`npm run ci` esegue formattazione, typecheck, lint, test Vitest, build di produzione e test Playwright. Se Chromium non è ancora installato, esegui una volta `npx playwright install chromium`.

Gli script disponibili sono documentati in `package.json`; i principali sono `dev`, `dev:e2e`, `typecheck`, `lint`, `test`, `test:e2e`, `build` e `ci`.

## Struttura del repository

Expand All @@ -85,53 +91,36 @@ src/
lib/
calculations/ # Logica fiscale pura e testata
quote/ # Modello preventivo, paginazione ed export PDF
fiscal-data.ts # Costanti fiscali 2026 (soglie, aliquote, coefficienti)
store/ # Store Zustand (disclaimer, tema)
fiscal-data.ts # Costanti fiscali 2026
store/ # Store Zustand
components/ui/ # Primitivi UI condivisi
tests/e2e/ # Test end-to-end Playwright
docs/ # Architettura, privacy, ADR fiscale, governance
docs/ # Architettura, privacy, ADR e governance
```

## Deployment

- La build statica prodotta da `npm run build` in `dist/` viene pubblicata su Vercel: <https://easypiva.vercel.app>.
- `vercel.json` applica la rewrite `/(.*) → /index.html` necessaria al routing client-side e gli header HTTP di sicurezza (CSP, anti-framing, MIME sniffing, referrer e permissions policy).
- Non esiste un backend applicativo né una configurazione di deploy alternativa nel repository.
La build statica prodotta in `dist/` viene pubblicata su [Vercel](https://easypiva.vercel.app) dal branch `main`. `vercel.json` gestisce il routing client-side e gli header HTTP di sicurezza. Il progetto non utilizza un backend applicativo né variabili d'ambiente runtime.

## Documentazione

- [Architettura](docs/architecture.md)
- [Provenienza dell'asset dashboard](docs/asset-provenance.md)
- [Privacy e storage locale](docs/privacy-and-storage.md)
- [Assunzioni fiscali](docs/ADRs/0001-fiscal-assumptions.md)
- [Governance repository](docs/repository-governance.md)
- [Changelog](CHANGELOG.md)
- [Provenienza degli asset](docs/asset-provenance.md)
- [Contribution policy](CONTRIBUTING.md)
- [Code of Conduct](CODE_OF_CONDUCT.md)
- [Security policy](SECURITY.md)
- [Code of Conduct](CODE_OF_CONDUCT.md)

## Workflow del repository

Il repository è pubblico e rilasciato con licenza MIT, ma la manutenzione del codice segue un workflow `maintainers-only`. La policy completa è documentata in [`CONTRIBUTING.md`](CONTRIBUTING.md).

## Governance GitHub

- La CI principale è in `.github/workflows/ci.yml` e usa permessi minimi in sola lettura.
- Playwright usa una porta dedicata per evitare collisioni con server locali su `3000`.
- Dependabot apre solo aggiornamenti di sicurezza; gli aggiornamenti di versione ordinari sono disabilitati per evitare rumore e vengono pianificati manualmente.
- Le pull request eseguono anche `Dependency Review` per intercettare vulnerabilità introdotte da cambi di dipendenze.
- Le GitHub Actions sono fissate a commit SHA verificati e gli install script npm sono limitati a una allowlist esplicita.
- Issue e pull request usano template strutturati in `.github/` per rendere il triage riproducibile.
- Le vulnerabilità vanno segnalate privatamente seguendo [`SECURITY.md`](SECURITY.md), non tramite issue pubbliche.

## Supporta il progetto
## Governance e segnalazioni

Se EasyPIVA ti aiuta nelle simulazioni fiscali o nella pianificazione della Partita IVA, puoi supportare lo sviluppo continuo tramite GitHub Sponsors: [github.com/sponsors/TheStreamCode](https://github.com/sponsors/TheStreamCode).
Il repository è pubblico, ma la manutenzione segue un workflow `maintainers-only`. Sono benvenute issue riproducibili e segnalazioni fiscali corredate da fonti primarie; il repository non fornisce consulenza fiscale o supporto personalizzato. Consulta [CONTRIBUTING.md](CONTRIBUTING.md) prima di aprire una segnalazione e [SECURITY.md](SECURITY.md) per comunicare privatamente una vulnerabilità.

## Disclaimer
La CI usa permessi minimi, le GitHub Actions sono fissate a commit SHA e le pull request eseguono anche Dependency Review. Il branch `main` richiede review, check obbligatori, conversazioni risolte e storia lineare.

I risultati sono stime indicative basate sulle assunzioni fiscali documentate nel repository. Non costituiscono consulenza fiscale, legale o contabile e non sostituiscono il parere di un professionista abilitato.
## Progetto

## Licenza
EasyPIVA è mantenuto da **Michael Gasperini (Mikesoft)**. Se il progetto ti è utile, puoi [supportarne lo sviluppo tramite GitHub Sponsors](https://github.com/sponsors/TheStreamCode).

Distribuito sotto licenza [MIT](LICENSE).
3 changes: 2 additions & 1 deletion docs/ADRs/0001-fiscal-assumptions.md
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,8 @@ EasyPIVA fornisce simulazioni fiscali indicative per utenti con Partita IVA ital
- Gestione Separata: 26,07% (Circ. INPS 8/2026), entro il massimale di 122.295€.
- Artigiani: minimale reddito 18.808€, contributo fisso 4.521,36€, aliquota 24% oltre il minimale.
- Commercianti: minimale reddito 18.808€, contributo fisso 4.611,64€, aliquota 24,48% oltre il minimale.
- Aliquota aggiuntiva +1% sul reddito oltre 56.224€ (25% / 25,48%), fino al massimale 122.295€ (Circ. INPS 14/2026).
- Aliquota aggiuntiva +1% sul reddito oltre 56.224€ (25% / 25,48%), fino al massimale applicabile (Circ. INPS 14/2026).
- Massimale Artigiani/Commercianti: 93.707€ per chi possiede anzianità contributiva al 31 dicembre 1995; 122.295€ per chi è privo di anzianità a tale data. L'interfaccia richiede questa informazione e usa il secondo caso come default compatibile con le simulazioni precedenti.
- Riduzione 35% per forfettari (artigiani/commercianti).

## Regime Ordinario (confronto)
Expand Down
8 changes: 8 additions & 0 deletions docs/asset-provenance.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,14 @@

La cronologia del repository non documenta ulteriori informazioni sull'origine dell'immagine.

## `docs/assets/easypiva-social-preview.png`

- Cover PNG creata per la presentazione del repository e per la social preview GitHub, senza modificare l'asset dashboard esistente.
- Generata il 2026-08-08 con lo strumento ImageGen integrato di OpenAI, usando la dashboard esclusivamente come riferimento per palette, wordmark e linguaggio visivo.
- Il prompt richiedeva una composizione editoriale minimalista, il payoff prudente “Simulazioni fiscali indicative per la Partita IVA italiana” e l'assenza di claim di precisione o consulenza.
- Ridimensionata deterministicamente a 1280 × 640 px; dimensione file: 751.341 byte.
- SHA-256 del file corrente: `2d5f0c1d291d8211e52593732878c0bd6d46895ba7d0c923e110a7c4bd2377c9`.

## Titolarità e riferimenti di terzi

I maintainer rivendicano titolarità esclusivamente sui materiali originali EasyPIVA. La licenza MIT disciplina esclusivamente tali materiali originali messi a disposizione nel repository; questo record non attribuisce titolarità né una licenza separata all'immagine della dashboard.
Expand Down
Binary file added docs/assets/easypiva-social-preview.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading