CRM multi-tenant costruito con React, TypeScript e Supabase. Gestisce clienti, progetti, task e fatture all'interno di organizzazioni isolate con Row Level Security.
- Frontend — React 18, TypeScript, Vite, Tailwind CSS, shadcn/ui
- Backend — Supabase (PostgreSQL + RLS)
- State / Data — TanStack React Query v5
- Form — React Hook Form + Zod
- PDF — @react-pdf/renderer
- Kanban — @dnd-kit
- Test — Vitest, Testing Library, Playwright
npm install
npm run devL'applicazione è disponibile su http://localhost:5173.
Configurazione Supabase richiesta: vedi docs/SETUP.md.
src/
├── pages/ # Componenti di routing (una pagina per entità)
├── components/ # Componenti UI raggruppati per dominio
│ ├── auth/ # ProtectedRoute, SuperadminRoute
│ ├── clients/ # Tabella e dialog clienti
│ ├── invoices/ # Tabella, dialog, generazione PDF
│ ├── projects/ # Dialog progetti
│ ├── tasks/ # Tabella, dialog, KanbanBoard
│ ├── dashboard/ # StatCard, RevenueChart
│ ├── layout/ # AppSidebar, DashboardLayout, Header
│ └── ui/ # Libreria shadcn/ui (Radix UI)
├── hooks/ # Custom hooks (React Query) per ogni entità
├── services/ # Logica di business Supabase
├── contexts/ # AuthContext, ThemeContext
└── integrations/
└── supabase/ # Client e tipi generati dal database
- Gestione clienti con anagrafica completa (email, telefono, indirizzo, P.IVA, stato)
- Progetti con priorità, budget, date e collegamento al cliente
- Task con vista lista e Kanban drag & drop
- Fatture con voci di dettaglio, export PDF e stati (draft / sent / paid / overdue)
- Dashboard con KPI e grafico dei ricavi
- Upload allegati su progetti e task
- Gestione utenti con ruoli:
superadmin,owner,admin,member - Tema chiaro / scuro
Ogni risorsa (client, progetto, fattura, ecc.) appartiene a un'organizzazione tramite organization_id. L'isolamento è garantito da Row Level Security a livello di database — non solo da filtri applicativi.
La cache di React Query viene svuotata a ogni login/logout per impedire l'accesso ai dati di un utente precedente.
npm run dev # Avvia il server di sviluppo
npm run build # Build di produzione
npm run preview # Anteprima della build
npm run lint # Linting ESLint
npm test # Esegue i test (single run)
npm run test:watch # Test in modalità watch
npm run test:ui # Dashboard UI dei testLa documentazione completa è nella cartella /docs:
docs/SETUP.md— configurazione Supabase e variabili d'ambientedocs/architecture/overview.md— design del sistemadocs/api/hooks.md— reference degli hook customdocs/testing/TEST_SPECS.md— specifiche dei testCONTRIBUTING.md— guida per i contributoridescrizione.md— analisi tecnica dettagliata del progetto
Pietro Cammise · pietro_cam@hotmail.com · linkedin.com/in/pietrocammise · github.com/Auticad
MIT — vedi LICENSE