Vai al contenuto

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

Invoicetronic Desk screenshot

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
# desk.yml
desk:
  api_key: YOUR_API_KEY

Non salvare segreti nei file di configurazione

Passa la API key tramite variabile d'ambiente invece di salvarla in desk.yml:

# docker-compose.yml
services:
  desk:
    image: invoicetronic/desk
    ports:
      - "8080:8080"
    environment:
      - Desk__api_key=YOUR_API_KEY
docker compose up -d

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
docker compose up -d

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:

# Estrarre l'archivio, creare desk.yml, poi:
.\desk.exe

Linux:

unzip desk-linux-x64.zip -d desk
chmod +x desk/desk
./desk/desk

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:

./desk --urls http://0.0.0.0:8080
# oppure
export ASPNETCORE_URLS=http://0.0.0.0:8080

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;
}
# docker-compose.yml
volumes:
  - ./my-theme.css:/app/wwwroot/custom/theme.css

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:

# docker-compose.yml
environment:
  - Desk__smtp__host=smtp.example.com
  - Desk__smtp__port=587
  - Desk__smtp__username=user@example.com
  - Desk__smtp__password=secret
  - Desk__smtp__sender_email=noreply@example.com

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.