> ## Documentation Index
> Fetch the complete documentation index at: https://opencals.com/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# Bali Villa Rentals — villa booking template

> Bali Villa Rentals, a free open-source villa and holiday-rental website template built on the Storefront API, plus a villa-resort seed dataset and server-side enforcement of fixed check-in and check-out times.

**October 12, 2026**

## Bali Villa Rentals — open-source villa booking template

The seventh open-source Opencals template is live, and the first one built
around **nightly stays**. **Bali Villa Rentals** is a villa-rental website for
a demo resort, Lumbung Sidemen: ten villas in the rice fields of East Bali. The
same [Storefront API](/docs/api-reference/introduction.md) and typed
[TypeScript SDK](/docs/guides/storefront-sdk.md) as the other templates, with a warm,
quiet design and every nightly rate on show.

* **Booked by the night** — each villa is one staffless product with a one-night base duration, `allowCustomDuration`, and fixed check-in 15:00 / check-out 11:00, on a continuous 24/7 schedule
* **Calendar on live availability** — reads `getCurrentAvailabilitiesMerged` and checks on the client that check-in → check-out fits inside one range
* **Turnover days** — a check-out day can be the next guest's check-in day
* **Guest details as custom attributes** — adults, children, infants, arrival time, flight number and occasion
* Per-stay extras (airport transfer, floating breakfast, early check-in request), checkout questions and promo codes
* Trip-aware customer accounts: dates in the resort timezone, night count, change dates (same number of nights) or cancel up to 14 days before check-in
* Passwordless login and one-time email links
* `LodgingBusiness`, `VacationRental` and `FAQPage` structured data, Open Graph, `robots.txt` and `sitemap.xml` configured
* Stack: Next.js 15, TypeScript, Tailwind v4, Framer Motion, `@opencals/storefront-sdk` v0.3.17
* MIT licensed — clone, rebrand, deploy. One-click Vercel deploy.

### Villa-resort seed dataset

New Dev Stores can choose the **Bali Villa Rentals** dataset (category Villa
resort, `villa_resort`). It seeds ten villas on a 24/7 schedule with fixed
check-in and check-out, four collections, per-stay extras, checkout questions
and sample stays, so the template matches the demo out of the box.

### Fixed check-in and check-out are now enforced

Products with **custom duration** and **fixed times** (`fixedTimes`,
`fixedStartTime`, `fixedEndTime`) now have those times enforced by the server.
A customer booking must start at `fixedStartTime` and end at `fixedEndTime` in
the product's schedule timezone (the store timezone if the product has no
schedule), or the API returns `400`. This applies to creating an appointment
(`POST /storefront/appointments`, with or without a cart) and to customer
reschedules (`PUT /storefront/appointments/{appointmentId}/reschedule`). Bookings and reschedules made by the
merchant in the dashboard are exempt, so you can still give a guest an early
check-in or a late check-out.

A fixed-times stay is priced by whole nights: a 15:00 → 11:00 stay of N nights
is shorter than N × 24 hours and is charged as N nights. No SDK changes. If your
site already sends check-in → check-out slots built from the product's fixed
times, nothing changes for you.

[Live demo ↗](https://template-bali-villas.vercel.app) ·
[GitHub ↗](https://github.com/letsopencals/template-bali-villas) ·
[Template docs](/docs/open-source/bali-villas.md)


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.