CEREVA CEREVA
Iniciar conversación
⇠ Archivo / 2026
Business Management System Lavandería Balboa

Sistema de Gestión Lavandería Balboa

ERP y punto de venta a medida para digitalizar órdenes, pagos, cortes de caja, notificaciones por WhatsApp e impresión térmica en una lavandería comercial, corriendo sobre hardware de bajos recursos con Linux y Docker.

Sistema Sistema de Gestión Lavandería Balboa
Activo

Contexto

Lavandería Balboa operaba completamente mediante procesos manuales. Las órdenes, pagos, tiempos de entrega y seguimiento de clientes eran administrados utilizando tickets físicos y registros en papel, generando fricción operativa conforme aumentaba el volumen de trabajo.

La necesidad principal era transformar una operación tradicional en un flujo digital confiable, escalable y profesional — pero con un reto adicional: la única computadora disponible en el negocio era una máquina con hardware extremadamente limitado.

El problema operativo

La operación diaria dependía completamente de procesos manuales:

  • Órdenes de servicio registradas en papel.
  • Seguimiento manual de pagos y adeudos.
  • Riesgo constante de pérdida de tickets físicos.
  • Dificultad para localizar órdenes activas.
  • Escasa trazabilidad de movimientos realizados por empleados.
  • Falta de métricas operativas, reportes y cortes de caja digitales.
  • Dependencia total de la memoria y organización manual del personal.
  • Cero notificaciones al cliente sobre el estado de sus prendas.

Conforme aumentaba la carga operativa, el modelo basado en papel comenzó a limitar la capacidad de crecimiento y organización del negocio.

El reto de infraestructura

El hardware disponible para correr el sistema presentaba restricciones importantes:

Hardware del servidor

CPU

Intel Celeron N2840 @ 2.16 GHz

Procesador de 2 núcleos, arquitectura Bay Trail de bajo consumo

RAM

8 GB DDR3L

Almacenamiento

SSD de 500 GB

Sistema operativo original

Windows 7

Sistema operativo actual

Lubuntu 24.04 LTS

Instalado por nosotros para maximizar recursos disponibles

Esto significaba que el sistema completo — aplicación web, base de datos, microservicio de mensajería y modo kiosko — debía funcionar de forma estable con un presupuesto de apenas 2 núcleos de CPU y 8 GB de RAM total.

Nuestra aproximación

Diseñamos y desarrollamos un ERP y punto de venta especializado para lavanderías comerciales, enfocado en digitalizar el flujo operativo completo del negocio.

A diferencia de la primera versión (que era una aplicación de escritorio con Tkinter), el sistema fue reescrito desde cero como una aplicación web con FastAPI, desplegada mediante contenedores Docker y renderizada localmente a través de un kiosko nativo con pywebview.

La arquitectura fue diseñada para ser extremadamente liviana: toda la infraestructura de producción corre containerizada y consume menos de 300 MB de RAM en idle.

Arquitectura del sistema

La solución corre como una suite de microservicios Docker orquestados con Docker Compose, priorizando estabilidad, rendimiento en hardware limitado y facilidad de actualización remota.

CapaTecnología
Backend / APIFastAPI (Python 3.10) + Uvicorn (2 workers)
FrontendJinja2 Templates SSR + TailwindCSS
Base de datosMariaDB 10.11 (buffer pool 512 MB en RAM)
Kiosko (GUI)pywebview con motor WebKit2 nativo en Linux
MensajeríaMicroservicio Node.js con Baileys (WhatsApp)
Impresiónpython-escpos → impresora térmica USB
Admin DBAdminer
CI/CDGitHub Actions → GitHub Container Registry (GHCR)

Consumo en producción

~274 MiB

RAM total en idle (4 containers)

FastAPI ~111 MiB + MariaDB ~118 MiB + WhatsApp API ~37 MiB + Adminer ~8 MiB. MariaDB crece gradualmente hasta ~512 MiB conforme cachea datos en RAM, lo cual es comportamiento esperado y deseable.

<1% CPU

Consumo total en reposo

