Platform Documentation

Complete feature reference for WeSellTours — a multi-tenant travel booking SaaS platform.

Platform Overview

WeSellTours enables tour operators, DMCs, and travel agencies to create branded booking storefronts selling multiple service types from a single dashboard. The platform supports multi-vendor marketplaces, Stripe Connect payments, and white-label storefronts.

Supported Service Types

Hotels Room types, per-night pricing, amenities, star ratings, multi-room bookings
Tours Day trips, multi-day tours, itineraries, adult/child pricing, group sizes
Car Rentals Daily/weekly pricing, vehicle specs, mileage limits, deposits
Boats Yachts, speedboats, catamarans, hourly/daily pricing, routes, crew info
Events Ticket types, recurring events, online/in-person, capacity management, waitlists
Spaces Meeting rooms, coworking, studios, hourly/daily pricing, seating arrangements
Flights Airlines, seat types, baggage, stopovers, departure/arrival airports

Operator Onboarding Operator

Signup Wizard

A 5-step guided signup flow at /operator/signup:

Subdomain validation checks minimum length (3 chars), reserved words (www, api, admin, app, etc.), and uniqueness in real-time via /operator/api/check-subdomain/:subdomain.

Setup Wizard

After signup, a 4-step setup wizard at /operator/setup:

Completing the final step sets the tenant status to active and launches the storefront.

Operator Dashboard Operator

The main dashboard at /operator/dashboard displays:

The sidebar navigation links to service management pages, bookings, settings, subscription, storefront preview, and logout.

Service Listings Management Operator

