← Todos los proyectos

En producción 2025 — Presente · Líder técnico

Firenow Solutions Platform

De información repartida entre hojas de cálculo, tickets y correos, a una sola plataforma donde la operación se ve completa.

20+módulos de dominio
30+features en frontend
4capas de arquitectura

El problema

Firenow es una empresa de servicios de TI, y su información vivía en pedazos: los datos de clientes en un lado, los servicios contratados en otro, los tickets en GLPI y las licencias con sus vencimientos en hojas de cálculo. Responder algo tan simple como «a este cliente qué le vendimos y qué le vence este mes» era un trabajo manual de varias personas.

Lo que construí

Diseñé y construí una plataforma modular tipo ERP/CRM con mesa de servicio: clientes, sucursales, usuarios internos y de cliente, servicios, productos, licencias, entidades fiscales, contenido público y auditoría. El backend sigue Clean Architecture en cuatro capas, de modo que la lógica de negocio no conoce el framework ni la base de datos y se puede probar sola.

Qué cambió

Hoy está en producción, con alrededor de veinte módulos de dominio y treinta funcionalidades en frontend. Agregar un módulo nuevo no obliga a tocar los existentes, y cada cambio pasa por integración continua con linter, verificación de tipos y pruebas antes de poder integrarse.

La aplicación

Cómo se ve en producción

Página principal de Firenow Solutions en producción
Sitio público en producción — firenow.com
Sección de servicios del sitio de Firenow Solutions
Catálogo de servicios servido desde la plataforma

Decisiones técnicas

Por qué está construido así

  • Clean Architecture real: dominio, aplicación, infraestructura e interfaces en capas separadas, con repositorios como interfaces e implementaciones inyectadas.
  • Autenticación con tokens de acceso y de refresco firmados con secretos distintos, para que comprometer uno no comprometa el otro.
  • Sistema de permisos donde el catálogo vive en el código y el panel solo asigna: un permiso que el backend no sabe verificar no debería poder existir.
  • Auditoría por middleware para trazabilidad de acciones sobre datos de clientes.
  • Limitador de peticiones propio con Redis (contador con expiración por IP y ámbito) que responde 429 indicando cuándo reintentar.
  • Integración con GLPI mediante un cliente HTTP con token cacheado y control de expiración, escondido detrás de un puerto para poder sustituir la herramienta sin tocar el resto.
  • Frontend en Next.js con App Router, rutas separadas por área y código organizado por funcionalidad; estado de servidor y estado de cliente deliberadamente separados.
  • Despliegue con Docker Compose (con healthchecks y arranque ordenado), Nginx como proxy inverso y CI en GitHub Actions.
Next.jsReactTypeScriptFastAPIPostgreSQLRedisDockerNginxGitHub Actions

¿Tienes algo parecido entre manos?