Desk
Invoicetronic Desk è un'app web open-source e white-label per la fatturazione elettronica italiana (FatturaPA/SDI). È un frontend pronto all'uso per la Invoicetronic API, disponibile come servizio cloud o self-hosted con Docker o binari nativi.
Non è necessario studiare la API o implementare nulla: con Desk puoi inviare e ricevere fatture elettroniche immediatamente. ISV e sviluppatori possono anche ospitarla autonomamente, applicare il proprio branding e offrire ai propri clienti un'interfaccia completa per la fatturazione — senza scrivere una sola riga di codice UI.
Prova Gratis Desk Cloud GitHub
Funzionalità
- Invio e ricezione fatture — ricerca full-text, filtri per data, paginazione server-side, download XML
- Dettaglio fattura — metadati e timeline completa degli stati SDI
- Upload — drag-and-drop multi-file
- Export — filtro per mese/trimestre/intervallo date, download in ZIP
- Gestione aziende — CRUD per le aziende collegate alla API key
- Dashboard — panoramica fatture recenti e contatori
- Localizzazione — italiano (default) e inglese
Dashboard vs Desk
Invoicetronic ha due app web con scopi diversi:
- Dashboard è per sviluppatori e amministratori. Serve a gestire le API key, configurare webhook, consultare i log delle chiamate API, passare da ambiente test a live, e gestire la sottoscrizione.
- Desk (questa pagina) è per chi lavora con le fatture ogni giorno. Serve a inviare, ricevere, cercare, caricare, esportare fatture e gestire le aziende — senza toccare codice o API.
| Dashboard | Desk | |
|---|---|---|
| Utente tipo | Sviluppatore / admin | Commercialista / operatore / ISV (uso interno o test dell'integrazione) |
| API key | Crea, ruota, gestisci | Ne usa una (configurata o per utente) |
| Webhook | Configura endpoint ed eventi | — |
| Log API | Consulta storico richieste/risposte | — |
| Modalità test/live | Cambio ambiente | Determinata dalla API key |
| Billing | Gestisci abbonamento e pagamento | — |
| Invio e ricezione fatture | — | Ricerca full-text, filtri, paginazione |
| Dettaglio fattura e timeline SDI | — | Storico completo degli stati |
| Upload fatture | — | Drag-and-drop multi-file |
| Export | — | Download ZIP per intervallo date |
| Gestione aziende | — | CRUD per aziende collegate |
| White-label / self-host | No | Sì (Docker, branding personalizzato) |
In sintesi: Dashboard è dove si configura l'infrastruttura; Desk è dove tu (o i tuoi clienti) lavorate con le fatture. La maggior parte degli utenti usa entrambe: Dashboard una volta in fase di setup, Desk tutti i giorni — eventualmente affiancato alle proprie integrazioni.
Ottenere una API key
Registrati su dashboard.invoicetronic.com e ottieni la tua API key. Desk funziona sia con API key sandbox che live — l'ambiente è determinato dalla chiave utilizzata. Inizia con una chiave sandbox per i test, poi passa alla live quando sei pronto. Consulta le pagine Sandbox e API Keys per i dettagli.
Prerequisiti per l'ambiente live
Per utilizzare Desk in ambiente live, il tuo account Invoicetronic deve soddisfare i prerequisiti della API (accreditamento presso SDI, ecc.). Consulta i Prerequisiti per l'ambiente live per la checklist completa. Per la sandbox non è richiesto alcun prerequisito — puoi iniziare a testare immediatamente.
Cloud o self-hosted
| Cloud | Self-hosted | |
|---|---|---|
| Setup | Registrati e inizia subito | Docker compose o binario nativo su un proprio server |
| Manutenzione | Zero — ci pensiamo noi | Manuale |
| Aggiornamenti | Automatici — ci pensiamo noi | Manuali (docker pull o download nuova release) |
| Personalizzazione | Limitata | Completa (CSS, logo, nome app) |
| Costo | 5€/mese | Gratuito |
Cloud
Il modo più rapido per iniziare. Nessun Docker, nessun server, nessuna configurazione — registrati su desk.invoicetronic.com e inizia a lavorare.
Self-hosted con Docker
Modalità standalone (singola API key, nessun login — ideale per reti interne):
# docker-compose.yml
services:
desk:
image: invoicetronic/desk
ports:
- "8080:8080"
volumes:
- ./desk.yml:/app/desk.yml
Non salvare segreti nei file di configurazione
Passa la API key tramite variabile d'ambiente invece di salvarla in desk.yml:
Apri http://localhost:8080 — nessuna registrazione necessaria.
Modalità multi-utente (ogni utente si registra e inserisce la propria API key):
# docker-compose.yml
services:
desk:
image: invoicetronic/desk
ports:
- "8080:8080"
volumes:
- ./desk.yml:/app/desk.yml # opzionale
- ./data:/app/data # persistenza database utenti
Apri http://localhost:8080, registrati e inserisci la tua API key nella pagina profilo.
Binari nativi
Ogni release su GitHub include binari self-contained e single-file — non è necessario installare .NET.
| File | Sistema operativo | Architettura |
|---|---|---|
desk-win-x64.zip |
Windows | x86-64 (Intel/AMD) |
desk-linux-x64.zip |
Linux | x86-64 (Intel/AMD) |
desk-linux-arm64.zip |
Linux | ARM64 (Raspberry Pi 4/5, AWS Graviton) |
desk-osx-x64.zip |
macOS | Intel |
desk-osx-arm64.zip |
macOS | Apple Silicon (M1/M2/M3/M4) |
Windows:
Linux:
macOS:
unzip desk-osx-arm64.zip -d desk # oppure desk-osx-x64.zip per Intel
chmod +x desk/desk
xattr -d com.apple.quarantine desk/desk # rimuovere la quarantena Gatekeeper
./desk/desk
L'app ascolta su http://localhost:5000 di default. Posiziona un file desk.yml nella stessa directory del binario per la configurazione.
Cambiare indirizzo o porta di ascolto
Usa il flag --urls o la variabile d'ambiente ASPNETCORE_URLS:
Due modalità di autenticazione
| Standalone | Multi-utente | |
|---|---|---|
| Quando | api_key impostata in desk.yml |
api_key assente |
| Autenticazione | Nessuna — tutte le pagine accessibili | Registrazione + login |
| API key | Condivisa, da configurazione | Per utente, nel profilo |
| Database | In-memory | SQLite (default) o PostgreSQL |
| Caso d'uso | Rete interna, VPN, singolo tenant | SaaS, multi-tenant |
Attenzione
In modalità standalone chiunque possa raggiungere l'host ha pieno accesso. Usare solo in reti fidate.
White-label e theming
Personalizza colori, logo e favicon direttamente in desk.yml:
desk:
branding:
app_name: La Mia App di Fatturazione
footer_text: "Powered by <a href=\"https://example.com\">La Mia Azienda</a>"
logo_url: https://example.com/logo-light.svg # navbar (sfondo scuro)
logo_dark_url: https://example.com/logo-dark.svg # pagine auth (sfondo chiaro)
favicon_url: https://example.com/favicon.png
primary_color: "#1A237E"
accent_color: "#E91E63"
Tutte le proprietà sono opzionali — se omesse, vengono usati i valori predefiniti Invoicetronic.
Per un controllo completo sul design system, è possibile montare un file custom/theme.css che sovrascrive qualsiasi variabile CSS:
/* custom/theme.css */
:root {
--brand-primary: #1A237E;
--brand-accent: #E91E63;
--brand-font-heading: "Poppins", sans-serif;
}
Recupero password (SMTP)
In modalità multi-utente, gli utenti possono reimpostare la password dimenticata tramite email. Per abilitare questa funzionalità, configura un server SMTP in desk.yml:
desk:
smtp:
host: smtp.example.com
port: 587 # 587 (StartTLS) | 465 (SSL)
username: user@example.com
password: secret
sender_email: noreply@example.com
sender_name: La Mia App
Tutte le proprietà tranne host e sender_email sono opzionali. Se la sezione smtp non è configurata, il link "Password dimenticata?" non viene mostrato nella pagina di login.
Non salvare segreti nei file di configurazione
Passa le credenziali SMTP tramite variabili d'ambiente:
Stack tecnologico
| Layer | Tecnologia |
|---|---|
| Backend | ASP.NET Core 10.0 + Razor Pages |
| Data grid | AG Grid Community (MIT) |
| UI | Design system CSS custom (no Bootstrap) |
| Auth | ASP.NET Core Identity |
| Database | SQLite (default) / PostgreSQL |
| Config | YAML (desk.yml) |
| Container | Docker multi-platform (amd64/arm64) |
Licenza
Apache License 2.0 — usa, modifica e redistribuisci liberamente, anche per scopi commerciali.
