Customised Direct Booking Accommodation Website

via Freelancer ·

Budget / Salary$30–250
TypeFreelance project
LocationRemote
Posted1 hour ago
# Direct Booking Website Project Requirements

## Overview

Build an Airbnb-style direct booking website for one or more accommodation properties. Guests must be able to check availability, select dates, see an accurate price breakdown, accept booking policies, and pay securely online.

The administrator must be able to manage properties, availability, nightly prices, booking rules, fees, discounts, reservations, payments, and calendar synchronisation without changing code.

The website must prevent double bookings and synchronise availability with Airbnb, Booking.com, and VRBO using iCal calendar feeds.

## Priorities

- **P0 — Must have:** Required for launch.
- **P1 — Should have:** Important feature that can be added soon after launch.
- **P2 — Could have:** Optional future enhancement.

# 1. Core Scope

The system must support one or more accommodation listings. Each listing must have its own pricing, rules, availability calendar, policies, iCal connections, and booking settings.

## P0 Requirements

- Guests can view a property, select dates and guest count, receive a live quote, accept policies, pay, and receive confirmation.
- Administrators can manage listings, prices, availability, booking rules, fees, discounts, and reservations.
- The system imports external iCal calendars and provides an iCal export feed for each property.
- Payments are processed through Stripe.
- Guests see a complete price breakdown before payment.
- The final booking price and policies accepted by the guest are saved with the reservation.

## P1 Requirements

- Reservation reporting and CSV exports.
- Staff accounts with limited access.
- Booking and notification history.

# 2. User Roles

## Guest

Guests must be able to:

- Browse property listings.
- View photos, descriptions, amenities, sleeping arrangements, capacity, house rules, check-in/out times, and cancellation terms.
- Select available dates and number of guests.
- See the total price before payment.
- Complete payment through Stripe.
- Receive booking confirmation by screen and email.
- Access their booking reference.

## Administrator

Administrators must be able to:

- Create and edit property listings.
- Manage prices, discounts, fees, taxes, availability, booking restrictions, and policies.
- Create manual calendar blocks.
- Review and manage reservations.
- Configure Stripe and iCal connections.
- Process cancellations and refunds where permitted.

## Optional Staff User

Staff users may view assigned reservations and calendars but must not access Stripe credentials, payment settings, or global configuration.

# 3. Guest Booking Journey

1. Guest opens a property listing.
2. Guest chooses check-in date, check-out date, and number of guests.
3. The system checks availability and booking rules.
4. The system displays an itemised price breakdown.
5. Guest reviews and accepts house rules and cancellation policy.
6. Guest enters contact details and completes payment through Stripe.
7. The booking is confirmed only after Stripe confirms successful payment and availability is checked again.
8. The guest receives a confirmation screen and confirmation email.

If a date selection is not valid, the website must show a clear reason. Example:

> “A minimum stay of 3 nights is required for Friday check-in.”

# 4. Booking Statuses

## Pending Payment

Dates may be temporarily held while the guest completes Stripe payment. The hold must expire automatically after a configured time if payment is not completed.

## Confirmed

Payment, or an approved deposit, has been recorded. Dates are blocked in the internal calendar and included in the property iCal export.

## Cancelled

The booking has been cancelled. Calendar availability and any refund must follow the applicable cancellation policy.

## Manual Hold

An administrator-only calendar block for owner stays, maintenance, or reservations that are not otherwise synchronised.

# 5. Pricing Engine and Price Breakdown

Pricing is a P0 requirement. The administrator must be able to control the nightly price for every property and every date.

## Nightly Pricing

The system must support:

- Default nightly price per property.
- Individual date-specific prices.
- Seasonal pricing.
- High-season and low-season pricing.
- Holiday and event pricing.
- Weekend pricing by selected weekday.
- Currency selection per property.
- Consistent rounding of all monetary amounts.

## Pricing Priority

When multiple price rules apply, the system must use a clear order of priority:

1. Individual date-specific price.
2. Seasonal price.
3. Weekend price.
4. Default nightly price.

The price applied to each night must be stored with the reservation.

## Fees

Administrators must be able to configure:

- Cleaning fee.
- Extra guest fee.
- Pet fee.
- Other named fees.
- Mandatory or optional fees.
- Fees charged per stay, per night, per guest, or per pet.

## Taxes

The administrator must be able to configure:

- Tax name.
- Tax rate.
- Whether tax is calculated on accommodation only or on accommodation plus selected fees.
- Whether tax is included in or added to the displayed price.

## Discounts

The system must support:

### P0

- Weekly discount.
- Monthly discount.

### P1

- Early-bird discount.
- Last-minute discount.
- Promotional code discount.
- Non-refundable rate discount.

## Guest Price Breakdown

Before payment, the guest must see:

- Price for each booked night.
- Accommodation subtotal.
- Applied discounts.
- Cleaning fee.
- Extra guest fee, if applicable.
- Pet fee, if applicable.
- Other fees.
- Taxes.
- Final total payable.

The breakdown must update immediately if dates, guest count, or optional add-ons change.

### Example Price Breakdown

| Item | Amount |
|---|---:|
| Friday night | €220 |
| Saturday night | €220 |
| Sunday night | €160 |
| Accommodation subtotal | €600 |
| Cleaning fee | €55 |
| Discount | €0 |
| Tax at 10% | €65.50 |
| **Guest total** | **€720.50** |

The final total shown to the guest must match the amount charged through Stripe.

# 6. Booking Rules and Restrictions

Administrators must be able to manage rules globally, by date range, and by check-in day.

## Required Rules

- Minimum number of nights.
- Maximum number of nights.
- Different minimum stays by season, date range, or check-in weekday.
- Allowed or blocked check-in days.
- Allowed or blocked check-out days.
- Minimum advance notice before arrival.
- Maximum booking window into the future.
- Maximum property occupancy.
- Included guest count for extra-guest pricing.
- Closed dates for maintenance, owner stays, or manual holds.

## P1 Rules

- Gap rules to prevent short unbookable gaps between reservations.
- Minimum number of empty nights required between stays.

If rules conflict, the system must apply the stricter valid rule or use a documented priority order. The administrator must be able to see why a date cannot be booked.

# 7. Calendar and Availability Management

Availability must be calculated from:

- Confirmed direct bookings.
- Pending-payment holds.
- Manual administrator blocks.
- Booking restrictions.
- Imported Airbnb, Booking.com, and VRBO iCal events.

## Administrator Calendar

The admin area must provide:

- Monthly and list calendar views.
- Separate calendar view for each property.
- Clear labels for direct bookings, manual holds, imported channel events, and unavailable dates.
- Ability to add, edit, and remove manual blocks.
- Ability to view the source, dates, status, and internal note for a booking or block.
- A pricing and rules calendar view showing nightly price, minimum stay, and restrictions by date.
- Synchronisation health information, including last successful refresh, feed URL, import errors, and potential conflicts.

# 8. Airbnb Booking com and VRBO iCal Synchronisation

## Import External Calendars

For each property, the administrator must be able to paste iCal URLs from Airbnb, Booking.com, and VRBO.

The system must:

- Fetch and parse external iCal feeds on a recurring schedule.
- Allow manual refresh on demand.
- Block dates from imported events.
- Avoid creating duplicate events.
- Preserve the last valid calendar data if an external feed fails.
- Log synchronisation errors for
php website design stripe web development database management api integration
Apply on Freelancer →

Project sourced from Freelancer.com. Applications happen directly on the original platform — we never collect your data.