Tras eliminar animaciones CSS infinitas que causaban ~70% de uso de CPU idle, el consumo se redujo a menos del 2% en reposo.

Funcionalidades principales

Punto de venta dinámico

El corazón del sistema es el módulo de ventas, donde el personal crea órdenes de servicio en segundos. La interfaz permite agregar servicios por categoría — Lavado, Planchado, Tintorería y Extras — con soporte de cantidades decimales, selección de precios desde catálogo dinámico, cálculo automático del total, registro de anticipos y selección de método de pago.

Al crear una nueva orden, el sistema recupera automáticamente la información del cliente utilizando su número telefónico, reduciendo tiempos de captura y evitando duplicidad de registros.

Sistema de impresión multi-formato

El sistema integra directamente con una impresora térmica ESC/POS vía USB, generando diferentes tipos de impresiones según la necesidad operativa:

  • Nota Cliente — Ticket completo con logo, datos del cliente, desglose de servicios, montos, anticipos y fecha de entrega estimada.
  • Nota Lavandería — Copia interna para el personal con la misma información operativa.
  • Nota Bolsa — Ticket compacto con número de orden y descripción de prendas para identificar bolsas.
  • Etiquetas de cubre-polvo — Etiquetas gráficas con logo y número de nota para fundas protectoras.
  • Etiquetas de cobertores — Etiquetas de formato grande, rotadas 90° para piezas voluminosas.
  • Impresión completa — Las tres notas principales en una sola acción.

Cada ticket incluye una vista previa HTML antes de enviar a la impresora, permitiendo al personal verificar el contenido sin desperdiciar papel.

Notificaciones automáticas por WhatsApp

Un microservicio independiente en Node.js se conecta a WhatsApp mediante la librería Baileys, permitiendo enviar confirmaciones de pedido automáticas directamente al teléfono del cliente.

El mensaje incluye número de factura, fecha, datos del cliente, desglose completo de servicios con montos, fecha de entrega estimada, monto a cuenta, método de pago y saldo pendiente.

La vinculación del bot se realiza mediante QR desde un panel de administración dentro del propio sistema, sin necesidad de configuración externa.

Gestión de pedidos y entregas

La vista de pedidos permite consultar todas las órdenes activas con búsqueda por nombre, teléfono o número de factura. Cada pedido muestra su estado, monto total, saldo pendiente y acciones disponibles.

Al momento de la entrega, el sistema permite liquidar el saldo restante, seleccionar método de pago y registrar comisiones por tarjeta, cerrando la orden y registrando el ingreso automáticamente.

Cortes de caja

El módulo de cortes permite realizar cierres diarios completos con:

  • Ingresos separados por método de pago (efectivo, transferencia, tarjeta).
  • Registro de dinero físico y digital real contado.
  • Gastos operativos desglosados por categoría: tintorería, sueldos, mantenimiento, renta, transporte y extras.
  • Cálculo automático de diferencias entre lo esperado y lo contado.
  • Fondo de caja para el día siguiente.
  • Impresión del corte directamente en la impresora térmica.

Reportes históricos y métricas

El panel administrativo proporciona visibilidad completa sobre la operación del negocio:

  • Métricas operativas — KPIs por rango de fechas: total de ventas, número de órdenes, ticket promedio, clientes nuevos.
  • Estadísticas por producto — Ranking de productos más vendidos, precio medio real vs. precio base del catálogo, porcentaje de desviación.
  • Reportes anuales — Vista consolidada por año con desglose mensual, rankings de mejores y peores meses, promedio diario de ingresos.
  • Reportes mensuales detallados — Tabla día a día con ingresos, gastos por categoría, balance de caja, sobrantes y faltantes.
  • Gráficas interactivas — Visualizaciones con Chart.js para tendencias de ingresos.

Gestión dinámica de precios

El catálogo de precios es completamente editable desde el panel de administración, organizado por categorías (Lavandería, Planchado, Tintorería) con promedios calculados automáticamente. Los cambios de precio se reflejan inmediatamente en el punto de venta.

Gestión individual y por lotes de notas

