Horux360 SaaS - Documento de Diseño
Fecha: 2026-01-22
Versión: 1.0
Estado: Aprobado
1. Visión General
Horux360 es una plataforma SaaS de análisis financiero y gestión fiscal para empresas mexicanas, con enfoque en:
- Experiencia visual superior - 4 temas con diferentes layouts
- Control fiscal completo - IVA, ISR, CFDI en todos los planes
- Inteligencia financiera - Dashboards, proyecciones, alertas proactivas
- Multi-tenant - Schema por empresa en PostgreSQL
Propósito
Transformar datos financieros en decisiones estratégicas mediante análisis automatizado y reportes en tiempo real para empresas mexicanas.
Funcionalidades Core
- Dashboard financiero con KPIs (ingresos, egresos, utilidad, ROI)
- Gestión de CFDI (facturas electrónicas del SAT)
- Control de IVA (trasladado vs acreditable, balance mensual)
- Control de ISR
- Conciliación bancaria automatizada
- Reportes y alertas en tiempo real
- Calendario fiscal con recordatorios
- Proyecciones financieras (forecasting)
2. Stack Tecnológico
| Capa |
Tecnología |
| Frontend |
Next.js 14 + TypeScript + Tailwind CSS |
| Backend |
Node.js + Express + TypeScript |
| Base de datos |
PostgreSQL (schema por tenant) |
| Autenticación |
JWT personalizado |
| ORM |
Prisma |
| Gráficos |
Recharts |
| Exportación |
xlsx + @react-pdf/renderer |
| Estado |
Zustand |
| Fetching |
TanStack Query |
| Forms |
React Hook Form + Zod |
| Tablas |
TanStack Table |
| UI Base |
Radix UI |
3. Modelo de Negocio - Planes
| Plan |
CFDI/mes |
Usuarios |
Funcionalidades |
| Starter |
100 |
1 |
Dashboard, IVA/ISR, CFDI básico |
| Business |
500 |
3 |
+ Reportes, Alertas, Calendario fiscal |
| Professional |
2,000 |
10 |
+ Conciliación, Forecasting, XML SAT |
| Enterprise |
Ilimitado |
Ilimitado |
+ API, Multi-empresa, Soporte prioritario |
Nota: Control de IVA e ISR incluido en todos los planes.
4. Arquitectura del Sistema
4.1 Estructura de Carpetas
4.2 Flujo Multi-Tenant
5. Modelo de Datos
5.1 Schema Público (compartido)
5.2 Schema por Tenant (tenant_xxx)
6. Módulos y Funcionalidades
6.1 Dashboard Principal
| Componente |
Descripción |
| KPIs principales |
Ingresos, Egresos, Utilidad, IVA a favor/por pagar |
| Selector de período |
Semana, Mes, Trimestre, Año, Personalizado |
| Gráfico ingresos vs egresos |
Barras comparativas por mes |
| Métricas de rentabilidad |
Margen, ROI, Crecimiento % |
| Alertas activas |
Widget con alertas pendientes |
| Resumen fiscal |
Estado de declaraciones del mes |
6.2 Gestión de CFDI
| Funcionalidad |
Descripción |
| Lista de CFDIs |
Tabla con filtros (tipo, estado, fecha, RFC) |
| Detalle de factura |
Vista completa con conceptos e impuestos |
| Importar XML |
Carga manual de archivos XML |
| Descarga SAT |
Conexión automática para descargar CFDIs (Professional+) |
| Exportar |
Excel/PDF con filtros aplicados |
| Búsqueda |
Por UUID, RFC, concepto, monto |
6.3 Control de Impuestos (IVA/ISR)
| Funcionalidad |
Descripción |
| Balance IVA |
Trasladado vs Acreditable, resultado mensual |
| Histórico IVA |
Tabla mensual con acumulados |
| Cálculo ISR |
Ingresos, deducciones, base gravable, ISR a pagar |
| Retenciones |
IVA e ISR retenido por terceros |
| Prellenado DIOT |
Generación de archivo para declaración |
6.4 Reportes
| Reporte |
Descripción |
| Estado de resultados |
Ingresos - Egresos = Utilidad |
| Flujo de efectivo |
Entradas y salidas por período |
| Comparativo períodos |
Año vs año, mes vs mes |
| Concentrado por RFC |
Totales por cliente/proveedor |
| Proyección financiera |
Forecast basado en histórico (Professional+) |
| Exportación |
Excel y PDF para todos los reportes |
6.5 Conciliación Bancaria (Professional+)
| Funcionalidad |
Descripción |
| Importar estados |
Carga de archivos bancarios (CSV, OFX) |
| Match automático |
Asociar movimientos con CFDIs |
| Pendientes |
Lista de movimientos sin conciliar |
| Errores |
Discrepancias detectadas |
| Métricas |
Tasa de éxito, pendientes, conciliados |
6.6 Calendario Fiscal (Business+)
| Funcionalidad |
Descripción |
| Vista calendario |
Mensual con obligaciones marcadas |
| Alertas automáticas |
Recordatorios 7, 3 y 1 día antes |
| Obligaciones SAT |
Precargadas según régimen fiscal |
| Personalización |
Agregar eventos propios |
| Marcar completado |
Tracking de cumplimiento |
6.7 Gestión de Usuarios (Business+)
| Funcionalidad |
Descripción |
| Roles |
Admin (todo), Contador (operación), Visor (solo lectura) |
| Invitar usuarios |
Por email con rol asignado |
| Permisos por módulo |
Configuración granular |
| Auditoría |
Log de acciones por usuario |
7. Sistema de Temas
7.1 Los 4 Temas
| Tema |
Paleta |
Layout |
Ideal para |
| Light |
Blancos, grises suaves, acentos azules |
Sidebar fija izquierda, contenido centrado con máximo 1200px |
Uso diario prolongado |
| Vibrant |
Colores vivos (púrpura, cyan, coral) |
Sidebar colapsable, cards grandes con bordes redondeados |
Usuarios que prefieren color |
| Corporate |
Azul marino, grises oscuros, dorado |
Multi-panel denso, tablas compactas, sin espacios desperdiciados |
Contadores, mucha data |
| Dark |
Fondo #0a0a0a, acentos verdes/cyan |
Sidebar minimalista, widgets flotantes con glassmorphism |
Trabajo nocturno |
7.2 Estructura de Layouts
7.3 Implementación Técnica
// themes/index.ts
export const themes = {
light: {
name: 'Light',
layout: 'sidebar-fixed',
colors: {
background: '#ffffff',
surface: '#f8fafc',
primary: '#3b82f6',
text: '#1e293b',
border: '#e2e8f0',
success: '#22c55e',
danger: '#ef4444',
},
radius: '8px',
sidebar: { width: '240px', collapsible: false },
},
vibrant: {
name: 'Vibrant',
layout: 'sidebar-collapsible',
colors: {
background: '#faf5ff',
surface: '#ffffff',
primary: '#8b5cf6',
secondary: '#06b6d4',
accent: '#f97316',
text: '#1e1b4b',
},
radius: '16px',
sidebar: { width: '280px', collapsible: true },
},
corporate: {
name: 'Corporate',
layout: 'multi-panel',
colors: {
background: '#f1f5f9',
surface: '#ffffff',
primary: '#1e3a5f',
accent: '#d4a853',
text: '#0f172a',
},
radius: '4px',
density: 'compact',
sidebar: { width: '200px', collapsible: false },
},
dark: {
name: 'Dark',
layout: 'minimal-floating',
colors: {
background: '#0a0a0a',
surface: 'rgba(255,255,255,0.05)',
primary: '#22d3ee',
accent: '#4ade80',
text: '#f1f5f9',
glow: '0 0 20px rgba(34,211,238,0.3)',
},
radius: '12px',
blur: '10px',
sidebar: { width: '64px', collapsible: false, iconsOnly: true },
},
}
8. API y Endpoints
8.1 Autenticación
| Método |
Endpoint |
Descripción |
| POST |
/api/auth/register |
Registrar empresa + usuario admin |
| POST |
/api/auth/login |
Iniciar sesión, retorna JWT |
| POST |
/api/auth/refresh |
Renovar token |
| POST |
/api/auth/forgot-password |
Solicitar reset de contraseña |
| POST |
/api/auth/reset-password |
Cambiar contraseña con token |
| GET |
/api/auth/me |
Obtener usuario actual |
8.2 Tenants/Empresas
| Método |
Endpoint |
Descripción |
| GET |
/api/tenant |
Obtener datos de la empresa actual |
| PUT |
/api/tenant |
Actualizar datos de la empresa |
| GET |
/api/tenant/usage |
Uso actual (CFDIs, usuarios) vs límites |
| PUT |
/api/tenant/plan |
Cambiar plan |
8.3 Usuarios
| Método |
Endpoint |
Descripción |
| GET |
/api/users |
Listar usuarios del tenant |
| POST |
/api/users |
Invitar nuevo usuario |
| GET |
/api/users/:id |
Obtener usuario |
| PUT |
/api/users/:id |
Actualizar usuario/rol |
| DELETE |
/api/users/:id |
Desactivar usuario |
8.4 CFDIs
| Método |
Endpoint |
Descripción |
| GET |
/api/cfdi |
Listar CFDIs con filtros y paginación |
| GET |
/api/cfdi/:id |
Detalle de CFDI con conceptos |
| POST |
/api/cfdi/import |
Importar XML (uno o varios) |
| POST |
/api/cfdi/sync-sat |
Descargar del SAT (Professional+) |
| GET |
/api/cfdi/:id/xml |
Descargar XML original |
| GET |
/api/cfdi/:id/pdf |
Generar/descargar PDF |
| GET |
/api/cfdi/export |
Exportar listado a Excel |
Query params:
8.5 Impuestos
| Método |
Endpoint |
Descripción |
| GET |
/api/impuestos/iva |
Resumen IVA del período |
| GET |
/api/impuestos/iva/mensual |
Desglose mensual IVA |
| GET |
/api/impuestos/isr |
Resumen ISR del período |
| GET |
/api/impuestos/isr/mensual |
Desglose mensual ISR |
| GET |
/api/impuestos/retenciones |
Retenciones recibidas |
| POST |
/api/impuestos/iva/:id/declarar |
Marcar mes como declarado |
| GET |
/api/impuestos/diot |
Generar archivo DIOT |
8.6 Dashboard
| Método |
Endpoint |
Descripción |
| GET |
/api/dashboard/kpis |
KPIs principales del período |
| GET |
/api/dashboard/ingresos-egresos |
Datos para gráfico comparativo |
| GET |
/api/dashboard/rentabilidad |
Métricas de rentabilidad |
| GET |
/api/dashboard/resumen-fiscal |
Estado de obligaciones |
8.7 Reportes
| Método |
Endpoint |
Descripción |
| GET |
/api/reportes/estado-resultados |
Estado de resultados |
| GET |
/api/reportes/flujo-efectivo |
Flujo de efectivo |
| GET |
/api/reportes/comparativo |
Comparativa entre períodos |
| GET |
/api/reportes/por-rfc |
Concentrado por cliente/proveedor |
| GET |
/api/reportes/proyeccion |
Forecast financiero (Professional+) |
| GET |
/api/reportes/:tipo/export |
Exportar a Excel o PDF |
8.8 Conciliación Bancaria
| Método |
Endpoint |
Descripción |
| GET |
/api/conciliacion |
Estadísticas de conciliación |
| GET |
/api/conciliacion/movimientos |
Listar movimientos bancarios |
| POST |
/api/conciliacion/import |
Importar estado de cuenta |
| POST |
/api/conciliacion/match |
Conciliar movimiento con CFDI |
| PUT |
/api/conciliacion/:id |
Actualizar movimiento |
| GET |
/api/conciliacion/pendientes |
Movimientos sin conciliar |
8.9 Calendario Fiscal
| Método |
Endpoint |
Descripción |
| GET |
/api/calendario |
Obligaciones del mes/año |
| POST |
/api/calendario |
Crear obligación personalizada |
| PUT |
/api/calendario/:id |
Actualizar/marcar completado |
| DELETE |
/api/calendario/:id |
Eliminar obligación propia |
| GET |
/api/calendario/proximas |
Próximas obligaciones (alertas) |
8.10 Alertas
| Método |
Endpoint |
Descripción |
| GET |
/api/alertas |
Listar alertas activas |
| PUT |
/api/alertas/:id/leer |
Marcar como leída |
| PUT |
/api/alertas/:id/resolver |
Marcar como resuelta |
| GET |
/api/alertas/count |
Contador para badge |
8.11 Configuración
| Método |
Endpoint |
Descripción |
| GET |
/api/config/theme |
Obtener tema actual |
| PUT |
/api/config/theme |
Cambiar tema |
| GET |
/api/config/preferencias |
Preferencias del usuario |
| PUT |
/api/config/preferencias |
Actualizar preferencias |
9. Flujo de Pantallas
9.1 Mapa de Navegación
10. Roadmap de Implementación
Fase 1: Fundación (Core)
Fase 2: Módulos Core
Fase 3: Funcionalidades Avanzadas
Fase 4: Premium Features
Fase 5: Producción
11. Datos Demo (Seed)
12. Dependencias Principales
| Categoría |
Librería |
Propósito |
| UI Components |
Radix UI |
Componentes accesibles |
| Estilos |
Tailwind CSS + clsx |
Utilidades CSS |
| Gráficos |
Recharts |
Visualizaciones |
| Tablas |
TanStack Table |
Tablas avanzadas |
| Forms |
React Hook Form + Zod |
Formularios + validación |
| Estado |
Zustand |
Estado global |
| Fetching |
TanStack Query |
Cache y fetching |
| Fechas |
date-fns |
Manipulación fechas |
| Excel |
xlsx (SheetJS) |
Exportación Excel |
| PDF |
@react-pdf/renderer |
Generación PDF |
| XML Parser |
fast-xml-parser |
Parsear CFDI |
| ORM |
Prisma |
Base de datos |
| Auth |
jsonwebtoken + bcrypt |
JWT + hashing |
13. Análisis de Competencia
Principales Competidores en México
| Plataforma |
Enfoque |
Precio/mes |
Fortaleza |
| Siigo Aspel |
ERP completo |
$291-$354 |
Líder tradicional |
| BIND ERP |
ERP PyMEs |
$890-$3,590 |
Todo integrado |
| CONTPAQi |
Contabilidad |
$890+ |
Estándar en despachos |
| Alegra |
Facturación |
$499+ |
Fácil de usar |
| Gigstack |
Automatización fiscal |
Variable |
Integración Stripe |
| Facturama |
Facturación CFDI |
Variable |
API robusta |
Oportunidades de Diferenciación
- UX/Diseño - La mayoría tienen interfaces anticuadas
- Dashboards de análisis - Pocos ofrecen visualización moderna
- Alertas proactivas - Calendarios fiscales inteligentes son raros
- Forecasting - Proyecciones financieras casi inexistentes
- Temas personalizables - Nadie ofrece esto
- Precios accesibles - Competidores premium son caros
14. Consideraciones de Seguridad
- Autenticación JWT con refresh tokens
- Passwords hasheados con bcrypt (cost factor 12)
- Aislamiento de datos por schema de PostgreSQL
- Rate limiting en endpoints de auth
- Validación de inputs con Zod
- Sanitización de XML importados
- HTTPS obligatorio
- Headers de seguridad (Helmet.js)
15. Servicios Eliminados
Los siguientes servicios del backend anterior NO se incluirán:
- ❌ Clerk (autenticación) - Reemplazado por JWT propio
- ❌ OpenPay (pagos) - Se implementará después si es necesario
- ❌ Syntage - En proceso de retiro
Documento generado el 2026-01-22