Hut Booking Platform for a French Alpine Club
Designed and built a clickable booking platform for an alpine club in Chamonix that runs 34 mountain huts: multi-night trips booked as one record, a warden app for tonight's guests on a satellite link, and a club console for bookings, closures and official conditions shown with their source and date.
Most of our work is under NDA. Per agreement, we can share the work but not the company details - all names and identifying information shown here have been changed.
Network dashboard, bookings with an availability grid, booking detail, the warden's Tonight screen and conditions and closures. Each of the 30 demo trips opens its own booking detail.
Online sale of tonight's beds stops at noon (club policy), after which only the warden sells the rest. Guests not in by the 18:30 arrival window are highlighted, and a no-show needs a confirmation.
Refunds above €500 need a second approver in Finance (club policy). Cancelling a night shows the refund under the club's three cancellation bands, and waiving the fee needs a reason.
34 huts in 7 massifs and 14 communes, 30 multi-night trips with 113 trekkers, 12 stages, 8 route notices, 3 closures and a warden night of 16 bookings at one hut.
Each of the club's huts took bookings its own way: by phone to the warden, by email to the Chamonix office, or through a hotel widget that could book only one night at one hut. A trekker planning six nights had to contact six huts, wardens kept the guest list in a notebook and called the valley on a satellite phone, and the office could not tell the communes how much tourist tax had been collected, or where.
Hut to Hut books every night of a hut-to-hut trip in one record, from one payment. Wardens run tonight's guests, check-in, no-shows and dinner counts from an offline-first app that syncs over satellite, and the club office sees the whole network tonight, moves or refunds nights under its own policy, and publishes route notices next to the official avalanche bulletin.
A hut trip is several nights in several huts, run by wardens who are often offline, in mountains where conditions change by the hour. Each night also carries its own price, tourist tax and personal data rules.
A six-night loop meant six separate bookings. When night four was full, the other five were already paid for. Trekkers need to see availability for every night before they pay anything, and book all of it or none.
Wardens work with satellite broadband or a low-data link, sometimes none. Check-ins, no-shows and walk-ins have to be recorded on the device, sent as small records on a daily data budget, and reconciled with changes the office made in the meantime.
The avalanche danger level comes from the official Météo-France bulletin on the European 1 to 5 scale. The product must show it as issued, with its date, and never call a route safe. The decision to go stays with the trekker.
Communes set the tourist tax rate and under-18s are exempt by law. Dietary needs can reveal health information and are special-category data under the GDPR, the 14 allergens must be known per meal, card payments need 3-D Secure, and no 14-day withdrawal right applies to dated accommodation.
Mapped 9 user roles, from trekker and group leader to warden, reservations, finance and admin, and 47 screens: 15 for trekkers, 10 in the warden app and 22 in the club console. Defined the data model for huts, rooms and bunks, seasons, stages, trips, night bookings, holds, waitlists, rates, tourist tax, operator allocations, resupply and sync records. Wrote down the rules the design follows: the GDPR and Loi Informatique et Libertés, the tourist tax, the Consumer Rights Directive, PSD2 strong customer authentication, EU allergen rules, the BERA avalanche bulletin and 112.
Built 5 key screens on a production dashboard kit: the network dashboard with tonight by hut and a 14-night occupancy heatmap, bookings with filters, CSV export and a new booking sheet with a 15-minute hold, the booking detail with move, cancel and refund, the warden's Tonight screen with check-in, no-show and close the night, and conditions and closures with the bulletin feed and warden reports to review. All actions run on local state.
Online payments with 3-D Secure (such as Stripe or Adyen), offline-capable card readers at the hut, the Météo-France bulletin and weather feeds, IGN or Mapbox offline maps, Starlink or Iridium sync, the club's membership API, Brevo, Postmark and Twilio messaging and a Sage or Pennylane export. Staff sign-in by role and hut, an append-only audit log, four languages, and the remaining screens: the trekker app and route planner, offline trip pack and emergency screen, the rest of the warden app, tourist tax returns and reports.
A booking shows every night with its hut, room, meals, packed lunches, arrival window, check-in time and price with the member discount. One night can be moved or cancelled on its own, and a hut closure offers a move or a full refund.
The warden app shows the connection, the last sync, what is waiting in the outbox and the day's data budget. Check-in, payment at the hut, no-shows and closing the night work from the guest list, and dinner counts show each diet and allergy.
The bulletin feed shows each massif as issued, including when no bulletin is published in summer, with a link to the official one. Warden reports wait for the club's approval, and notices are checked against banned words such as safe, no risk and guaranteed.
The dashboard lists every hut's beds, check-ins and last sync, red after 24 hours, and a needs attention list for trips hit by a closure, refunds above the threshold and operator beds about to be released. Dietary needs show only with the guest's consent.

Designed and built a clickable league management console for a volunteer-run county football association in Aarhus: a weekend dashboard with referee coverage and weather risk, every fixture with its officials and team sheets, results checked against three submissions, and discipline cases that turn cards into sanctions from the association's own tariff.

Designed and built a clickable route setting app for a chain of 5 bouldering and rope climbing gyms around Denver: every climb with the setter's grade next to the members' view, setting sessions run from strip and set checklists, and hazard reports that reach staff on shift at once and close a climb in one tap.
Enterprise Software Engineering - Human + AI
Contact Us
© 2026 - Copyright. All Rights reserved Oceanlab
Location
Global Headquarters
21 Merchant Road, 3rd Floor, Singapore 058267
Main corporate office and leadership operations
North America Office
548 Market Street, PMB 12345, San Francisco, CA 94104
Client operations and business development
India Office
402 Shivalik Shilp II, SG Highway, Ahmedabad 380015
Engineering and delivery center
Enterprise Software Engineering - Human + AI
Contact Us
Locations
Global Headquarters
21 Merchant Road, 3rd Floor, Singapore 058267
Main corporate office and leadership operations
North America Office
548 Market Street, PMB 12345, San Francisco, CA 94104
Client operations and business development
India Office
402 Shivalik Shilp II, SG Highway, Ahmedabad 380015
Engineering and delivery center
© 2026 - Copyright. All Rights reserved Oceanlab