Pular para o conteúdo
Bernardo Fernandez

PROTÓTIPO · 2024

Meridian.

Booking direto para hospedagens boutique

Contexto

Hotéis pequenos dependem de agregadores que cobram comissões pesadas e achatam cada propriedade no mesmo template. Construí o Meridian como protótipo pra entender o que um sistema de reserva direta realmente exige — não a superfície, as garantias por baixo.

O problema

Reserva parece problema de interface e é problema de correção: disponibilidade, tarifas e confirmação de pagamento precisam permanecer consistentes sob concorrência. A pergunta interessante era como tornar overbooking e pagamento fantasma estruturalmente impossíveis, em vez de tratá-los no suporte.

Meu papel

Desenvolvedor único — desenho do sistema, modelo de disponibilidade, pagamentos e fluxo de reserva.

O que tornou tecnicamente interessante

A disponibilidade precisa ser verificada no momento da reserva, sob concorrência — duas pessoas reservando o último quarto ao mesmo tempo precisam receber respostas verdadeiras.

O estado do pagamento e o estado da reserva vivem em dois sistemas (a aplicação e o provedor de pagamento). Manter os dois sincronizados é onde a maioria dos sistemas de booking escorrega.

Cada propriedade precisa da própria identidade, mas um fork por propriedade transformaria cada correção em operação de frota.

Decisões

Disponibilidade como invariante central
Reservas, retenções e restrições de tarifa passam por um único serviço de disponibilidade com checagens transacionais. Overbooking deixou de ser chamado de suporte e virou impossibilidade estrutural.
Pagamento confirmado por webhook, não por redirect
A reserva só confirma quando o webhook do Stripe chega — usuário fechando a aba depois de pagar não cria mais reserva fantasma.
Identidade por propriedade sem código por propriedade
Paleta, tipografia e imagens são configuração, não fork — uma propriedade nova é um passo de onboarding, não um deploy.

Resultado

  • O serviço de disponibilidade torna reservas conflitantes impossíveis no nível do banco de dados, não por convenção.
  • O estado do pagamento só avança por eventos de webhook — o sistema nunca exibe uma reserva confirmada que não foi paga.
  • Propriedades são dados — o protótipo demonstrou que uma propriedade nova não exige mudança de código.

O que eu aprendi

Invariantes primeiro. Com disponibilidade e estado de pagamento guardados por desenho, todo o resto de um sistema de reservas vira problema muito mais simples.

Tem um projeto nesse espaço?

Vamos conversar sobre isso