NextJS Templates

Tutorial on Billing App with Next.js, Vercel and Back4app

26min

In questo tutorial, costruiremo un completo Invoicing App utilizzando Next.js come frontend, Back4App come backend, e servizi aggiuntivi come Clerk per l'autenticazione, Stripe per i pagamenti, e Resend per le notifiche email. Questa guida passerà attraverso la configurazione dell'autenticazione, la gestione delle fatture, l'elaborazione dei pagamenti e il deployment su Vercel.

1. Requisiti

Prima di iniziare, assicurati di avere i seguenti:

2. Configurazione del Backend (Back4App)

2.1 Crea un Nuovo Progetto in Back4App

  1. Accedi a Back4App e crea un nuovo progetto.
  2. Naviga nel Data Browser e crea le seguenti classi:

2.2 Modelli di Dati (Classi)

2.2.1 Utente (Gestito automaticamente da Clerk)

  • idOggetto
  • nomeUtente
  • email

2.2.2 Organizzazione

  1. Crea una classe chiamata Organizzazione.
  2. Aggiungi le seguenti colonne:
    • nome (String): Il nome dell'organizzazione.
    • idProprietario (Puntatore<_User>): Punta alla classe Utente (creata automaticamente da Clerk).
    • membri (Array<Puntatore<_User>>): Un array di utenti che appartengono a questa organizzazione.

2.2.3 Cliente

  1. Crea una classe chiamata Cliente.
  2. Aggiungi queste colonne:
    • nome (String): Nome del cliente.
    • email (String): Email del cliente.
    • idOrganizzazione (Puntatore): Organizzazione a cui appartiene questo cliente.

2.2.4 Fattura

  1. Crea una classe chiamata Fattura.
  2. Aggiungi queste colonne:
    • numeroFattura (String): Identificatore unico della fattura.
    • idCliente (Puntatore): Collega al cliente.
    • idOrganizzazione (Puntatore): Collega all'organizzazione.
    • importo (Numero): Importo totale per la fattura.
    • stato (String): Le opzioni includono 'bozza', 'inviata', 'pagata' e 'scaduta'.
    • dataScadenza (Data): La data di scadenza della fattura.
    • articoli (Array): L'elenco degli articoli nella fattura.

2.2.5 Pagamento

  1. Crea una classe chiamata Pagamento.
  2. Aggiungi queste colonne:
    • idFattura (Puntatore): Collega alla fattura correlata.
    • importo (Numero): Importo del pagamento.
    • idSessioneStripe (String): L'ID della sessione Stripe.
    • stato (String): Stato del pagamento (ad es., 'in attesa', 'riuscito', 'fallito').

3. Configurazione del Frontend (Next.js)

3.1 Crea un Progetto Next.js

Inizia configurando il tuo progetto Next.js con TypeScript, Tailwind CSS e i componenti shadcn/ui.

Bash


3.2 Configura Tailwind CSS

Configura Tailwind aggiornando il tailwind.config.js e aggiungendo gli stili a globals.css.

In tailwind.config.js:

JS


In styles/globals.css:

CSS


3.3 Installa Parse SDK e Servizi Aggiuntivi

Installa le dipendenze necessarie per Parse, Clerk, Stripe e Resend.

Bash


3.4 Inizializza Parse SDK in Next.js

In pages/_app.tsx, inizializza il Parse SDK con le tue credenziali Back4App:

TypeScript


Sostituisci 'YOUR_APP_ID' e 'YOUR_JAVASCRIPT_KEY' con le tue credenziali Back4App.

4. Implementazione dell'Autenticazione Utente

4.1 Integrazione di Clerk per l'autenticazione

Imposta Clerk per l'autenticazione. Vai alla dashboard di Clerk, crea un'applicazione e prendi le tue chiavi API. Aggiorna il tuo .env.local file con le chiavi di Clerk.

Bash


Ora crea pages/sign-in.tsx e pages/sign-up.tsx per la funzionalità di accesso e registrazione utilizzando i componenti di Clerk.

In pages/sign-in.tsx:

Text


In pages/sign-up.tsx:

Text


5. Gestione dell'organizzazione e dei clienti

5.1 Crea Organizzazioni

Gli utenti possono creare organizzazioni di cui sono proprietari. Crea una pagina pages/organizations/new.tsx per creare nuove organizzazioni.

Text


5.2 Gestire i Clienti

Crea una pagina di gestione dei clienti pages/customers/new.tsx per aggiungere nuovi clienti.

Text


6. Gestione Fatture

6.1 Crea Fatture

Crea una pagina di creazione delle fatture pages/invoices/new.tsx per generare nuove fatture.

Text


6.2 Visualizzazione Fatture

Crea una pagina pages/invoices/index.tsx per visualizzare tutte le fatture con opzioni di ordinamento e filtraggio.

Text


7. Elaborazione dei Pagamenti (Integrazione Stripe)

7.1 Configurare Stripe Checkout

Per elaborare i pagamenti, integra Stripe. In pages/invoices/[id].tsx, implementa la creazione del link di pagamento utilizzando Stripe Checkout.

Text


8. Notifiche Email (Integrazione di Rinvio)

8.1 Inviare Email di Fattura

Imposta Resend per inviare email di fattura ai clienti.

Text


9. Distribuzione su Vercel

Per distribuire l'app su Vercel, installa il Vercel CLI e distribuisci.

Bash


Configura le variabili d'ambiente per Clerk, Stripe, Resend e Back4App nel dashboard di Vercel prima della distribuzione.

10. Conclusione

In questo tutorial, abbiamo costruito un completo Invoicing App con Next.js, integrato Back4App per il backend, Clerk per l'autenticazione, Stripe per i pagamenti, e Resend per le notifiche email. Abbiamo trattato la gestione degli utenti e delle organizzazioni, la creazione di fatture, l'elaborazione dei pagamenti e la distribuzione.