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
- Go to
/admin/loginand sign in with your email and password. Tick Remember me to stay signed in. - Authentication issues a JWT stored in an HttpOnly cookie (
admin_token); the panel layout reads it on every request. - 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
- Open the booking from
/admin/bookings. - Confirm the payment reference and amount against your records.
- Click Mark as paid — this confirms the booking and moves it to the Paid tab.
Issue a refund
- Open a Paid booking.
- Click Issue refund and confirm.
- 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
- Go to
/admin/couponsand click New coupon. - Set the code, discount type (percent or fixed), and value.
- Choose applies-to: all tours or a selected set.
- Optionally cap max redemptions, set a valid-until date, and toggle active / default.
- 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
draft → pending → published
↘ rejected (optional reason)
published → archived
Create an in-house tour
- Click Create tour to open the editor.
- Fill in title, category, itinerary, inclusions, departures, pricing, and media.
- Save as a draft, then publish when ready.
Review an operator-submitted tour
- Open the Pending tab.
- Review the tour's itinerary, inclusions, departures, pricing, and media.
- 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
- Open
/admin/operatorsand select a pending applicant. - Review their profile and (optionally) adjust their revenue-share %.
- 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)
- Open
/admin/settings/integrationsand find the channel. - Click Connect and enter its credentials — secrets are encrypted at rest on the server.
- Toggle the connection active, and mark one connection as primary per channel.
Activate a feature add-on
- Locate the add-on (e.g. Announcements, Support Desk).
- Toggle it on. A premium add-on becomes usable only when it is entitled (covered by your license) and toggled on.
- 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