Rol
Ejercicio de ingeniería
Arquitectura, testing, refactoring
Una app full-stack de facturación y gestión de clientes construida para explorar los desafíos técnicos que los tutoriales omiten: migración ORM, testing robusto, refactoring de arquitectura, accesibilidad y patrones modernos de React 19.
Rol
Ejercicio de ingeniería
Arquitectura, testing, refactoring
Tipo
Caso demo en vivo
App full-stack de facturas/clientes
Estado
En vivo, código disponible
App externa, código público
Stack
Next.js + Drizzle
React 19, TypeScript, Auth.js
Evidencia
75 tests, migración ORM
Server Actions, patrones React 19
Licencia
MIT
Proyecto open source de ejercicio
Mapa de rutas
La aplicación incluye los flujos esenciales de negocio, construidos con accesibilidad, tipado seguro y validación en cada límite.
Autenticación basada en credenciales usando Auth.js. Middleware en el edge protege el dashboard.
Ruta: /loginResumen con gráfico de ingresos, tarjetas resumen y últimas facturas extraídas con Drizzle ORM.
Ruta: /dashboardCRUD completo para facturas con búsqueda, paginación y validación de servidor con Zod.
Ruta: /dashboard/invoicesFlujo de gestión de clientes, reemplazando la vista de solo lectura del tutorial por un CRUD completo.
Ruta: /dashboard/customersEnfoque de Ingeniería
Más allá de la base del tutorial, este repositorio representa un trabajo independiente para resolver retos arquitectónicos, de testing y estructurales en apps web modernas.
# Tipos en tiempo de compilación
Expect> // Asegura que los tipos sincronicen con BD Reemplazo de SQL nativo por Drizzle ORM. Esquema y tipos son derivados y verificados en compilación.
75 tests validando interacción de formularios, envíos asíncronos, estados de carga y accesibilidad.
Uso de useActionState, useFormStatus y Server Actions para mutaciones y manejo de estado.
Más de 25 componentes reutilizables y 3 custom hooks consumidos por facturas y clientes.
Sistema flash basado en cookies que asegura exactamente un toast por mutación.
Regiones live de ARIA, diálogos navegables por teclado, etiquetas para lectores de pantalla.
Arquitectura
La obtención de datos se realiza directamente en el servidor vía Drizzle. Las mutaciones fluyen exclusivamente a través de Server Actions validados por Zod, usando características de React 19 para gestionar estados de carga y ciclo de vida de formularios sin librerías de terceros.
La autenticación aprovecha el middleware de Next.js en el edge para proteger rutas, levantando el entorno Node.js únicamente al verificar credenciales con la base de datos.
Navegador
-> Middleware (Auth Edge)
-> Server Components (Lectura)
-> Drizzle ORM (PostgreSQL)
Envío de Formulario
-> Server Actions (Mutación)
-> Validación Zod
-> Escritura BD + Flash Cookies
-> Redirección a Vista Evidencia del código
El repositorio proporciona ejemplos concretos de cómo probar UIs asíncronas, implementar notificaciones flash basadas en cookies y garantizar tipado estricto en toda la pila.
Arquitectura
Fuente
app/lib/actions/*
export async function createInvoice(
prevState: State,
formData: FormData
) {
// Validar con Zod antes de acceder a la BD
// Escribir en BD vía Drizzle
// Establecer cookies flash para notificar
// Redirigir al tener éxito
} Lectura
Muestra un patrón de mutación resiliente que reemplaza fetch manuales por Server Actions de React 19.
Testing
Fuente
tests/components/*
// Ejecución de suite de tests
pnpm test
pnpm test:coverage
75 tests a través de 10 archivos
Cobertura: ~85% en las métricas Lectura
Demuestra habilidad para probar UI interactiva compleja, incluyendo toasts, diálogos y estados de carga.
Seguridad
Fuente
auth.config.ts, auth.ts
auth.config.ts (Edge):
// Protege cada petición
// Redirige no autenticados
auth.ts (Node):
// Valida credenciales
// Consulta la BD con bcrypt Lectura
El middleware edge asegura que la BD se mantenga fuera del ciclo de petición para usuarios sin autenticar.
Límites
AcmeDashboard existe para demostrar prácticas de ingeniería, estrategias de testing y arquitectura moderna. No está diseñado como una aplicación de producción.
Estado del demo
Demo público en vivo con credenciales demo. La app está pensada para inspección, walkthroughs, enseñanza y revisión de portafolio.
No apto para producción
Esta es una demostración técnica y no debe ser usada para procesar facturas reales ni manejar datos empresariales sensibles.
Siempre estoy abierto a trabajo interesante. Saluda.
Estudio independiente. Open source.