Skip to content

Commit 07a56a1

Browse files
fix: harden fiscal calculations and release EasyPIVA 1.1.1 (#36)
Verified with npm ci, npm run ci, npm audit and gitleaks. Includes the INPS 2026 massimale correction, accessibility and quote hardening, crawler metadata, dependency security updates, and the product-first GitHub presentation.
1 parent 1898019 commit 07a56a1

45 files changed

Lines changed: 667 additions & 260 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

CHANGELOG.md

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,20 @@ Tutte le modifiche rilevanti a EasyPIVA vengono tracciate in questo file.
66

77
Nessuna modifica in attesa di rilascio.
88

9+
## [1.1.1] - 2026-08-08
10+
11+
- 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;
12+
- documentate le due fasce di massimale nell'ADR fiscale e nella pagina informativa, ora collegata direttamente alle fonti normative primarie;
13+
- corrette la data predefinita del preventivo affinché usi il giorno locale e la persistenza dell'ultima modifica ancora in debounce alla chiusura della pagina;
14+
- 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;
15+
- aggiunto un messaggio accessibile quando la generazione PDF fallisce;
16+
- 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;
17+
- eliminato il layout shift del primo caricamento rendendo eager la piccola home e mantenendo il lazy loading per le route applicative più pesanti;
18+
- aggiunti test axe end-to-end sulle otto route pubbliche e test unitari per massimali INPS, data locale, logo e gestione errori;
19+
- aggiunti `robots.txt`, `sitemap.xml` e `llms.txt` statici per rendere esplicite le route pubbliche e la natura informativa del progetto;
20+
- riorganizzato il README in modo product-first, chiarito l'ambito delle issue e aggiunta una social preview GitHub dedicata con provenienza documentata;
21+
- aggiornate le dipendenze transitive interessate dagli advisory npm; `npm audit` non rileva vulnerabilità note.
22+
923
## [1.1.0] - 2026-08-02
1024

1125
- 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;

CITATION.cff

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,6 @@ authors:
66
given-names: Michael
77
url: 'https://github.com/TheStreamCode/easypiva'
88
repository-code: 'https://github.com/TheStreamCode/easypiva'
9-
version: '1.1.0'
10-
date-released: '2026-08-02'
9+
version: '1.1.1'
10+
date-released: '2026-08-08'
1111
license: MIT

CONTRIBUTING.md

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,14 +5,15 @@ EasyPIVA è un repository pubblico con licenza MIT, ma il codice viene gestito c
55
## Ambito della policy
66

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

1112
## Segnalazioni
1213

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

1819
## Workflow interno dei maintainer

README.md

Lines changed: 61 additions & 72 deletions
Original file line numberDiff line numberDiff line change
@@ -3,56 +3,64 @@
33
[![CI](https://github.com/TheStreamCode/easypiva/actions/workflows/ci.yml/badge.svg)](https://github.com/TheStreamCode/easypiva/actions/workflows/ci.yml)
44
[![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](LICENSE)
55

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

8-
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.
8+
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.
99

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

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

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

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

23-
## Release 1.1.0
28+
## Attendibilità e limiti
2429

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

31-
Il dettaglio completo è nel [changelog](CHANGELOG.md).
32+
- soglie, aliquote e coefficienti sono centralizzati in `src/lib/fiscal-data.ts`;
33+
- la logica fiscale è isolata in funzioni pure sotto `src/lib/calculations/`;
34+
- 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);
35+
- test unitari, UI ed end-to-end proteggono i principali casi di regressione;
36+
- ogni cambiamento fiscale richiede aggiornamenti coordinati di codice, test, documentazione e copy pubblica.
3237

33-
## Funzionalità principali
38+
## Privacy
3439

35-
- Calcolatore del regime forfettario 2026.
36-
- Confronto tra regime forfettario e ordinario.
37-
- Simulatore contributi INPS per Gestione Separata, Artigiani e Commercianti.
38-
- Calcolo inverso del fatturato necessario per raggiungere un netto obiettivo.
39-
- Pianificazione mensile dei ricavi rispetto alle soglie del regime.
40-
- Preventivo locale con anteprima A4, autosalvataggio della bozza nel browser ed export PDF.
40+
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).
41+
42+
## Release 1.1.1
43+
44+
La versione corrente del repository è `1.1.1`.
45+
46+
- Corregge la scelta del massimale INPS 2026 per Artigiani e Commercianti in base all'anzianità contributiva.
47+
- Rafforza accessibilità, navigazione da tastiera e gestione del menu mobile.
48+
- Rende più robusti upload del logo, autosalvataggio ed export PDF del preventivo.
49+
- Aggiunge controlli axe end-to-end, metadata per i crawler e aggiornamenti di sicurezza delle dipendenze.
50+
51+
Il dettaglio completo è nel [changelog](CHANGELOG.md).
4152

4253
## Stack
4354

44-
- React 19, React Router 8, TypeScript 6, Vite 6.
55+
- React 19, React Router 8, TypeScript 6 e Vite 6.
4556
- Tailwind CSS v4 e componenti shadcn/ui.
46-
- Zustand per lo stato client-side.
47-
- React Hook Form e Zod per i form.
48-
- Recharts, motion e jsPDF per visualizzazione ed export.
57+
- Zustand, React Hook Form e Zod.
58+
- Recharts, motion e jsPDF.
59+
- Vitest con jsdom e Playwright con Chromium.
4960

50-
## Requisiti locali
61+
## Sviluppo locale
5162

52-
- Node.js 24 LTS e npm 11, in linea con `.nvmrc`, `package.json` e CI.
53-
- npm come package manager canonico.
54-
55-
## Avvio locale
63+
Richiede Node.js 24 LTS, npm 11 e npm come package manager canonico.
5664

5765
```bash
5866
git clone https://github.com/TheStreamCode/easypiva.git
@@ -61,20 +69,18 @@ npm ci
6169
npm run dev
6270
```
6371

64-
L'app viene servita in sviluppo su `http://127.0.0.1:3000`.
72+
L'app viene servita su `http://127.0.0.1:3000`.
6573

66-
## Script principali
74+
### Verifiche
6775

68-
- `npm run dev` avvia il server di sviluppo.
69-
- `npm run dev:e2e` avvia Vite su `http://127.0.0.1:4173` per Playwright.
70-
- `npm run typecheck` esegue il controllo TypeScript.
71-
- `npm run lint` esegue ESLint.
72-
- `npm run test` esegue la suite Vitest.
73-
- `npm run test:e2e` esegue la suite Playwright.
74-
- `npm run build` genera la build di produzione in `dist/`.
75-
- `npm run ci` esegue il flusso completo usato dalla CI: format check, typecheck, lint, Vitest, build e Playwright.
76+
```bash
77+
npm run ci
78+
npm audit
79+
```
7680

77-
Per gli end-to-end in locale può servire una sola volta `npx playwright install chromium`.
81+
`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`.
82+
83+
Gli script disponibili sono documentati in `package.json`; i principali sono `dev`, `dev:e2e`, `typecheck`, `lint`, `test`, `test:e2e`, `build` e `ci`.
7884

7985
## Struttura del repository
8086

@@ -85,53 +91,36 @@ src/
8591
lib/
8692
calculations/ # Logica fiscale pura e testata
8793
quote/ # Modello preventivo, paginazione ed export PDF
88-
fiscal-data.ts # Costanti fiscali 2026 (soglie, aliquote, coefficienti)
89-
store/ # Store Zustand (disclaimer, tema)
94+
fiscal-data.ts # Costanti fiscali 2026
95+
store/ # Store Zustand
9096
components/ui/ # Primitivi UI condivisi
9197
tests/e2e/ # Test end-to-end Playwright
92-
docs/ # Architettura, privacy, ADR fiscale, governance
98+
docs/ # Architettura, privacy, ADR e governance
9399
```
94100

95101
## Deployment
96102

97-
- La build statica prodotta da `npm run build` in `dist/` viene pubblicata su Vercel: <https://easypiva.vercel.app>.
98-
- `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).
99-
- Non esiste un backend applicativo né una configurazione di deploy alternativa nel repository.
103+
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.
100104

101105
## Documentazione
102106

103107
- [Architettura](docs/architecture.md)
104-
- [Provenienza dell'asset dashboard](docs/asset-provenance.md)
105108
- [Privacy e storage locale](docs/privacy-and-storage.md)
106109
- [Assunzioni fiscali](docs/ADRs/0001-fiscal-assumptions.md)
107110
- [Governance repository](docs/repository-governance.md)
108-
- [Changelog](CHANGELOG.md)
111+
- [Provenienza degli asset](docs/asset-provenance.md)
109112
- [Contribution policy](CONTRIBUTING.md)
110-
- [Code of Conduct](CODE_OF_CONDUCT.md)
111113
- [Security policy](SECURITY.md)
114+
- [Code of Conduct](CODE_OF_CONDUCT.md)
112115

113-
## Workflow del repository
114-
115-
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).
116-
117-
## Governance GitHub
118-
119-
- La CI principale è in `.github/workflows/ci.yml` e usa permessi minimi in sola lettura.
120-
- Playwright usa una porta dedicata per evitare collisioni con server locali su `3000`.
121-
- Dependabot apre solo aggiornamenti di sicurezza; gli aggiornamenti di versione ordinari sono disabilitati per evitare rumore e vengono pianificati manualmente.
122-
- Le pull request eseguono anche `Dependency Review` per intercettare vulnerabilità introdotte da cambi di dipendenze.
123-
- Le GitHub Actions sono fissate a commit SHA verificati e gli install script npm sono limitati a una allowlist esplicita.
124-
- Issue e pull request usano template strutturati in `.github/` per rendere il triage riproducibile.
125-
- Le vulnerabilità vanno segnalate privatamente seguendo [`SECURITY.md`](SECURITY.md), non tramite issue pubbliche.
126-
127-
## Supporta il progetto
116+
## Governance e segnalazioni
128117

129-
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).
118+
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à.
130119

