Roomly | Hotel Booking Marketplace — Flutter App and Web Admin Panel
Roomly — a complete Booking.com-style hotel marketplace, as source code Roomly is a multi-vendor hotel booking marketplace (OTA) you deploy and operate. Hotels list room types, rates, and availability; travellers search, book, and pay; you earn a commission on every confirmed booking. It ships as four polished surfaces built on one shared backend: a Flutter guest app (iOS + Android), an SEO booking website, a hotel dashboard, and an admin panel. What makes it different: almo…
All source code listed on this site is collected from the internet. If any listing infringes your rights, please contact us and we will remove it immediately.
Description
Roomly — a complete Booking.com-style hotel marketplace, as source code
Roomly is a multi-vendor hotel booking marketplace (OTA) you deploy and operate. Hotels list room types, rates, and availability; travellers search, book, and pay; you earn a commission on every confirmed booking. It ships as four polished surfaces built on one shared backend: a Flutter guest app (iOS + Android), an SEO booking website, a hotel dashboard, and an admin panel.
What makes it different: almost every hotel item in this category is a browse-and-book UI wrapped around a fake availability model. Roomly ships a real ARI engine (Availability / Rates / Inventory) — per-date allotments, rate plans, stop-sell, min-stay rules, and transaction-safe, row-locked double-booking prevention. Two people racing for the last room? One is confirmed, the other gets a clean “no longer available”. That, plus a working front desk and commission payouts, is the depth buyers discover is missing after they buy something cheaper.
Before you buy — honest v1 scope (please read). The booking engine, payments, commission, front desk, and all four surfaces are fully working. A few integrations are deliberately scaffolded, not finished, so nothing surprises you after purchase:
- Image / media upload is URL-based. The Cloudflare R2 / S3 env surface is reserved, but no in-app upload flow ships in v1 — the demo uses public image URLs.
- Mobile push notifications are not bundled. The Flutter app has in-app notification preferences, but no push provider (FCM/APNs) is wired in.
- Transactional email is scaffolded. SMTP settings and a status badge are in place; connect a nodemailer transport to send booking emails.
The full list — including AI rate-limiting, manual payouts, and i18n — is in ️ Roadmap & honest limitations further down. None of these block the core sell-rooms-and-collect-commission flow.
Try the demo
- Live web demo: https://roomly.devsnack.dev
- Android guest app (APK): https://drive.google.com/file/d/1Z0oYyiNwAk-bhF_IcGbAolerZP5KEK5-/view?usp=sharing
Demo logins (all share the password Password123!) — each lands on its own surface:
- Admin panel: admin@roomly.demo
- Hotel owner: owner@roomly.demo
- Front-desk staff: staff@roomly.demo
- Guest: guest@roomly.demo (or tap “Continue as guest” in the app)
✨ Four surfaces, one codebase
- Guest app (Flutter): search + map, live-priced property detail, room/rate selection, Stripe / PayPal / Pay-at-Hotel checkout, booking confirmation with QR, my-bookings with refund-preview cancel, post-stay reviews, dark mode.
- Hotel dashboard: onboarding wizard, occupancy/ADR/RevPAR KPIs, a genuine rate & availability calendar with inline and bulk edits, a full front desk (check-in with room assignment, check-out, walk-ins), housekeeping board, reviews, earnings & payouts.
- ️ Admin panel: hotel approvals, per-property commission overrides, global bookings, review moderation, payout batches, and marketplace settings.
- Public booking website: server-rendered for SEO with schema.org JSON-LD, destination and property pages, full web checkout, and guest booking lookup by reference — no account required.
⚙️ Built on a real engine
- Daily-granularity ARI — inventory and rate rows per date, availability as a single indexed query (no N+1), a rolling ~24-month horizon maintained by a background job.
- Double-booking prevention — inventory decremented inside the booking transaction with row locks and re-verification under lock.
- Money done right — integer cents everywhere; commission snapshotted at confirmation so later rate changes never rewrite history.
- Commission & payouts — global rate + per-property overrides, prepaid vs pay-at-hotel handled correctly (pay-at-hotel raises a “commission due” invoice netted against the next payout).
- ♻️ Cancellations — evaluated against the policy snapshot stored on the booking, with an accurate refund preview.
- Pluggable payments — one interface, Stripe + PayPal fully implemented, Pay-at-Hotel built in, Razorpay adapter ready to key in; idempotent, signature-verified webhooks.
- Optional AI — natural-language search and recommendations over OpenAI or Gemini, server-side, that hide themselves cleanly when no key is set (the product is 100% functional with zero AI keys).
AI features & disclosure
AI-usage disclosure (per Envato policy). Roomly can optionally use a third-party AI service — OpenAI or Google Gemini, your choice — to power two features: natural-language search (e.g. “a quiet beachfront hotel under $150 with a pool”) and property recommendations. That is the only place AI is used in the product.
- Optional and off by default. No AI key is included with the item. With no key set, the natural-language search box hides itself and Roomly falls back to keyword search + popularity recommendations — the product is 100% functional with zero AI.
- Server-side only. The AI request runs on your server; the model ID comes from env (OPENAI_MODEL / GEMINI_MODEL), and no AI key is ever shipped in the mobile app bundle or exposed to the browser.
- You supply the key and pay the provider. If you enable it, OpenAI or Google bills you directly for usage (see ” Third-party service costs” below). The model only returns a validated search-filter object — it never has direct access to your database.
Tech stack
- Web: Next.js 16 (App Router), React 19, TypeScript, Tailwind CSS v4, shadcn/ui
- Database: PostgreSQL 16 + pgvector · Drizzle ORM (Neon serverless or self-hosted Postgres)
- Auth: Auth.js v5, email/password, four roles (guest, hotel owner, front-desk staff, admin)
- Jobs: Inngest · Payments: Stripe, PayPal, Pay-at-Hotel, Razorpay adapter
- Mobile: Flutter 3.35+ · Riverpod · GoRouter · freezed · dio · google_maps_flutter · flutter_stripe
- Deploy: Vercel or any Node host; bring your own Postgres — no proprietary infrastructure
What’s included
- Full source for all four surfaces + the shared REST API
- Typed Drizzle schema — 21 tables, applied to a fresh database with one command
- The “Hospitality Modern” design system, shared across web and mobile
- A branding pipeline (one-command launcher-icon regenerate for the app)
- A rich demo seed — 20 properties across 5 cities, ~24 months of inventory + rates, 262 bookings across every status, ~140 reviews, real payout batches
- An offline Flutter test suite and full buyer documentation in one documentation/ folder at the root of the download — full manual, quick-start, and a non-technical (no command line) deploy guide
- 6 months of Item Support
️ Roadmap & honest limitations
So you know exactly what you’re buying, these are intentional v1 scope choices rather than bugs — each one is also flagged at its call site in the code and in the production checklist in documentation/index.html:
- Image / media upload is URL-based. The Cloudflare R2 / S3 env surface is reserved but no in-app upload flow ships in v1; the demo uses public image URLs.
- Mobile push notifications are not included — the app has in-app notification preferences, but no push provider (FCM / APNs) is bundled.
- Transactional email is scaffolded, not wired. SMTP settings and a status badge are in place; connect a nodemailer transport to send booking emails.
- AI endpoints have no rate limiter yet — add per-user / IP throttling before exposing natural-language search publicly with real keys.
- Payouts are manual in v1 (admin runs and marks batches); automated disbursement is a future upgrade.
- i18n ships as a scaffold (English in place); full multi-locale / RTL is an extension point.
Setup in minutes
- cd web && pnpm install
- cp .env.example .env — set DATABASE_URL and AUTH_SECRET
- pnpm db:push && pnpm db:seed
- pnpm dev → open http://localhost:3000
Prefer not to touch a terminal? The bundled documentation/easy-deploy.html walks you from ZIP to a live site using only the Neon and Vercel dashboards. With no third-party keys at all, the marketplace still runs end-to-end (browse, book with Pay-at-Hotel, explore every surface). Add Stripe, PayPal, AI, or Maps keys any time to switch features on — each activates only when its keys are present.
✅ Requirements
- Node.js 20+ and pnpm
- PostgreSQL 16 with the pgvector extension (a free Neon project works out of the box)
- Flutter 3.35 or newer (Dart 3.9+) only if you build the mobile app
- Your own provider accounts for any optional integration you enable (Stripe, PayPal, OpenAI/Gemini, Google Maps, SMTP)
Third-party service costs (please read)
Roomly is sold as source code. The one-time item price covers the code and 6 months of support — it does not include any third-party service. Every optional integration is billed directly by that provider under their own pricing, not by us:
- OpenAI / Google Gemini (optional AI search & recommendations) — you pay the provider per token/request.
- Stripe / PayPal / Razorpay (optional online payments) — each charges its own transaction & processing fees.
- Google Maps (optional map view) — billed under Google’s Maps Platform pricing.
- SMTP email, hosting (Vercel/Node), and the PostgreSQL database (e.g. Neon) — billed by whichever provider you choose.
All of these are optional: with no keys set, Roomly still runs end-to-end on Pay-at-Hotel, so you can evaluate the full product before signing up for anything paid.
❓ Frequently asked questions
Do I need Stripe or PayPal to run Roomly? No. Pay-at-Hotel is built in and always enabled, so guests can book end-to-end with zero payment keys. Add Stripe and/or PayPal whenever you want online prepayment — each shows up at checkout only once its keys are set.
Is the AI required, and does it cost money? AI is fully optional. With no OpenAI/Gemini key, the natural-language search box hides itself and Roomly falls back to keyword search + popularity recommendations — a complete product with zero AI spend. If you enable it, OpenAI/Gemini bill you directly for usage.
How does the platform make money? You set a commission rate (global, with optional per-property overrides). On every confirmed booking the commission is snapshotted onto the booking in integer cents, so later rate changes never rewrite past earnings. Admin runs payout batches to hotels.
What is “pay-at-hotel commission”? When a guest pays the hotel directly at check-in, the hotel collects the full amount — so the platform is owed its commission. Roomly raises a “commission due” invoice and nets it against that hotel’s next payout, instead of losing the commission.
How are double-bookings prevented? Inventory is decremented inside the same database transaction that creates the booking, with row locks on the affected dates and a re-check under lock. Two guests racing for the last room → one is confirmed, the other gets a clean “no longer available”.
Can guests cancel themselves? Yes. Cancellation is evaluated against the cancellation policy that was snapshotted onto the booking at purchase (not the hotel’s current policy), and the guest sees an accurate refund preview before confirming.
Can I change the currency, colours, logo, and app name? Yes — the platform runs on a single configurable currency, and the documentation has a “White-label & branding” section that maps every logo, colour, app name, and bundle ID to the exact file to edit.
How do I back up my data? Everything lives in your own PostgreSQL database, so a standard pg_dump is a full backup and pg_restore is a full restore — no managed service required. The documentation gives the exact commands, a scheduled nightly example with retention, and a plain-language version for non-technical owners.
How do I update the database when a new version ships? Back up first, then bring your existing database up to the new schema without losing data — either pnpm db:push (applies only the delta and prompts before anything destructive) or versioned migrations (pnpm db:generate → pnpm db:migrate) for an auditable production history. The documentation’s “Upgrading to a future version” section walks both paths and when to use each; the demo seed is never run on real data.
Do you host it for me? No — it ships as source code you own and deploy. Hosting, the database, domains, and provider accounts are yours. The 6 months of support covers setup help and bug fixes (see the non-technical documentation/easy-deploy.html for a no-command-line path).
License & support
Sold under the standard Envato Regular and Extended license. Includes 6 months of Item Support — installation help, bug fixes, and setup guidance. You supply your own hosting, database, and provider accounts; we provide the walkthroughs, not the accounts.
- Email: devsnack26@gmail.com
- WhatsApp: +855 96 741 3911
Changelog
1.0.0 — Initial release — Four surfaces, real ARI booking engine, commission & manual payouts, pluggable payments with idempotent webhooks, optional dual-provider AI, and a rich demo seed.
Related products
More digital goods in the same category or with similar tags.
Mobile / Flutter / Full Applications
Maha - Ecommerce Flutter App
Mobile / Flutter / Full Applications
BudgetBuddy - Expense Tracker & Manager App
Mobile / Flutter / Full Applications
DealDash - Online Sell and Buy Products
Mobile / Flutter / Full Applications
StoreMax - Shopify Mobile Ecommerce App Template
Mobile / Flutter / Full Applications
Grocery App - Grocery Delivery App Flutter iOS/Android App
Mobile / Flutter / Full Applications
Sales Tracker with Agents and Shop Owner
Mobile / Flutter / Full Applications
PetCare Pet Food product & vet consulting app in flutter & website in laravel
Mobile / Flutter / Full Applications
Olivette - Multivendor Grocery System & Free Landing Page
Roomly | Hotel Booking Marketplace — Flutter App and Web Admin Panel
After successful payment, you will receive a download link for the source code