Roxandrea is a website template for hotels, resorts, guesthouses and boutique stays, built on Bootstrap 5. The layout is responsive and mobile-ready. There are 18 pages: home, about, rooms, six room pages, restaurant, journal, six journal posts and contact.
The home page opens with a full-width photo slider and an availability bar for dates and guests, followed by photo tiles, amenities, the six rooms with their prices, guest reviews, a video band, restaurant highlights and the latest journal posts. Each room has its own page with a photo slider, details, a video tour, guest ratings and a “Request this room” button. You will also find a restaurant page with the menu, prices and opening hours, an about page, a journal with search, posts with comments and a comment form, and a contact page with a booking enquiry form and a map that loads on click. The availability bar and the room pages fill in the enquiry form for the visitor; there is no live availability. Roxandrea gives you a ready-made site for a hotel or resort.
What’s new in 3.0
Bootstrap 5.3.8 (the earlier release used Bootstrap 4.3.1 and jQuery), compiled from Sass with the design’s original proportions, and plain JavaScript with no jQuery. Swiper 14.3.0 replaces Owl Carousel on the hero, the guest reviews and the room photos, PhotoSwipe 5.4.4 replaces Magnific Popup for the Instagram photos, a native dialog plays the videos, a small reveal module replaces Waypoints and animate.css, the booking dates use the browser’s own date field instead of a jQuery datepicker, and five plugins that nothing used are gone. Icons are Lucide SVGs, and the social logos are a small Font Awesome subset (the Twitter bird is now the X logo, and the Google+ link is gone). npm run build (Dart Sass and esbuild) compiles one minified stylesheet and one script.
Lighter pages: the home page went from 18.2 MB and 98 requests to 3.1 MB and 49 requests, and the download went from 9.34 MB to 8.41 MB with 18 pages instead of 8. Every photo has an AVIF version with the JPEG as the fallback, the oversized photos are re-encoded, and the full-screen preloader is gone, so pages show at once.
No third-party requests: Poppins and Playfair Display are self-hosted, the map on the contact page is an OpenStreetMap map that loads only when a visitor clicks “Show map”, the video buttons load a stock hotel clip from YouTube’s privacy-enhanced player only after a click, and a Google Analytics 4 snippet stays commented out until you add your own ID. Before, the home page loaded from 12 outside hosts, including Google Fonts, Google Maps and an autoplaying YouTube background video; that band now shows its photo.
Working booking enquiry and comment forms: the availability bar on the home page and the “Request this room” buttons open the booking enquiry on the contact page with the dates, room and guests filled in, and the enquiry and journal comment forms send through php/send-email.php and php/comment.php (PHP on your host), with validation, a spam trap and an in-page message. The enquiry is a request to the hotel, not a live booking; the README explains how to point the availability bar at a booking engine. Before, the availability button, the contact form and the comment form posted nowhere.
Accessibility: a skip link and a main landmark on every page, one h1 per page (the home page had three), labelled booking fields, names on icon-only links, visible focus rings, 44 px slider dots, reduced-motion support and WCAG AA text contrast, with a darker gold for gold text on light backgrounds and for the white-label buttons (5.3:1 on white, was 3.0:1), darker grey meta text, and scrims behind white text on photos and behind the menu over the hero.
Fixed: “View Room Details” on the home page went to a page that did not exist, and every room linked to one page titled “Restaurant”; the pages scrolled sideways on phones (the room cards’ arrows and the booking bar); the room photo arrows showed only on mouse hover and are now always visible at 48 px; the hero autoplay could not be paused from the keyboard and now pauses on hover or keyboard focus, with dots inside the photo; the room ratings were five checkboxes sharing one id; and every link now goes to a real page, where each page had 13 to 49 links that pointed nowhere.
Demo content for one fictional hotel: six room types with their own prices ($140 to $320 a night) and pages, a restaurant menu named after its photos, three different guest reviews shown with initials instead of portraits, six journal posts with comments, and contact details in place of placeholder text. Three photos of posing travellers are replaced with Unsplash photos.