Saltar al contenido

Proyecto

Sitafacil

Agenda y catálogo para negocios de servicios, multi-tenant, en producción.

Año
2025
Rol
Full-stack
Equipo
1
Stack
Next.jsFastifytRPCPostgreSQLResendDocker
Imagen principal de Sitafacil

01

El problema

Un negocio de servicios con dos sedes llevaba el agendamiento en papel: citas, fechas, nombres y pagos. No había un solo lugar para el flujo ni para mostrar servicios y paquetes. Si el recorte servía a un local, no servía como producto: hacía falta que varios negocios operaran en tiempo real sobre la misma plataforma.

02

Decisiones técnicas

Recabé el flujo de agendamiento y lo modelé en una app propia. Lo gestioné solo: requisitos, diseño y cada iteración. Usé herramientas de IA para validar ideas y recortes, no para saltarme el modelo. El esquema es multi-tenant desde el principio.

Multi-tenant desde el primer modelo

El caso inicial eran dos locales de un negocio. El producto tenía que admitir varios negocios a la vez, no una instalación por cliente.

Next.js + Fastify + tRPC + PostgreSQL

La UI y el servidor van separados; tRPC mantiene el contrato tipado entre ambos. Postgres guarda tenants, agenda, servicios y paquetes. Resend cubre el correo.

Docker y CI/CD en GitHub

Las imágenes se construyen en pipeline y se despliegan en infra propia. Definir ese flujo fue la parte del proyecto que más me importó: un push no puede ser un deploy a mano.

03

Interfaz

Web. El negocio publica servicios y paquetes y opera la agenda (citas, fechas, pagos) en un solo lugar. Varios tenants en la misma instalación. La imagen principal y la galería salen de la marca en producción (Open Graph, lockup e isotipo). Aún no hay capturas de la interfaz.

Captura 1 de Sitafacil

04

Resultado

2

sedes del caso inicial

Live

sitafacil.com

La demo está en sitafacil.com. El recorte sale de un flujo real (papel, dos locales), no de un brief inventado. No hay cifra de tenants ni de reservas publicada aquí.

05

Aprendizajes

El trabajo que más me dejó fue el CI/CD en GitHub: build de imágenes Docker y despliegue repetible. También: un caso de un solo negocio no se modela como tenant único si el producto va a ser plataforma. Recabar el flujo (citas, pagos, paquetes) antes de escribir código evitó un CRUD genérico.

Demo en vivo