Back to Case Studies Hospitality · SaaS · Mobile · Payments

A Short-Term Rental Platform Built From Scratch

Four products. One API. Zero platform commission.

4
Products shipped
1
Unified API layer
0%
Platform commission
annashreestays.com
annashreestays.com
9:41
annashreestays.com

Most short-term rental operators live inside Airbnb or Vrbo and pay the platform tax on every single booking — forever. Annashree Stays needed something different: the infrastructure to own the guest relationship directly. We built the whole stack.

Industry Hospitality · Short-Term Rental
What we built A direct booking website, custom REST API, internal CRM portal, and a mobile app — four products sharing one data layer, with zero Airbnb commission.
The shift From full dependency on third-party platforms to owning the guest relationship, the data, and the revenue — end to end.

The problem

Running a short-term rental business through Airbnb or Vrbo means paying their commission on every booking, operating within their rules, and never truly owning the guest relationship. Every booking that comes through a third-party platform is a booking where the platform holds the customer data, controls the cancellation policy, and takes a cut before a dollar reaches the operator.

Annashree Stays had properties near the Kentucky Horse Park in Lexington and a growing guest list — but no infrastructure of its own. There was no direct booking channel, no way to communicate with guests outside of the platform's messaging system, and no operational view of the business beyond what Airbnb's dashboard showed. As the property portfolio grew, so did the dependency on a platform they had no control over.


How we built it

We designed and built four interconnected products that together give Annashree Stays full ownership of the booking stack.

The guest-facing site is built in Next.js 15 with React 19 and the App Router. Tailwind CSS handles styling. The site shows live property listings with rich detail pages, real-time availability calendars, and a full Stripe-powered checkout. Route Handlers under /app/api/ act as a thin BFF layer — they call Launch Lex Connect server-side so the browser never talks directly to internal API base URLs. This keeps the architecture clean and gives us a caching layer for expensive lookups.

Launch Lex Connect is the branded name for the custom REST API that sits at the centre of the entire system. Built in Express and TypeScript with ESM modules, it is the authoritative source of truth for listings, availability, payment intents, booking records, guest sessions, and notifications. MongoDB with Mongoose handles persistence. Stripe server-side handles payment orchestration. JWT and cookie-based auth manage sessions. Transactional email runs through SMTP. The API also exposes iCal feeds for calendar sync with external platforms where needed.

The CRM portal is a Vite and React application using MUI for the admin interface. Operators use it to manage properties, view and manage bookings, configure pricing and availability, and access guest history. MUI's data grid handles large booking tables. Date pickers handle availability configuration. The portal is authenticated separately from the guest surface — operator sessions are managed through Launch Lex Connect with role-based access.

The mobile app is built in Expo with expo-router for navigation. Renters can browse properties, check availability, and complete bookings with native Stripe Elements. Google and Apple sign-in are both configured. Push notifications are sent for booking confirmations, check-in reminders, and property updates. The app is another client of Launch Lex Connect — it calls the same API endpoints as the web app, with no mobile-specific backend surface required.

Architecture

One API. Built to scale across properties.

Launch Lex Connect is the architectural centrepiece — every product in the system is a client of the same REST API. The infrastructure is built for operators running multiple properties: one source of truth for listings, availability, payments, and bookings regardless of which surface a guest or operator is using. Adding a new property doesn't mean rebuilding anything.

Annashree Stays system architecture diagram
Tech Stack

Built for ownership, not dependency

Every technology choice was made to give the operator full control — no vendor lock-in beyond payment processing, no black-box platform logic.

Guest Site (Next.js)
Next.js 15
React framework, App Router, SSR, Route Handlers
React 19
UI component layer
TypeScript
Type safety throughout
Tailwind CSS
Utility-first responsive styling
Stripe (client)
Checkout Elements, payment UI
Launch Lex Connect API
Node.js
Runtime
Express
REST API framework
TypeScript (ESM)
Full type safety, modern module system
MongoDB
Primary document datastore
Mongoose
Schema modeling and data validation
Stripe (server)
Payment intents, webhook handling
JWT / Cookies
Session authentication
Helmet / CORS
HTTP security hardening
SMTP
Transactional booking emails
iCal
Calendar sync feeds
Axios
Outbound HTTP calls
CRM Portal
Vite
Build tool, dev server
React
Admin UI framework
TypeScript
Type safety
React Router
Client-side routing
MUI (Material UI)
Component library — data grid, date pickers, forms
Emotion
CSS-in-JS styling engine under MUI
Mobile App
Expo
React Native framework and build tooling
expo-router
File-based native navigation
React Native
Cross-platform mobile UI
TypeScript
Type safety
Stripe (native)
In-app payment flow
Google Sign-In
OAuth authentication
Apple Sign-In
Platform authentication
Push Notifications
Booking and check-in alerts
Location (Expo)
Property proximity features
Shared Packages
TypeScript types
Shared type definitions across all products
Auth UI helpers
Shared authentication logic
Currency utilities
Consistent money formatting across surfaces

The result

Annashree Stays now has the infrastructure to take bookings directly, manage its full property portfolio from a single operator dashboard, and reach guests through a native mobile app — without Airbnb, Vrbo, or any other platform taking a cut of every transaction. The operator owns the guest data, the booking history, the cancellation policy, and the checkout experience. Launch Lex Connect serves as the backbone: one API, four clients, one source of truth. As the property portfolio grows, the infrastructure grows with it.

4
Products shipped
1
Unified API layer
0%
Platform commission
100%
Guest data ownership

Have a project in mind?

We keep our client list intentionally small so every project gets the full team. If you're ready to build something that actually works — not just looks good in a demo — let's talk.