131-
## Disclaimer
120+
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.
132121

133-
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.
122+
## Progetto
134123

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

137126
Distribuito sotto licenza [MIT](LICENSE).

docs/ADRs/0001-fiscal-assumptions.md

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,8 @@ EasyPIVA fornisce simulazioni fiscali indicative per utenti con Partita IVA ital
2727
- Gestione Separata: 26,07% (Circ. INPS 8/2026), entro il massimale di 122.295€.
2828
- Artigiani: minimale reddito 18.808€, contributo fisso 4.521,36€, aliquota 24% oltre il minimale.
2929
- Commercianti: minimale reddito 18.808€, contributo fisso 4.611,64€, aliquota 24,48% oltre il minimale.
30-
- Aliquota aggiuntiva +1% sul reddito oltre 56.224€ (25% / 25,48%), fino al massimale 122.295€ (Circ. INPS 14/2026).
30+
- Aliquota aggiuntiva +1% sul reddito oltre 56.224€ (25% / 25,48%), fino al massimale applicabile (Circ. INPS 14/2026).
31+
- 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.
3132
- Riduzione 35% per forfettari (artigiani/commercianti).
3233

3334
## Regime Ordinario (confronto)

docs/asset-provenance.md

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,14 @@
99

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

12+
## `docs/assets/easypiva-social-preview.png`
13+
14+
- Cover PNG creata per la presentazione del repository e per la social preview GitHub, senza modificare l'asset dashboard esistente.
15+
- Generata il 2026-08-08 con lo strumento ImageGen integrato di OpenAI, usando la dashboard esclusivamente come riferimento per palette, wordmark e linguaggio visivo.
16+
- 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.
17+
- Ridimensionata deterministicamente a 1280 × 640 px; dimensione file: 751.341 byte.
18+
- SHA-256 del file corrente: `2d5f0c1d291d8211e52593732878c0bd6d46895ba7d0c923e110a7c4bd2377c9`.
19+
1220
## Titolarità e riferimenti di terzi
1321

1422
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.
734 KB
Loading

0 commit comments

Comments
 (0)