Vibecode FareHarbor

track this build4 phases, 12 steps, beginner friendly
KINDA · weekend project
price variesbuild time a weekendcategory ✈️ travelreplaced by 0 people

The part everyone thinks they are paying for, a calendar with capacity, a checkout, and a manifest the guides can read, is genuinely a weekend build with Stripe doing the hard money parts. The part that is actually load-bearing is everything after that: pushing live availability to Viator, GetYourGuide, Expedia and Booking.com, reconciling reseller commissions, handling refunds and chargebacks on other people's money, and a phone line that answers at 6am when the 7am kayak trip is double-booked. A self-hosted build replaces direct-website bookings cleanly and replaces channel distribution not at all. If most of your volume is direct and you can eat the ops burden, the maths gets interesting fast. If OTAs feed you, you are rebuilding a channel manager, which is not a weekend.

the project pack5 files · written for this build, step by step
README.md
# FareHarbor · indie build

A booking system whose entire difficulty is that capacity is finite and shared: two people booking the last two seats at the same instant, a boat whose capacity depends on the weather, and a customer in another country reading a departure time that must mean the local time where the tour actually leaves.

Estimated effort: **multi-day**. Work `BUILD_PLAN.md` top to bottom · every phase ends in a check that has to pass before the next one starts.

## Stack

| Part | Choice | Why |
| --- | --- | --- |
| Runtime | TypeScript with Fastify and PostgreSQL | capacity is a transactional problem and needs a database that can hold a line |
| Capacity | Reserved against the departure row inside the booking transaction | checking availability then inserting is a race that oversells |
| Time | Departures stored as an instant plus the activity's own zone | the departure time means the local time where the tour leaves, always |
| Payments | Hosted checkout with deposits and scheduled balances | card details on your server is a compliance project rather than a booking system |
| Holds | Short expiring holds during checkout, released automatically | a customer entering card details should not lose the seat, and should not hold it forever |

## Before you start

Have every one of these ready. The plan assumes them from step one.

- [ ] **Node.js 22 or newer** · free
  - Why: Runs the server, the expiry worker and the payment webhooks.
  - Get it: nodejs.org, or nvm install 22.
  - Verify: node --version prints v22 or higher
- [ ] **PostgreSQL 16 or newer** · free locally
  - Why: Capacity correctness depends on real transactions and row-level contention, which is exactly what this is for.
  - Get it: Docker or your package manager.
  - Verify: Two concurrent transactions updating one row serialise correctly
- [ ] **A payment provider account in test mode** · free to test; per-transaction in production
  - Why: Deposits, scheduled balances and refunds all behave differently from a single charge, and only a real provider shows you how.
  - Get it: Sign up, use test keys, and configure a webhook endpoint with its signing secret.
  - Verify: A deposit, a later balance and a partial refund all complete in test mode
- [ ] **A way to issue genuinely concurrent requests** · free
  - Why: The capacity guarantee is the point of the build, and sequential tests cannot demonstrate it.
  - Get it: Any load tool that can fire fifty simultaneous requests at one endpoint.
  - Verify: Fifty requests arrive close enough together to contend for the same row
- [ ] **Your cancellation policy as data** · free
  - Why: A policy written in prose gets implemented three times slightly differently, and the customer sees whichever version the code path used.
  - Get it: Express it as bands: hours before departure and refund percentage. Decide what happens when you cancel, and what happens for weather.
  - Verify: The policy is written as a table of bands with an explicit operator-cancellation rule

## Quick start

Follow Phase 1 in `BUILD_PLAN.md`; it creates the project.

Then copy `.env.example` to `.env` and fill in the values it documents.

## Honest limits

This build deliberately does not replace:

- Distribution through resellers and marketplaces.
- Dynamic pricing and yield management.
- Equipment and staff scheduling.
- Multi-currency settlement and cross-border tax.
- OTA and reseller distribution: live availability pushed to Viator, GetYourGuide, Expedia and dozens of local agents, plus the commission accounting behind it
- Someone else owning payment risk: chargebacks, disputes, refund flows, payout timing, PCI scope and multi-currency
- 24/7 human support during a season where a broken booking page costs real departures that day
- The messy operational features you only miss in August: resource and guide assignment, gear allocation, multi-day and multi-activity itineraries, gift cards, promo codes, waivers, group and private bookings
- Mobile check-in that works on a beach with one bar of signal, and the reporting your accountant already knows how to read

If one of those is essential to you, that is the reason to keep paying for FareHarbor, and the README should say so rather than pretend.

$ choose a build depth, inspect the files, then open the complete pack in your agent

why people still pay

Because the fee is usually charged to the traveler, not the operator, so it never shows up as a line item on the operator's P&L the way a subscription would, and because the alternative to a channel manager is manually keeping availability in sync across five OTAs while running trips. Operators also pay for the absence of liability: when a card is disputed or a payout is late, that is not their engineering problem. A DIY build is a real option for a direct-sales operator with a stable product catalogue and someone technical on the team, and it is a bad option for anyone whose seats are filled by resellers.

what you lose

xOTA and reseller distribution: live availability pushed to Viator, GetYourGuide, Expedia and dozens of local agents, plus the commission accounting behind it

xSomeone else owning payment risk: chargebacks, disputes, refund flows, payout timing, PCI scope and multi-currency

x24/7 human support during a season where a broken booking page costs real departures that day

xThe messy operational features you only miss in August: resource and guide assignment, gear allocation, multi-day and multi-activity itineraries, gift cards, promo codes, waivers, group and private bookings

xMobile check-in that works on a beach with one bar of signal, and the reporting your accountant already knows how to read

prior art · use these instead of building, if you'd rather

Nothing worth pointing at. That's why the prompt exists.

share on X ↗"I just replaced FareHarbor with one prompt"
questions
Vibecode FareHarbor

Kinda. The core of FareHarbor is buildable in a weekend with the prompt on this page, but there are real gaps: OTA and reseller distribution: live availability pushed to Viator, GetYourGuide, Expedia and dozens of local agents, plus the commission accounting behind it, Someone else owning payment risk: chargebacks, disputes, refund flows, payout timing, PCI scope and multi-currency. Read the honest list above before committing.

How much does FareHarbor cost?

FareHarbor's pricing is usage-based or varies by plan · No monthly software fee for operators; the fee (commonly cited around 6% in North America, negotiable 5-8%) is added to the traveler's checkout total. OTA-sourced bookings are billed to the operator separately..

What do I lose by replacing FareHarbor?

Honestly: OTA and reseller distribution: live availability pushed to Viator, GetYourGuide, Expedia and dozens of local agents, plus the commission accounting behind it; Someone else owning payment risk: chargebacks, disputes, refund flows, payout timing, PCI scope and multi-currency; 24/7 human support during a season where a broken booking page costs real departures that day; The messy operational features you only miss in August: resource and guide assignment, gear allocation, multi-day and multi-activity itineraries, gift cards, promo codes, waivers, group and private bookings; Mobile check-in that works on a beach with one bar of signal, and the reporting your accountant already knows how to read. If any of those are load-bearing for you, keep paying.

Is there an open-source alternative to FareHarbor?

No mature open-source alternative worth pointing at, which is exactly why the one-shot prompt on this page exists.