El panel administrativo incluye herramientas para gestionar notas de forma individual — editar cualquier campo de una factura existente, reasignar usuario, modificar fechas, montos y estados — así como procesamiento por lotes para operaciones masivas sobre rangos de notas.

Seguridad operativa

Cada empleado inicia sesión dentro del sistema, permitiendo registrar las acciones realizadas sobre órdenes y movimientos administrativos. Las sesiones se protegen con middleware de seguridad y secret keys.

Para reducir errores operativos se implementaron validaciones de captura, selectores controlados para estados y categorías, recuperación automática de información de clientes y restricciones para evitar información inconsistente.

Optimización para hardware de bajos recursos

El rendimiento del sistema en un procesador Celeron de 2 núcleos requirió optimizaciones específicas en múltiples capas:

Base de datos en memoria

MariaDB está configurada con un innodb_buffer_pool_size de 512 MB, permitiendo que toda la base de datos viva en RAM y eliminando lecturas a disco. Se utiliza innodb_flush_method=O_DIRECT para escrituras eficientes que evitan doble-buffering con el sistema operativo.

Backend concurrente

Las rutas de FastAPI utilizan funciones síncronas con el Thread Pool interno de Uvicorn, permitiendo que las consultas a la base de datos se ejecuten en paralelo sin bloquear el Event Loop. Solo las rutas que requieren await conservan async def.

Kiosko con caché persistente

El modo kiosko corre con pywebview usando private_mode=False, habilitando caché de disco para archivos estáticos (CSS, JS, fuentes). Los cambios de pantalla cargan instantáneamente desde caché local, eliminando solicitudes redundantes al servidor.

Eliminación de consumo idle

Se identificaron y eliminaron animaciones CSS infinitas (animate-ping) en indicadores de estado que causaban un uso constante del 70% de CPU incluso sin actividad. Tras la optimización, el consumo en reposo bajó a menos del 2%.

Autonomía operativa

El sistema fue diseñado para operar sin intervención técnica. Una vez configurado, la máquina se enciende y todo funciona solo:

  • Auto-arranque del kiosko — Al encender la computadora, Lubuntu inicia sesión automáticamente y ejecuta el kiosko a pantalla completa mediante un archivo .desktop en autostart. El personal solo necesita encender la máquina.
  • Recuperación automática de contenedores — Todos los servicios Docker están configurados con restart: always. Si la máquina se apaga por corte de luz o reinicio, los contenedores se levantan solos al volver a encender.
  • Backups automáticos diarios — Un crontab ejecuta respaldos de la base de datos mediante mysqldump contra el puerto expuesto de Docker, generando dumps diarios sin intervención manual.
  • Actualización remota — Las imágenes Docker se publican a GHCR mediante GitHub Actions. Para actualizar el sistema en producción basta con ejecutar docker compose pull && docker compose up -d sin compilar nada en la máquina local.

En producción

1. Dashboard principal | 2. Punto de venta | 3. Lista de pedidos | 4. Corte de caja | 5. Métricas operativas | 6. Reportes anuales | 7. Gestión de precios | 8. Entrega de pedido | 9. Login del sistema
El sistema corriendo en la lavandería y tickets térmicos reales

Resultado de la implementación

La digitalización completa de la operación transformó un flujo basado en papel en un ERP centralizado, confiable y autocontenido.

El sistema eliminó la pérdida de órdenes, estandarizó los procesos de cobro y entrega, introdujo cortes de caja diarios con trazabilidad financiera y habilitó notificaciones automáticas al cliente por WhatsApp — todo corriendo en una máquina que la mayoría de desarrolladores habrían descartado como insuficiente.

La dueña y el personal obtuvieron visibilidad completa sobre órdenes activas, pagos pendientes, ingresos operativos y métricas históricas, permitiendo administrar la lavandería con mayor control, velocidad y organización.

Más allá del software, este proyecto implicó ingeniería de infraestructura completa: desde migrar el sistema operativo de Windows 7 a Lubuntu, hasta optimizar cada capa del stack para que una suite de 4 contenedores Docker corriera de forma estable y fluida en un procesador Celeron de 2 núcleos.