Una aplicación web moderna desarrollada con Next.js y Tailwind CSS para registrar pagos y visualizar ventas por empresa, conectada a Google Sheets como base de datos.
- Registro de Pagos: Formulario intuitivo para registrar pagos de clientes
- Dashboard de Ventas: Visualización de ventas agrupadas por empresa
- Arquitectura Híbrida:
- Empresas desde Google Sheets (lectura)
- Ventas en Supabase (escritura/lectura)
- Diseño Responsive: Optimizado para todos los dispositivos
- UI Moderna: Interfaz elegante con Tailwind CSS y Lucide React
- Node.js 18.0 o superior
- npm o yarn
- Cuenta de Supabase (para base de datos)
- Acceso a la hoja de Google Sheets (para empresas)
-
Clona el repositorio:
git clone <tu-repo> cd robles-payment-app
-
Instala las dependencias:
npm install
-
🔑 CONFIGURACIÓN CRÍTICA - Variables de Entorno:
⚠️ IMPORTANTE: El archivo.env.localha sido creado pero necesitas configurar tus credenciales reales de Supabase.Abre el archivo
.env.localy sigue estos pasos:a) Crear proyecto en Supabase:
- Ir a https://supabase.com
- Crear una cuenta gratuita
- Crear un nuevo proyecto
- Esperar a que se configure (2-3 minutos)
b) Obtener credenciales:
- En el dashboard de tu proyecto, ir a Settings > API
- Copiar "Project URL"
- Copiar "anon public" key
c) Actualizar .env.local:
NEXT_PUBLIC_SUPABASE_URL=https://tu-proyecto.supabase.co NEXT_PUBLIC_SUPABASE_ANON_KEY=tu_anon_key_aqui
-
🗄️ Configurar Base de Datos:
Ver
SUPABASE_SETUP.mdpara instrucciones completas -
Ejecuta el proyecto:
npm run dev
-
✅ Verificar configuración:
- Abrir: http://localhost:3000/api/test-supabase
- Debe mostrar "test_completed" en lugar de errores
Crear tabla en Supabase:
create table public."Ventas" (
id bigint generated by default as identity not null,
created_at timestamp with time zone not null default now(),
nombre_empresa character varying null,
nombre_cliente character varying null,
importe numeric null,
constraint Ventas_pkey primary key (id)
);Ver SUPABASE_SETUP.md para instrucciones detalladas.
Este proyecto utiliza una arquitectura híbrida:
- Hoja Empresas: Lista de empresas con campo de vigencia
- Solo empresas con vigencia "X" aparecen en el formulario de pagos
- Tabla Ventas: Registro de todas las ventas realizadas
- Base de datos escalable con Row Level Security
- Mejor rendimiento para operaciones de escritura
src/
├── app/
│ ├── api/
│ │ ├── empresas/route.ts # API para empresas
│ │ └── pagos/route.ts # API para pagos
│ ├── ventas/
│ │ └── page.tsx # Página de ventas
│ └── page.tsx # Página principal
├── components/
│ ├── FormularioPago.tsx # Formulario de registro
│ ├── Navigation.tsx # Barra de navegación
│ └── VentasPorEmpresa.tsx # Dashboard de ventas
├── lib/
│ └── googleSheets.ts # Servicio de Google Sheets
└── types/
└── index.ts # Definiciones de tipos
- Formulario con validación de campos
- Selección de empresa desde Google Sheets
- Métodos de pago: Tarjeta y Efectivo
- Fecha automática con opción de modificar
- Guardado directo en Google Sheets
- Resumen general con totales
- Ventas agrupadas por empresa
- Filtrado por empresa específica
- Tabla detallada de transacciones
- Indicadores visuales y estadísticas
Obtiene la lista de empresas desde Google Sheets
Obtiene todos los pagos registrados
Registra un nuevo pago
{
"empresaId": 1,
"nombreCliente": "Juan",
"apellidoCliente": "Pérez",
"importe": 1500.00,
"metodoPago": "tarjeta",
"fechaPago": "2025-11-04",
"empresaNombre": "Empresa ABC"
}- Next.js 14: Framework React con App Router
- TypeScript: Tipado estático
- Tailwind CSS: Framework de CSS utilitario
- Lucide React: Iconos modernos
- Supabase: Base de datos PostgreSQL en la nube (ventas)
- Google Sheets: Fuente de datos para empresas
La aplicación está optimizada para:
- 📱 Móviles (320px+)
- 📊 Tablets (768px+)
- 💻 Desktop (1024px+)
Para desplegar en producción:
- Build del proyecto:
npm run build- Despliega en Vercel, Netlify o tu plataforma preferida
Para soporte técnico o preguntas sobre la implementación, contacta al equipo de desarrollo.
Banco Robles - Sistema de Pagos © 2025