Plantillas de NextJS

Tutorial de aplicación de facturación con Next.js, Vercel y Back4app

26min

En este tutorial, construiremos una completa Invoicing App utilizando Next.js como el frontend, Back4App como el backend, y servicios adicionales como Clerk para la autenticación, Stripe para los pagos, y Resend para las notificaciones por correo electrónico. Esta guía explicará cómo configurar la autenticación, la gestión de facturas, el procesamiento de pagos y el despliegue en Vercel.

1. Requisitos previos

Antes de comenzar, asegúrate de tener lo siguiente:

2. Configurando el Backend (Back4App)

2.1 Crear un Nuevo Proyecto en Back4App

  1. Inicia sesión en Back4App y crea un nuevo proyecto.
  2. Navega a la Data Browser y crea las siguientes clases:

2.2 Modelos de Datos (Clases)

2.2.1 Usuario (Manejado automáticamente por Clerk)

  • objectId
  • nombre de usuario
  • correo electrónico

2.2.2 Organización

  1. Crea una clase llamada Organización.
  2. Agrega las siguientes columnas:
    • nombre (String): El nombre de la organización.
    • ownerId (Pointer<_User>): Apunta a la Usuario clase (creada automáticamente por Clerk).
    • miembros (Array<Pointer<_User>>): Un array de usuarios que pertenecen a esta organización.

2.2.3 Cliente

  1. Crea una clase llamada Cliente.
  2. Agrega estas columnas:
    • nombre (String): Nombre del cliente.
    • correo electrónico (String): Correo electrónico del cliente.
    • organizationId (Pointer): Organización a la que pertenece este cliente.

2.2.4 Factura

  1. Crea una clase llamada Factura.
  2. Agrega estas columnas:
    • numeroFactura (String): Identificador único de la factura.
    • idCliente (Pointer): Enlaza al cliente.
    • idOrganizacion (Pointer): Enlaza a la organización.
    • monto (Number): Monto total de la factura.
    • estado (String): Las opciones incluyen 'borrador', 'enviado', 'pagado' y 'vencido'.
    • fechaVencimiento (Date): La fecha de vencimiento de la factura.
    • artículos (Array): La lista de artículos en la factura.

2.2.5 Pago

  1. Crea una clase llamada Pago.
  2. Agrega estas columnas:
    • idFactura (Pointer): Enlaza a la factura relacionada.
    • monto (Number): Monto del pago.
    • idSesionStripe (String): El ID de la sesión de Stripe.
    • estado (String): Estado del pago (por ejemplo, 'pendiente', 'exitoso', 'fallido').

3. Configuración del Frontend (Next.js)

3.1 Crear un Proyecto Next.js

Comienza configurando tu proyecto Next.js con TypeScript, Tailwind CSS y componentes de shadcn/ui.

Bash


3.2 Configurar Tailwind CSS

Configura Tailwind actualizando el tailwind.config.js y añadiendo los estilos a globals.css.

En tailwind.config.js:

JS


En styles/globals.css:

CSS


3.3 Instalar Parse SDK y Servicios Adicionales

Instala las dependencias necesarias para Parse, Clerk, Stripe y Resend.

Bash


3.4 Inicializar Parse SDK en Next.js

En pages/_app.tsx, inicializa el Parse SDK con tus credenciales de Back4App:

TypeScript


Reemplaza 'YOUR_APP_ID' y 'YOUR_JAVASCRIPT_KEY' con tus credenciales de Back4App.

4. Implementación de la Autenticación de Usuarios

4.1 Integración de Clerk para Autenticación

Configura Clerk para la autenticación. Ve al panel de control de Clerk, crea una aplicación y obtén tus claves API. Actualiza tu .env.local archivo con las claves de Clerk.

Bash


Ahora crea pages/sign-in.tsx y pages/sign-up.tsx para la funcionalidad de inicio de sesión y registro utilizando los componentes de Clerk.

En pages/sign-in.tsx:

Text


En pages/sign-up.tsx:

Text


5. Organización y Gestión de Clientes

5.1 Crear Organizaciones

Los usuarios pueden crear organizaciones que poseen. Crea una página pages/organizations/new.tsx para crear nuevas organizaciones.

Text


5.2 Gestionar Clientes

Crea una página de gestión de clientes pages/customers/new.tsx para agregar nuevos clientes.

Text


6. Gestión de Facturas

6.1 Crear Facturas

Crea una página de creación de facturas pages/invoices/new.tsx para generar nuevas facturas.

Text


6.2 Visualización de Facturas

Crea una página pages/invoices/index.tsx para ver todas las facturas con opciones de ordenamiento y filtrado.

Text


7. Procesamiento de Pagos (Integración de Stripe)

7.1 Configurar Stripe Checkout

Para procesar pagos, integra Stripe. En pages/invoices/[id].tsx, implementa la creación del enlace de pago utilizando Stripe Checkout.

Text


8. Notificaciones por Correo Electrónico (Integración de Reenvío)

8.1 Enviando correos electrónicos de facturas

Configura Resend para enviar correos electrónicos de facturas a los clientes.

Text


9. Despliegue en Vercel

Para desplegar la aplicación en Vercel, instala la CLI de Vercel y despliega.

Bash


Configura las variables de entorno para Clerk, Stripe, Resend y Back4App en el panel de Vercel antes del despliegue.

10. Conclusión

En este tutorial, construimos una completa Aplicación de Facturación con Next.js, integrada con Back4App para el backend, Clerk para la autenticación, Stripe para los pagos, y Resend para las notificaciones por correo electrónico. Cubrimos la gestión de usuarios y organizaciones, la creación de facturas, el procesamiento de pagos y el despliegue.