Admin Guide

The Tours admin panel is the control center for your entire tours-and-experiences marketplace. It lives under /admin, with pages served from src/app/admin/(panel)/. From here you approve operators, curate the tour catalog, oversee bookings and refunds, manage customers, edit the storefront, and configure every platform setting and integration.

This guide walks through every administrative area exactly as it ships. Paths are given relative to your site, so /admin/dashboard means https://your-domain.com/admin/dashboard.

Signing In & Access Control

Path: /admin/login

  1. Go to /admin/login and sign in with your email and password. Tick Remember me to stay signed in.
  2. Authentication issues a JWT stored in an HttpOnly cookie (admin_token); the panel layout reads it on every request.
  3. The panel then evaluates two gates before any section renders:
    • A License Gate — on non-development domains the panel only opens once the domain license is active. A warning bar appears when a license is inside its grace period (see License below).
    • On the desktop build, a 4-digit PIN gate (local, SHA-256 hashed) adds an extra lock screen.

Roles & permissions

Authorization is enforced server-side by requirePermission(action, resource) on each API route — never by hiding menu items alone.

Concept Behaviour
Super roles (VENDOR_ADMIN, SUPERADMIN) Bypass all permission checks — full access.
Standard admin users Carry a role_id; the role's permissions array (entries like settings:read, tours:update) decides what they can reach.
Denied action The API returns 403; the UI surfaces a "not allowed" state.

Manage roles, permissions, and admin users under Settings → Access (/admin/settings/users, /roles, /permissions).

Dashboard

Path: /admin/dashboard

The first screen after sign-in — an at-a-glance health check of the marketplace.

  • KPI cards — Net Revenue (gross shown beneath), Paid Bookings (with customer count), Average Order Value (with refund rate), and Customers (new in the last 30 days).
  • Catalog strip — Published Tours (draft count), Operators (pending highlighted), and Bookings in the last 30 days (all-time total).
  • Period selector — This month / 3M / 6M / 12M.
  • Revenue line chart plus a 30-day pulse box (new customers, bookings, pending operators).
  • Lists — top tours by revenue, recent bookings, pending operator applications, and the latest transactions (each links to its detail page).
  • Quick links — Tours, Bookings, Customers, Operators, Coupons, Theme, Integrations.

Bookings

The operational hub for reservations and availability.

Calendar

Path: /admin/calendar

A month/agenda view of departures and bookings across the marketplace.

Availability

Path: /admin/calendars

Per-tour departure availability — the dates a tour runs, seat capacity, and blocked dates. Availability can also sync from external iCal feeds.

Bookings

Path: /admin/bookings

Summary cards (Total, Paid, Pending, Revenue) sit above a tabbed table — All / Paid / Pending / Refunded / Failed. Columns include booking code, customer, tour, departure date, amount (with discount/coupon shown), payment method, status, and date.

The detail page shows customer information, the booked tour and departure, the travellers, a pricing breakdown (subtotal, discount, tax, total), coupon info, and the payment/gateway reference.

Confirm an offline payment

  1. Open the booking from /admin/bookings.
  2. Confirm the payment reference and amount against your records.
  3. Click Mark as paid — this confirms the booking and moves it to the Paid tab.

Issue a refund

  1. Open a Paid booking.
  2. Click Issue refund and confirm.
  3. The booking moves to Refunded and the refund is reflected in the dashboard refund rate.

Customers

Path: /admin/customers

The customer directory. Columns: name (with a Blacklisted badge when flagged), phone, email, tags, and status. Summary cards show Total / Active / Inactive / Blocked. Add and edit customers through the customer form; flag or unflag a customer to control whether they can book.

Coupons

Path: /admin/coupons

Discount codes that travellers apply at checkout.

Create a coupon

  1. Go to /admin/coupons and click New coupon.
  2. Set the code, discount type (percent or fixed), and value.
  3. Choose applies-to: all tours or a selected set.
  4. Optionally cap max redemptions, set a valid-until date, and toggle active / default.
  5. Save. The code is now redeemable at /booking/checkout.

