Tutorial on Billing App with Next.js, Vercel and Back4app
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.
Prima di iniziare, assicurati di avere i seguenti:
- Accedi a Back4App e crea un nuovo progetto.
- Naviga nel Data Browser e crea le seguenti classi:
- idOggetto
- nomeUtente
- email
- Crea una classe chiamata Organizzazione.
- 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.
- Crea una classe chiamata Cliente.
- Aggiungi queste colonne:
- nome (String): Nome del cliente.
- email (String): Email del cliente.
- idOrganizzazione (Puntatore): Organizzazione a cui appartiene questo cliente.
- Crea una classe chiamata Fattura.
- 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.
- Crea una classe chiamata Pagamento.
- 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').
Inizia configurando il tuo progetto Next.js con TypeScript, Tailwind CSS e i componenti shadcn/ui.
Configura Tailwind aggiornando il tailwind.config.js e aggiungendo gli stili a globals.css.
In tailwind.config.js:
In styles/globals.css:
Installa le dipendenze necessarie per Parse, Clerk, Stripe e Resend.
In pages/_app.tsx, inizializza il Parse SDK con le tue credenziali Back4App:
Sostituisci 'YOUR_APP_ID' e 'YOUR_JAVASCRIPT_KEY' con le tue credenziali Back4App.
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.
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:
In pages/sign-up.tsx:
Gli utenti possono creare organizzazioni di cui sono proprietari. Crea una pagina pages/organizations/new.tsx per creare nuove organizzazioni.
Crea una pagina di gestione dei clienti pages/customers/new.tsx per aggiungere nuovi clienti.
Crea una pagina di creazione delle fatture pages/invoices/new.tsx per generare nuove fatture.
Crea una pagina pages/invoices/index.tsx per visualizzare tutte le fatture con opzioni di ordinamento e filtraggio.
Per elaborare i pagamenti, integra Stripe. In pages/invoices/[id].tsx, implementa la creazione del link di pagamento utilizzando Stripe Checkout.
Imposta Resend per inviare email di fattura ai clienti.
Per distribuire l'app su Vercel, installa il Vercel CLI e distribuisci.
Configura le variabili d'ambiente per Clerk, Stripe, Resend e Back4App nel dashboard di Vercel prima della distribuzione.
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.