Product Overview

Welcome to Tours — a complete, production-ready tours & experiences booking marketplace you can deploy, brand, and sell as your own. This page introduces the product: what it is, who it's for, the user roles and portals, the add-on ecosystem, and the technology behind it.

Ready to get running? Jump to the Quick Start or the Installation Guide. For the big-picture business case, read on.

What Tours Is

Tours is a single, self-contained Next.js 16 application. There is no separate API server, no microservices, and no mobile codebase to wire up — the public storefront, all four portals, the REST API, the install wizard, and the admin panel live in one deployable project and run from one npm run build / npm run start.

Out of the box, Tours gives you everything needed to launch a tour-booking business:

  • A public storefront at / — marketing pages, a tour catalogue, search by destination, and booking checkout.
  • Tours — rich listing pages with a day-by-day itinerary, inclusions, photo galleries, and traveller reviews.
  • Departures — dated, priced, capacity-limited options of a tour, with seasonal rates and availability.
  • Extras — optional add-ons a traveller can attach to a booking (equipment, transfers, upgrades).
  • Coupons — promotional discounts applied at checkout, validated and re-priced server-side.
  • Booking checkout — a built-in PayPal gateway plus offline payment methods, always re-priced on the server.
  • Blogs & content pages — content marketing built in.
  • Operators — public operator profiles plus an operator workspace for listing and running tours.
  • A customer dashboard — bookings, payments, reviews, wishlist, messages, and notifications.
  • An influencer / affiliate program — referral links, commissions, and payouts.
  • An admin panel — manage every part of the platform without touching code.

Everything is backed by PostgreSQL using plain, parameterized SQL — no ORM and no migration framework. The schema is created idempotently by the install wizard and ensure*() helpers, so a fresh download sets itself up on first run.

A note on vocabulary. The product speaks in tour terms — tour, operator, traveller, departure, inclusion, extra, booking. For stability, the underlying database keeps table and column names from an earlier build (a tour is a listings row, an operator is a hosts row, a departure is a units row). You only ever see those names in SQL examples; the UI and docs use tour vocabulary throughout.

White-Label by Design

Tours is built to be resold and rebranded. Branding, content, currency, and locale all come from settings, never from hardcoded values:

  • Branding — name, logo, colours, and theme are configured in the admin, not baked into the code.
  • Currency & locale — money is stored in minor units (cents) and formatted for the viewer; the display currency comes from settings and records, not a fixed EUR.
  • Content — marketing pages, blogs, FAQs, testimonials, and hero sliders are all editable data.

Because you receive the full source code, you own the deployment, the data, and every customisation — there is no per-seat SaaS fee and no vendor lock-in. Host it wherever you like.

Who It Is For

You are… Tours gives you…
A solo tour operator A storefront, checkout, and booking area ready to brand and launch.
A tour marketplace Multiple operators, commissions, payouts, and reporting.
A travel agency / DMC A resaleable, white-label platform you can deploy per client.
A developer A clean Next.js + TypeScript codebase with full source and no lock-in.

The Roles & Portals

Tours ships with distinct experiences, each on its own URL space, all sharing one codebase and one database.

Role Portal What they do
Admin /admin Run the whole platform: tours, operators, customers, bookings, payments, marketing, settings, add-ons, and license.
Operator /operator List and manage tours, set departures, pricing and availability; handle reservations, earnings, payouts, analytics.
Traveller /customer Browse and book tours, manage bookings and payments, leave reviews, save a wishlist, and message operators.
Influencer /influencer Promote tours with referral links, track commissions, request payouts, and grab marketing materials.

The public storefront at / is open to everyone — visitors browse tours, destinations, operators, and blogs, then sign up and book.

What the Admin Panel Covers

The admin panel (/admin) is data-driven and organised into modules, including:

  • Catalog — tours, destinations, inclusions, extras, operators, and calendars.
  • Marketing — coupons and the influencer / affiliate program.
  • Bookings & Revenue — bookings, payments, and operator payouts.
  • Customers & Leads — customer records, enquiry leads, and reviews.
  • Content — blogs, pages, FAQs, gallery, hero slider, testimonials, partners, and why-choose-us.
  • Settings — payments, currencies, tax, booking rules, countries, locations, languages, roles & permissions, users, integrations, theme, backup, API tokens, webhooks, notifications, and monetization.

The API

Every user-facing surface a mobile or headless client needs is exposed as a REST endpoint under src/app/api/v1/**/route.ts — not just as a server-rendered page. Handlers use shared helpers (ok() / err() / serverErr()) and guard authentication first with getCustomerId / getOperatorId / getSession.

An admin-gated interactive reference lives at /api/docs/v1 (rendered with Scalar over an auto-generated OpenAPI spec). The spec is produced from the route handlers by npm run gen:openapi, so it stays accurate as the API evolves. See the API Documentation for details.

The Add-on Ecosystem

Tours keeps the core lean and delivers advanced capabilities as built-in add-ons. There are over 60 add-ons bundled in the source (src/product/addons/) — there is no separate file to upload or zip to install. Each add-on is unlocked by a combination of license entitlement and an admin toggle.

Add-ons fall into two groups:

  • Channels — pluggable providers for payments, storage, email, live chat, analytics, video, AI, and more (for example: Stripe, PayU, Airwallex, MercadoPago, dLocal, eWAY, Mux video, Tidio live chat, GA / Meta Pixel / Clarity / PostHog / TikTok analytics, SMS, and WhatsApp).
  • Features — functional modules such as maps, two-factor auth, audit logs, privacy / consent, and an AI chatbot.

You start with a focused core and switch on exactly the capabilities your business needs, when your license entitles them. On a development host the entitlement check is bypassed, so you can explore everything locally before launch.

See the Add-on Development Guide to learn how add-ons are structured and how to build your own.

Technology Stack

Tours is a modern, all-TypeScript stack — no PHP, no Java, and no separate backend to operate.

Layer Technology
Framework Next.js 16 (App Router) + React 19
Language TypeScript 5
Database PostgreSQL via @neondatabase/serverless — raw sql\`` tagged-template queries, no ORM
Styling Tailwind CSS 3 with design tokens (brand-* primary, ink-* neutrals)
Auth Custom JWT (jose + jsonwebtoken); admin uses an admin_token cookie, members a signed one
Passwords bcryptjs
Email nodemailer
File storage AWS S3 SDKCloudflare R2 (and other S3-compatible providers)
Images sharp (resize / format conversion)
Maps leaflet / react-leaflet
PDF jsPDF + jspdf-autotable (invoices, vouchers)
Icons lucide-react + react-icons

Because it is one Next.js app, the storefront, portals, and API all run from the same build. The schema is created on first run by the /install wizard or the ensure*() helpers — there are no manual migrations to maintain.

What You Get on First Run

A fresh download has no database configured, so the app redirects to the install wizard at /install. It checks requirements, collects your database connection, activates your license, creates your admin account, and saves your site settings — then your storefront is live. See the Installation Guide for the full walkthrough.


© CreativeCape Solutions · creative-cape.com · support@creative-cape.com