Extras

Path: /admin/extras

Optional add-on items a traveller can attach to a booking (e.g. airport transfer, equipment hire) — name, price, and availability.

Booking Settings

Path: /admin/settings/booking

Booking rules and payment behaviour — deposit vs. full payment, cancellation windows, and related checkout defaults.

Catalog

The tours themselves and the operators who sell them.

Tours

Path: /admin/tours

A filterable table of every tour. Columns: cover + title, category, operator (Platform for in-house tours or the operator's name), price (sale price shown when set; free shown in green), rating, and status. Tabs filter by All / Draft / Pending / Published / Rejected / Archived with live counts.

Tour lifecycle

TEXT
draft → pending → published
             ↘ rejected (optional reason)
  published → archived

Create an in-house tour

  1. Click Create tour to open the editor.
  2. Fill in title, category, itinerary, inclusions, departures, pricing, and media.
  3. Save as a draft, then publish when ready.

Review an operator-submitted tour

  1. Open the Pending tab.
  2. Review the tour's itinerary, inclusions, departures, pricing, and media.
  3. Use the inline Approve action to publish it, or Reject it with an optional reason for the operator.

Operators

Path: /admin/operators

Operator accounts (tour sellers): name, tours, revenue-share %, status (pending / approved / rejected / suspended). The detail view (OperatorAdminDetail) shows their catalog and performance.

Approve an operator application

  1. Open /admin/operators and select a pending applicant.
  2. Review their profile and (optionally) adjust their revenue-share %.
  3. Click Approve — the operator can now list tours from their workspace at /operator. You can also reject, suspend, edit, or delete an operator.

Inclusions

Path: /admin/inclusions

The reusable library of "what's included" items (meals, transport, guide, entry tickets) that operators attach to a tour's inclusions list.

Master Data

Path: /admin/master-data

Shared reference data used across the catalog — categories, destinations, languages, and similar lookups.

Ratings & Reviews

Path: /admin/reviews

Moderate tour reviews: publish / hide, edit, reply, and set status (Pending / Published / Hidden).

Marketing

Influencers

Path: /admin/marketing/influencers

Manage marketing partners (influencers) who promote tours for commission — approve applicants, set commission rates, and review their referral performance and payouts. Influencers work in their own portal at /influencer.

Leads

Section Path Notes
Contacts /admin/leads/contacts Contact-form submissions; viewing marks as read; New/Read status
Enquiries /admin/leads/enquiries Tour / general enquiries
Newsletter /admin/leads/newsletter Newsletter subscribers; active/inactive; delete

Content (CMS)

The storefront is fully editable without touching code.

Section Path Editable content
Pages /admin/pages Custom/static pages: slug, title, subtitle, markdown content, image, banner, tags, SEO, per-language translations. A visual page builder backs these.
Theme Builder /admin/theme-builder Visual builder for storefront layout blocks
Hero Slider /admin/hero-slider Per-slide eyebrow, title + highlight, subtitle, desktop/tablet/mobile images, primary & secondary CTAs, sort order, active; drag-to-reorder
Menus /admin/menus Navigation menus for the storefront
Blog /admin/blogs (+ /admin/blogs/categories) Posts: title, slug, category, author, excerpt, markdown content, featured image, tags, published; plus blog categories
Media Library /admin/media Uploaded media assets
FAQs /admin/faqs Category, question, answer, sort order, active
Gallery /admin/gallery Image/video items: title, type, category, tags, description, multi-image upload, SEO; drag-to-reorder
Testimonials /admin/testimonials Name, location, rating, message, photo, tour reference, sort order, active
Partners /admin/partners Name, logo, website URL, sort order, active; bulk logo import

Images uploaded anywhere in the CMS are optimized (typically to WebP) before being stored on Cloudflare R2 — see the Customization Guide for format/dimension settings.

Apps

Paths: /admin/apps/branding, /admin/apps/desktop, /admin/apps/mobile

Branding and configuration for the optional desktop and mobile app builds: App Branding, Desktop App, and App Settings.

Settings

/admin/settings/* holds platform configuration. The most important screens are below.

Integrations (Add-ons)

Path: /admin/settings/integrations

This is the add-ons and integrations hub. It lists every integration channel (payments, email, storage, analytics, maps, plus premium channels) and every feature add-on.

Connect a channel (for example Cloudflare R2 storage or a payment gateway)

  1. Open /admin/settings/integrations and find the channel.
  2. Click Connect and enter its credentials — secrets are encrypted at rest on the server.
  3. Toggle the connection active, and mark one connection as primary per channel.

Activate a feature add-on

  1. Locate the add-on (e.g. Announcements, Support Desk).
  2. Toggle it on. A premium add-on becomes usable only when it is entitled (covered by your license) and toggled on.
  3. If an add-on is not covered by your main license, enter its purchase code on this screen — the code is validated and the entitlement is stored.

See the Integrations Guide and Add-on Development Guide for the full model.

Theme / Appearance

Path: /admin/settings/theme

A multi-tab panel controlling site identity (business name, legal name, description, logo, app icon, favicon), appearance (colors, fonts, gradients, header/footer/menu), homepage layout, image processing (format, quality, per-type dimensions), SEO, analytics IDs, localization defaults, authentication toggles, PWA, and custom code. Full details are in the Customization Guide.

Monetization & Plans

Paths: /admin/settings/monetization, /admin/settings/plans

Set the platform's operator commission and payout configuration (Monetization), and define the subscription tiers operators can be on (Subscription Plans).

Languages & Localization

Path: /admin/settings/languages

Add languages (code, name, native name, flag, locale, script, LTR/RTL direction), set a default, and open the per-language translation editor for UI strings. Tours ships with English, Hindi, Tamil, and Arabic (RTL). Related localization screens: /admin/settings/countries, /admin/settings/locations, /admin/settings/currencies.

License

Path: /admin/license

The license is enforced by the License Gate wrapping the panel (component src/components/admin/LicenseGate.tsx), backed by POST/PATCH /api/v1/admin/license. On non-development domains the panel is locked until the domain license is activated; states include active, grace, unactivated, invalid, and expired. A grace-period bar warns before expiry, and the license can be re-verified from within Theme Options. On development/localhost hosts the license is bypassed.

Other settings

Group Paths
Notifications /admin/settings/notifications (send + templates for Email / SMS / WhatsApp), /notification-log
Access /admin/settings/users, /roles, /permissions
Developer /admin/settings/api-tokens, /webhooks
Operations /admin/settings/backup (backup & restore), /activity (audit log)

Notification Templates

Path: /admin/settings/notifications

Compose and manage transactional message templates per channel (Email, SMS, WhatsApp). Templates carry a name, category, channel, subject/preheader/from fields (email), and a body with {{token}} placeholders such as {{first_name}}, {{booking_number}}, {{amount}}, {{otp}}, and {{dashboard_url}}. You can preview a template with sample data and send broadcasts to all users, a role, or specific recipients. Activating certain add-ons (e.g. Support Desk) seeds their own templates automatically.

Common Admin Workflows at a Glance

Goal Where Key action
Approve a new operator /admin/operators Select pending → Approve
Publish an operator's tour /admin/tours (Pending tab) Approve inline
Confirm an offline payment /admin/bookings Mark as paid
Refund a booking /admin/bookings (Paid) Issue refund
Create a discount code /admin/coupons New coupon
Connect storage / payments /admin/settings/integrations Connect channel
Rebrand the storefront /admin/settings/theme Edit General / Appearance
Add a language /admin/settings/languages Add + set default

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