Atrip Booking
A two-sided hotel booking platform for Atrip, a Vietnamese travel company: a management tool for partner hotels and an internal booking tool for Atrip's staff, sharing one real-time inventory so rooms never double-book.
- React
- NestJS
- Booking Platform
- Platform
- Web App
- Services
- Web & Mobile Apps, Integrations
- Year
- 2026
Atrip, a flight-ticket agency, wanted to book hotels for its own customers without routing through external OTAs — which cost commission and hid the customer data. Partner hotels, meanwhile, needed a simple, affordable way to manage rooms and bookings. The hard part was serving both from one system without ever overbooking.
Two React portals talk to one shared NestJS + PostgreSQL API, so a single real-time inventory pool powers both sides. Partner hotels get an operations tool — booking search, a room-grid calendar, room types and physical units, a master/custom amenities catalog, seasonal price overrides with a 30-day preview, discount codes, VAT invoices, reports, staff management, and self-service onboarding with an e-contract flow whose profile edits queue for Atrip review. Atrip's internal team gets a fast OTA console — real-time room search across every partner showing net price plus markup, partner management, and pricing control built on one rule: a system-wide default markup (15%) that each hotel or individual booking can override, resolved as hotel.override ?? default. Every internal action is audit-logged, and count-based availability on the shared pool means the two sides never overbook.
Atrip gets a commission-free booking channel it owns end to end — real-time inventory, its own customer data, and pricing it controls — while partner hotels get a free operations tool in return for sharing live availability. A genuine win-win, architected to grow into later phases.
- ✓Two portals on one shared, real-time inventory — no overbooking
- ✓Net + markup pricing with per-hotel and per-booking overrides
- ✓Self-service hotel onboarding with review-gated e-contracts
Internal operations sign-in
The staff-only side of Atrip. Admins sign in behind reCAPTCHA to approve hotels, manage markups and run bookings — every action written to an audit log.
Real-time room search
Atrip staff search every partner hotel at once. Each result shows the net rate next to the sell price with markup applied (+15%), flagged real-time — then 'book at this hotel' opens the flow and holds the room for 15 minutes.
Partner hotel management
One console over every partner: total partners, active vs paused, live room count and 30-day revenue up top, then a per-hotel table with status, effective markup, revenue, bookings and occupancy.
Markup & pricing control
Pricing is one rule: a system-wide default markup of 15% that any hotel can override. The screen resolves hotel.override ?? default, showing each hotel's effective markup, 30-day revenue and margin, and whether it runs on default or an override.
Partner contract templates
Atrip owns the e-contract templates used at onboarding — versioned HTML + Handlebars with required placeholders, marked default and active, previewable and archivable, so every partner signs from one source of truth.
Hotel portal sign-in
The partner side. Hotels sign in to manage rooms, pricing, bookings and guests — reCAPTCHA-protected, with a link to self-register and start receiving real-time bookings from Atrip.
Self-service onboarding
Becoming a partner is a single form — hotel name, contact, phone, email — with terms consent. Atrip only reviews once the hotel completes its profile and submits for approval from inside the portal.
Book a room for a guest
Inside the hotel portal, staff search their own live availability for a stay. A rich room panel — photos, bed setup, size and amenities — sits beside the price, and 'create booking' starts the guest form.
Room-grid calendar
A Gantt-style timeline of every physical room by day. Hovering a booking reveals guest, room, source and total at a glance; an empty cell starts a new booking. Colour-coded by status — booked, checked-in, checked-out, cancelled, no-show.
Room types & net pricing
Inventory is modelled as room types (template + amenities + one net price) and physical units. The type view shows capacity, bed setup, size, amenities and the net rate per night.
Physical room board
The unit side of inventory: every room grouped by floor and filterable by live status — vacant, occupied, arriving, cleaning, maintenance or locked — each card showing its type and current state.
Amenities catalog
Two layers: read-only master amenities from Atrip's catalog — pool, gym, restaurant, spa, airport shuttle and more — that any hotel can use, plus custom amenities each hotel manages itself and surfaces on its public profile.
Seasonal price overrides
Base price holds; date-based overrides for seasons, weekends and holidays layer on top per room type, with booking-time overrides taking top priority. A 30-day price calendar previews exactly what each night will cost.
Hotel profile & settings
The hotel's public profile — name, star rating, description, contact and photos — snapshotted onto every booking. Edits queue for Atrip review (24–48h) while guests keep seeing the current version.
Let’s talk about your project.
Tell us what you’re building. We’ll reply with a clear, honest take on scope, timeline and price — usually within a day.
AI-first · Freelance pricing · Made for Europe