I Open-Sourced the Website Behind Our Direct Bookings

#Real Estate#STR#Direct Booking#Tools

We run a few short-term rentals, and like everyone who does, we hand a cut of every guest’s payment to the booking sites. The way to stop doing that is to earn direct bookings, and to earn direct bookings you need a place on the internet that is unmistakably yours. I built one for us. I have now taken it apart, removed everything specific to us, and put the template on GitHub so you can build your own. The upside of this approach is that it’s already here for you to use, and nothing to pay for that. The downside, you need to buy into my way of doing things. The rest, as they say, is up to you.

Get the template on GitHub →

There is also a companion repository that holds a live sample of what the template builds, if you want to see the output before you clone anything: github.com/filmil/hugo-rental-template-site.

How this came about

Like most things I end up building, this one started with someone else’s idea. A colleague of mine put up a blog for his own site, wrote a handful of articles, and watched it quietly pull in more than two thousand visits. That was the whole lesson. I always assumed a small site like that would be a vanity project that nobody reads. But, the numbers show otherwise. People were finding him, reading what he wrote, and trusting him a little more for it. So I did the obvious thing and made my own.

It might have ended there, as one more thing that worked for us and nobody else. But then another colleague heard about the result and asked whether they could have it for their own rentals. That question is the reason there is anything to link to in this post. To hand it over cleanly, I had to pull out everything specific to us and turn what was left into a proper template. Once it was generic, it cost me nothing to make it public and free to use, under the Apache 2.0 license. So that is what I did. Fair disclosure, with massive help from Claude Code, that did the heavy lifting, while I watched and directed it.

Why we have a website at all

Most of us rent through a booking engine of one flavor or another: Hostaway, Lodgify, Guesty, OwnerRez, and the rest. They are good at the things a booking engine should be good at: calendars, payments, the checkout. They are not good at being a brand, because that is not their job. They hand you a booking page, not a home on the internet, and a booking page is not the thing a guest finds when they are still dreaming about the trip rather than paying for it.

So we ended up with two sites that are meant to look like twins. The booking engine takes the money. A small marketing-and-blog site does everything before that: the destination guides, the property pages, the “about us” that sounds like a family and not a call center. The guest who reads a guide we wrote about the ski hill, on a site that clearly belongs to the people who own the cabin, is the guest who books with us directly instead of paying the middleman. The one rule that matters is that the two sites have to feel like the same company. Same header, same colors, same voice.

I over-engineered it, of course

I am a software engineer, so you already know how this went. A normal person would have used Squarespace and moved on with their life. I built the thing out of Hugo (static HTML, no server to babysit, nothing to get hacked), and then, because a normal Hugo setup was apparently too restful, I wired the build up with Bazel so a single command renders the whole site with a pinned copy of Hugo it downloads for you. The logo is drawn in TikZ and rendered to an SVG at build time, because of course it is.

I am not going to pretend that was the sensible amount of effort. But it does mean the result is genuinely reproducible and genuinely free of the usual website subscription, and after living with it for a while I decided the parts worth keeping were worth sharing. So I generalized it. What you get:

  • A small, light theme driven entirely by config values and data files, so you rebrand it without editing a single template.
  • Continuous integration that builds the site on every change and publishes the rendered HTML to a second repository (the sample one linked above), which is what a web server actually serves.
  • Placeholder content all the way through: example destinations, example properties, example posts, and placeholder images that already show the photo-credit pattern, so you can see the shape before you fill it in.

How to make it yours

Fork it and work down the “How to make it yours” checklist in the README: replace the YOURBRAND and yourdomain.com placeholders, drop in your analytics id, swap the logo, replace the placeholder photos, edit the two data files that list your destinations and your homes, and write real words over the examples. Point the deploy step at your own results repository, hand it a deploy key, and from then on every push builds and publishes.

Two caveats, because I would want them if it were me reading this. The build pulls two of its pieces (Hugo’s Bazel rules and a small TeX bundle for the logo) from a community registry rather than the central one. The README says so, and you can mirror them yourself if you would rather not depend on it. And the privacy policy and terms pages are placeholders. They are there to show where such pages go, not to be shipped as-is. Replace them with your own reviewed text.

Why I bothered

The same reason I write anything on this site. The version of this I would have wanted five years ago did not exist, and stitching it together from parts took far longer than it had any right to. If you own a rental and you have kept paying the booking-site tithe because standing up your own presence felt like a whole project, this takes most of the project off the table. It is Apache-2.0 licensed, so do whatever you like with it.

As always, this is what worked for us, not legal, tax, or investment advice. If it earns you a single direct booking that would otherwise have gone to an OTA, it has already more than paid for itself. Good luck.