Operators manage all service types through the admin panel at /admin/*. Each service type has full CRUD operations:

ServiceListCreateEditDelete
Hotels/admin/hotels/admin/hotels/create/admin/hotels/:id/editDELETE /admin/hotels/:id
Tours/admin/tours/admin/tours/create/admin/tours/:id/editDELETE /admin/tours/:id
Cars/admin/cars/admin/cars/create/admin/cars/:id/editDELETE /admin/cars/:id
Boats/admin/boats/admin/boats/create/admin/boats/:id/editDELETE /admin/boats/:id
Events/admin/events/admin/events/create/admin/events/:id/editDELETE /admin/events/:id
Spaces/admin/spaces/admin/spaces/create/admin/spaces/:id/editDELETE /admin/spaces/:id
Flights/admin/flights/admin/flights/create/admin/flights/:id/editDELETE /admin/flights/:id

Additional listing features:

Booking Management Operator

Manage bookings at /admin/bookings:

Booking statuses

StatusDescription
pendingAwaiting payment or confirmation
confirmedPayment received or manually confirmed
processingBeing fulfilled
completedService delivered
cancelledCancelled by customer or operator (refund issued if paid via Stripe)
rejectedRejected by operator

Settings & Branding Operator

Configure your storefront at /operator/settings with tabbed sections:

Additional admin settings

Platform-wide settings at /admin/settings cover site name, logo, favicon, default currency, and feature toggles.

Payments & Stripe Connect Operator

Stripe Connect onboarding

Operators connect their Stripe account via the Account Links API (Standard accounts):

The dashboard shows a wizard banner until Stripe is fully connected (charges enabled + payouts enabled).

Payment methods

Platform commission model

PlanPlatform Commission
Free0.5% per booking
Starter0.3% per booking
Professional0%
Business0%

Commission is collected via Stripe's application_fee_amount on each PaymentIntent. Operators on Professional plans and above pay no platform commission.

Webhook

Stripe Connect webhooks are handled at /webhooks/stripe-connect (raw body parsing, before JSON middleware).

Subscription Plans Operator

Manage your subscription at /operator/subscription. Plans include usage limits and feature flags:

All new accounts start with a 14-day trial. Usage tracking displays current counts vs plan limits.

Content Management Operator

CMS features accessible via the admin panel:

Advanced Features Operator

User management

Full user CRUD at /admin/users — create, edit, delete, change role, change status, reset password.

Roles & permissions

Custom roles with permission arrays at /admin/roles. Assign roles to users.

Review moderation

Moderate customer reviews at /admin/reviews — approve or reject pending reviews.

Coupons

Create discount codes at /admin/coupons with:

Wallet management

Admin wallet tools at /admin/wallets — view balances, add credit, deduct funds.

Vendor payouts

Manage vendor payout requests at /admin/payouts — approve, reject, mark as paid.

Enquiries

View and reply to customer enquiries at /admin/enquiries.

Verification requests

Review identity/business verification documents at /admin/verifications.

System logs

View and clear system logs at /admin/logs.

Tools

Admin tools at /admin/tools — clear cache, reindex data.

Vendor Dashboard Vendor

Vendors (service suppliers invited by operators) have a dedicated dashboard at /vendor/dashboard showing:

Vendor Service Management Vendor

At /vendor/services, vendors can:

Service creation and editing is done via the admin panel routes (/admin/*) with vendor-scoped access — vendors only see and manage their own listings.

Bookings & Enquiries Vendor

Bookings

At /vendor/bookings:

Enquiries

At /vendor/enquiries:

Vendor Payouts Vendor

At /vendor/payouts:

Browsing & Search Customer

Storefront browsing

Customers browse operator storefronts via subdomain or slug-based URLs. Each storefront shows only services enabled and belonging to that tenant:

Search

Unified search across all service types at /search — searches title and description with optional type and price filters.

Booking Flow Customer

Creating a booking

The booking flow at /bookings/create/:serviceType/:serviceId supports all 7 service types with service-specific pricing logic:

Tax calculation: 7% VAT applied to subtotal after any discount.

Coupon support

Customers can apply coupon codes at checkout via /bookings/apply-coupon. Validates code, expiry, service type, and usage limits.

Payment

At /bookings/:id/payment, customers select a payment method:

After payment, a confirmation page displays at /bookings/:id/confirmation with booking code and details.

Cancellation

Customers can cancel pending or confirmed bookings at /bookings/:id/cancel. Stripe refunds are issued automatically for Stripe-paid bookings. Wallet credits are refunded if used.

Customer Account Customer

Authentication

Profile

At /user/profile — update name, phone, address, date of birth, gender, bio. Change password at /user/change-password.

My bookings

At /user/bookings — view all bookings with status filtering, stats (total, upcoming, completed, cancelled).

Wishlist

At /user/wishlist — save and manage favourite services.

Reviews

At /user/reviews — view submitted reviews with status, ratings, and vendor replies.

Wallet

At /wallet:

Messages

At /messages:

Notifications

At /user/notifications — view and manage notification preferences.

Verification

Submit identity/business verification documents for review.

Multi-Tenancy

Tenant routing

The platform supports two tenant routing modes:

The tenant middleware (identifyTenant) runs on every request, resolving tenant from host or path and attaching branding, theme, settings, and contact info to the request/response context.

Data isolation

Every service listing, booking, review, and enquiry is scoped to a tenant. The admin panel and vendor panel filter all queries by tenant or vendor ID.

Tenant cache

Tenant lookups are cached in-memory with a 5-minute TTL. Cache is cleared when tenant settings are updated.

Storefront branding

Each tenant storefront uses custom branding from res.locals: name, logo, primary/secondary/accent colours, favicon. CSS variables are generated from the tenant's theme configuration.

REST API

Public and authenticated API endpoints at /api/*:

Authentication

MethodEndpointDescription
POST/api/auth/loginLogin, returns JWT (7-day expiry)
POST/api/auth/registerRegister new user, returns JWT
GET/api/auth/meGet authenticated user (requires JWT)

Listings (public)

MethodEndpointFilters
GET/api/hotelscity, stars, minPrice, maxPrice, page, limit
GET/api/tourscity, category, minPrice, maxPrice
GET/api/carscity, carType, minPrice, maxPrice
GET/api/boatscity, boatType, minPrice, maxPrice
GET/api/flightsfrom, to, date, airline
GET/api/newscategory, page, limit
GET/api/searchq, type, limit
GET/api/gatewaysAvailable payment methods

Each listing endpoint also has a detail route: /api/:type/:id.

Authenticated endpoints

MethodEndpointDescription
GET/api/bookingsList user's bookings
POST/api/bookingsCreate booking
POST/api/wishlist/toggleAdd/remove wishlist item
GET/api/wishlistGet wishlist
POST/api/reviewsSubmit review (pending moderation)
GET/api/reviews/:type/:idList approved reviews
POST/api/enquiriesSubmit enquiry (no auth required)

Platform Administration Superadmin

Superadmin panel at /superadmin for platform-wide management:

Dashboard

Platform overview with total tenants, active tenants, total users, total bookings, total revenue, MRR, subscription breakdown, monthly revenue chart (12 months), and tenant growth trend.

Tenant management

Billing & plans

User management

Analytics, settings, and logs

Email Notifications

The email service supports SMTP and SendGrid providers with tenant-branded layouts:

Emails use tenant branding (colours, name, logo) when sent from a tenant context.