Airbnb, Booking.com, VRBO, Plumguide. Quarenta e seis plataformas PMS. Mais reserva direta. O Repull é o channel manager e o agregador de PMS num só — e o template inteiro é open source.
A forma do problema
Os players incumbentes obrigam-te a adotar o schema deles, a UI deles e a relação de billing deles com os teus utilizadores. O Repull inverte isso — o teu schema, a tua UI, o teu billing. Nós tratamos só dos adapters dos canais.
Envia listings, fotos, calendários, tarifas e mensagens para Airbnb, Booking.com, VRBO e Plumguide através de um schema. Vinte e seis endpoints Airbnb, onze endpoints Booking, à mão de semear.
Hostaway, Guesty, Cloudbeds, Mews, OwnerRez — liga uma vez, lê com a mesma forma seja qual for a plataforma upstream. Os adapters de PMS também são open source.
O Repull normaliza tudo num schema sensato por defeito. Se o teu for diferente, define-o uma vez no Custom Schema Builder, define o header X-Schema e cada resposta volta nos teus nomes de campos.
Exemplo prático
O repull-channel-manager é a app Next.js completa — calendário, reservas, ligações, mensagens, reviews — a correr na API do Repull. As features AI lá dentro correm em Vanio AI. Faz clone, aponta-o para o teu próprio workspace Repull e tens um channel manager a funcionar hoje.
Um git clone, um npm install e um ficheiro .env com a tua API key Repull. O deploy na Vercel é um clique a seguir.
Cada cliente teu tem o seu próprio workspace Repull — API keys com scope, dados com scope. A tua app é a camada multi-tenant por cima.
Grelha do calendário, drawer de reserva, inbox de mensagens, fluxo de aprovação de reviews — cada ecrã é teu para estender. A camada de dados fica; a UI é tua.
git clone https://github.com/ivannikolovbg/repull-channel-manager cd repull-channel-manager npm install cp .env.example .env.local # add REPULL_API_KEY + REPULL_WORKSPACE_ID npm run dev
import { Repull } from '@repull/sdk'
const repull = new Repull({
apiKey: process.env.REPULL_API_KEY!,
workspaceId: process.env.REPULL_WORKSPACE_ID!,
})
// Push a property to every connected channel
await repull.properties.create({
title: 'R-Sable 1302',
bedrooms: 2,
city: 'Radium Hot Springs',
channels: ['airbnb', 'booking', 'vrbo'],
photos: [...],
amenities: ['wifi', 'parking', 'hot-tub'],
})
// Or only Airbnb, with platform-specific fields:
await repull.properties.create({
title: 'R-Sable 1302',
...,
channels: ['airbnb'],
airbnb: { instantBook: true, minNights: 2 },
})Porque é que o open source importa aqui
Os conectores do Repull vivem em aberto. Se um dia deixássemos de existir, ainda terias o código que fala com o Airbnb. É uma escolha deliberada, não uma frase de marketing.
Cada adapter é open source no GitHub. O template do channel manager é open source. Os SDKs são open source. Podes fazer fork ao stack inteiro.
Vê exatamente como o Repull fala com o Airbnb. Reporta um bug, manda um PR ou copia uma função. O código é a documentação.
Issues, releases e roadmap vivem no GitHub. Pedidos de novos conectores entram em PR review na mesma semana.
Uma API key em 30 segundos. Liga um PMS ou anuncia em direto, e cada canal está a uma chamada de escrita de distância.