Volver al portfolioMartín Van Compernolle

Proyecto 03 · Proyecto propio

Fechado

SaaS de reservas para alquiler de eventos

Sistema para negocios que alquilan cosas para eventos: evita la doble reserva, cobra la seña por Mercado Pago, genera el contrato y registra la devolución con fotos. Cada negocio tiene su catálogo en su propio subdominio.

Origen
Proyecto propio
Estado
Próximo lanzamiento
Año
2026
Stack
Next.js · NestJS · PostgreSQL · Drizzle · Mercado Pago · TypeScript · Tailwind 4 · Zod · Cloudflare R2 · Docker · Caddy
Captura de Fechado

01El problema

Los negocios que alquilan cosas para eventos (livings, inflables, vajilla, carpas, sonido) manejan las reservas entre WhatsApp, cuadernos y planillas. Así aparece el peor problema del rubro: alquilar dos veces el mismo artículo para la misma fecha.

Además la seña se cobra a mano, los contratos se arman uno por uno y la devolución se controla de memoria, sin fotos que respalden en qué estado volvió cada cosa.

02La solución

  • Sin doble reserva

    La disponibilidad se calcula en el momento, contando cantidades (no es lo mismo una carpa que doce sillas) y el margen entre un evento y el siguiente.

  • Seña con Mercado Pago

    Cada negocio conecta su propia cuenta. El cliente paga desde un link y la reserva se confirma sola; la plata va directo al negocio.

  • Contrato y devolución

    El contrato se genera en PDF y se acepta online. Al devolver, el dueño completa un checklist con fotos desde el celular.

  • Un catálogo para cada negocio

    Cada negocio tiene su propia dirección (negocio.fechado.com.ar) para compartir por WhatsApp, con vista previa del logo y las fotos.

03Mi rol

Es mi proyecto propio: lo estoy diseñando y desarrollando de punta a punta, desde la definición del producto hasta la arquitectura, el back, el front y la infraestructura.

04Arquitectura

Canales

  • Catálogo público por subdominio
  • Panel del dueño (celular primero)
  • Links de seña y contrato

Fechado · API (NestJS)

  • Disponibilidad con bloqueo de filas
  • Máquina de estados de la reserva
  • Pagos y webhooks de Mercado Pago
  • Vencimientos y mails con reintentos

Datos e infraestructura

  • PostgreSQL con Drizzle
  • Cloudflare R2 (fotos y PDFs)
  • VPS con Docker y Caddy

05Galería

06Decisiones técnicas

  1. 01

    La doble reserva la impide la base de datos

    Verificar y reservar pasa en la misma transacción, bloqueando las filas de los artículos en un orden fijo para evitar bloqueos cruzados. Un test lanza pedidos simultáneos por el último artículo disponible y comprueba que pasa exactamente uno.

  2. 02

    Un subdominio por negocio, sin tocar el DNS

    Un registro comodín y un único certificado cubren a todos los negocios: dar de alta uno nuevo no requiere configurar nada. Las direcciones liberadas quedan 90 días en cuarentena para que nadie pueda hacerse pasar por otro negocio.

  3. 03

    Los pagos no se confían en el aviso

    Cada notificación de Mercado Pago se valida con su firma, se procesa una sola vez aunque llegue repetida y se confirma consultando el pago antes de dar la reserva por pagada.

  4. 04

    Contratos inmutables y fotos sin GPS

    El contrato aceptado se guarda congelado, con su huella digital y la versión de la plantilla. Las fotos del celular se procesan en el servidor y se publican sin metadatos, porque traen la ubicación.

WhatsApp