Ir al contenido
Juan Ignacio Portilla Kitroser
Caso - ShineApp

Del cuaderno de un amigo a un SaaS multi-tenant

Mi mejor amigo tiene un car detailing, The King Shine. Las reservas, la caja y los materiales vivían en papel y en Excel. Construí ShineApp solo, del modelo de datos a la interfaz, y hoy opera su día a día.

Rol
Todo: producto, backend, frontend, infraestructura
Stack
Django, DRF, Next.js, React, TypeScript, PostgreSQL
Infra
Vercel + Supabase, presupuesto cero
Usuarios
1 negocio en producción: The King Shine
Estado
Desarrollo activo pausado
Problema

Un negocio real funcionando en papel

Un detailing maneja reservas, vehículos, servicios que consumen materiales, cobros, deudas y una caja que tiene que cerrar todos los días. The King Shine hacía todo eso en papel y en Excel.

Contexto

Un usuario, construido como producto

Tenía un usuario real y cero presupuesto. Aun así diseñé ShineApp como un producto para muchos negocios: vi mercado en el rubro, y el objetivo es hacerlo comercial.

Mi responsabilidad

Todo

Decisiones de producto, modelo de datos, API, interfaz, infraestructura, tests y documentación. Trabajé con agentes de IA (Claude y Codex) dentro de specs y ADRs escritos.

Solución

El recorrido de un trabajo en ShineApp

  1. PedidoLos clientes piden un turno o una cotización desde la turnera pública
  2. PresupuestoPresupuestos grupales de hasta 25 autos, en PDF
  3. ReservaAgenda diaria, semanal y mensual con control de capacidad
  4. Orden de trabajoMateriales consumidos por receta, por servicio
  5. CobroCobro al entregar; deudas registradas
  6. Caja cerradaCaja diaria con conciliación
Decisiones técnicas

Decisiones con presupuesto cero

  1. Multi-tenant desde el día uno

    Por qué - Cada registro pertenece a una cuenta de negocio, y el backend hace cumplir ese límite en una capa compartida. Hay tests dedicados que verifican que ningún negocio pueda leer datos de otro.

    Costo

    Más trabajo al principio para un producto con un solo cliente. Es lo que hace posible el segundo.

  2. Serverless con presupuesto cero

    Por qué - Web y API corren como funciones de Vercel; datos y archivos viven en Supabase. Sin workers, un cron de GitHub Actions llama a un endpoint de mantenimiento cada 15 minutos, y las migraciones nunca corren en un cold start.

    Costo

    Cold starts y una base más lenta. Diseñé la interfaz alrededor de eso. El objetivo es contratar mejor infraestructura cuando ShineApp salga a venderse.

  3. UX para infraestructura lenta

    Por qué - Deduplicación de requests, requests cancelables, skeletons y stale-while-revalidate en el frontend; índices compuestos y prefetch en el backend.

    Costo

    Más piezas en el cliente, a cambio de una interfaz que se siente rápida sobre infraestructura barata.

  4. Una turnera pública para cada negocio

    Por qué - Cada negocio tiene su propia página pública donde los clientes piden un turno o una cotización, con su vehículo y el día y horario que prefieren. Los pedidos llegan como pendientes y el dueño los convierte en una reserva o un presupuesto en un paso, y elige qué servicios muestra la página.

    Costo

    Es una entrada pública y sin login a un sistema multi-tenant: cada pedido queda atado a su negocio y nada llega a la agenda hasta que el dueño lo acepta.

  5. Roles que esconden el dinero

    Por qué - Dueños y empleados comparten la agenda y las órdenes de trabajo; los empleados nunca ven datos financieros.

    Costo

    Chequeos de permisos en cada endpoint y pantalla financiera.

Resultado

Qué está en producción

  • Agenda con drag-and-drop, control de capacidad por sector y superposiciones
  • Presupuestos grupales y PDFs
  • Caja con cierre diario y conciliación
  • Deudas y gastos fijos
  • Materiales con recetas y unidades abiertas
  • Precios por tipo de vehículo
  • Turnera pública por negocio, con los servicios que el dueño elige mostrar
  • Dashboard, búsqueda global, papelera y registro de auditoría
  • Automatización de WhatsApp y stock (construidos, The King Shine todavía no los usa)

Dónde está hoy

En producción con The King Shine, que usa todos los módulos excepto stock y WhatsApp. El desarrollo activo está pausado por falta de tiempo. Los próximos pasos del roadmap son facturación, invitaciones de equipo y entornos separados de staging y producción.

The King Shine - Estética vehicular
Desde The King Shine
Aceptar la ayuda de Juani construyendo ShineApp fue un antes y un después para The King Shine. Controlar la economía, los tiempos y todo el negocio en un solo lugar agilizó increíblemente la forma en la que trabajo. Recomiendo tanto ShineApp para otros colegas del rubro como a Juani como programador, ya que supo entender mi problema y resolverlo de manera profesional y eficiente.
Andrés PiñeroDueño de The King Shine

Qué me llevé

Juan Ignacio Portilla Kitroser
Contacto

Hablemos

Software engineer enfocado en backend: Python, Django y DRF, con React y Next.js en el frontend. Construyo y mantengo sistemas en producción con reglas de negocio complejas y muchas integraciones, y uso herramientas de IA todos los días sin bajar la vara.

  • Disponible ya - contractor o full-time
  • Inglés fluido
  • Superposición completa con el horario de la costa este de EE.UU. (GMT-3)