How to choose a booking stack: start from the availability model
Most teams pick tools by browsing feature lists. For a booking app, the decision that actually shapes everything downstream is how you model availability. Get that right and the rest of the stack follows naturally.
Ask three questions before you commit to anything:
- Single resource or multi-property? One calendar is trivial. Many calendars owned by different people changes your data model and your isolation requirements.
- Do you sync with outside platforms? If listings also live on Airbnb or Booking.com, iCal sync is non-negotiable and it dictates your whole background-job design.
- Who collects the money — you, or the property owner? A marketplace that splits revenue is a very different payments setup than a single business taking direct bookings.
Those three answers tell you whether you need row-level isolation, a polling scheduler, and a platform-fee payment model — or whether a much smaller stack will do. When I built BookBed the answers were multi-property, full bidirectional sync, and owner revenue, which is why the stack landed on Postgres + iCal libraries + Stripe Connect. A different set of answers would justify a different (often smaller) toolset.