Chada - Travel Agency Manager
Chada Travel Agency Manager - Manage Tours, Visa Countries, bookings, documents, and manual payments in WordPress.
by Chada.Dev · github.com/markwebdev86/chada-travel-agency-manager · website
Install
No release zip yet. The repository archive installs, but the folder name will carry the branch suffix and updates will not flow:
wp plugin install https://github.com/markwebdev86/chada-travel-agency-manager/archive/refs/heads/main.zipChada - Travel Agency Manager is a WordPress plugin for Tours, Visa Countries, customer applications, bookings, documents, and
manual payments. The technical identity is intentionally stable: plugin folder and slug chada-travel-agency-manager, PHP namespace
CHADATAM\\, database prefix chadatam_, text domain chada-travel-agency-manager, and REST namespace chadatam/v1.
Free release
The repository builds a standalone GPL-2.0-or-later Free plugin distribution. Free includes Tour management, Tour Destinations and Tour Types, Featured Tours, Tour Search, Tour Featured Image Processing, Visa Countries, staged checkout, Bank Payment, Digital Wallet, documents, consent, security, email, and audit history. It contains no commercial payment provider, licensing check, telemetry, or automatic Pro installation. The Free distribution includes unlimited Bank Accounts, Travel Dates, and Downloadable Files while retaining server-side field, media, upload, and authorization validation.
The separate chada-travel-agency-manager-pro add-on adds independent administrator tools and services: the Record Grid Library, Dashboard
sections, PayPal and PayMongo, tags, notes, workflow automation, retention/anonymization, and the interactive
administrator tour. Free remains complete and usable without Pro; Pro contributes independent functionality only.
Pro payment mutations use the Free checkout nonce together with the page-bound guest token, while provider webhooks
remain signature-validated and credentials stay write-only. Booking Workflow renders empty, unavailable, and valid
archive-run states distinctly, and disabled automation removes its cron schedule.
The Free distribution is self-contained, GPL-compatible, telemetry-free, and prepared for WordPress.org review. Directory approval remains subject to the external WordPress.org review process.
General Settings > Currency is a translatable select of 50 common fiat currencies for travel agencies, with USD as the clean-install default and PHP included. Existing valid legacy three-letter codes remain selectable for compatibility. The optional Country.is flow remains disabled by default and runs only after explicit administrator opt-in; it applies a mapped currency only when General Currency is still the untouched USD default and never overwrites a manual selection. Existing country-fee values and historical order, payment, application, and Tour currency snapshots are preserved.
The public feature matrix is in docs/Plugin-Features.md, and the database contract is documented in docs/database-table-structure.md.
The public /tours/ page supports both unfiltered browsing and filtered Tour Search. Its unfiltered count query uses a
placeholder-free SQL path, while filtered requests remain prepared through the WordPress database API.
Pro add-on boundary
chada-travel-agency-manager-pro is maintained as a separate sibling repository. It may add independent functionality through these
stable Free actions:
chadatam_register_payment_providers
chadatam_register_admin_extensions
chadatam_register_settings_extensions
chadatam_register_rest_extensions
chadatam_register_dashboard_extensions
chadatam_register_automation_extensions
chadatam_render_dashboard_extensions
chadatam_dashboard_cards
chadatam_settings_tabs
chadatam_instructions_tabs
chadatam_booking_detail_overview_extensions
chadatam_booking_detail_payment_state_extensions
chadatam_template_path
chadatam_payment_settings_tentative_ready
These contracts are additive. The add-on owns its premium providers, source, assets, settings, migrations, and tests. Existing Free records, options, tables, IDs, and relationships remain the authority for shared data.
Project reference values
| Reference | Value |
|---|---|
| Plugin name | Chada - Travel Agency Manager |
| Plugin slug | chada-travel-agency-manager |
| PHP namespace | CHADATAM\\ |
| Database prefix | chadatam_ |
| Text domain | chada-travel-agency-manager |
| REST namespace | chadatam/v1 |
| Primary shortcode | [chadatam_visa_application] |
| Database schema version | 3.0.0 |
| Settings-data version | 21 |
Installation and setup
- Install and activate the plugin from WordPress.org.
- Open Chada - Travel Agency Manager > Settings.
- Configure General, Policies & Consent, Payment Method, Pages & Links, Documents & Uploads, Tours, Visa Countries, and Email. Pro-only Settings tabs appear only when the add-on is active.
- Add the assigned shortcodes to the generated or selected pages.
- Add Tours and Visa Countries, then test checkout with Bank Payment or Digital Wallet.
The Dashboard displays a checkout-readiness notification whenever required General values are missing, Company Status is Under Maintenance, no enabled payment method is Ready, a Pages & Links workflow is not ready, or the Policies & Consent bundle is incomplete. Each category lists the affected fields or statuses and links to the corresponding Settings tab for administrators who can manage settings. The existing Setup & System Status panel continues to show the broader Email and Documents & Uploads status as well.
Deactivation preserves plugin data. Uninstall cleanup is performed only when WordPress explicitly runs uninstall.php.
The settings migration is additive and preserves existing option values. No custom-table schema change is made by the
standalone Free packaging work.
Tour Travel Dates continue to require at least one complete ISO date range, but overlapping and reverse-ordered ranges are valid and remain editable. Duration displays the absolute inclusive span; blank newly added rows keep their normal next-day default.
Optional regional autofill
General Settings includes a regional autofill option that is disabled by default. After explicit administrator opt-in, the plugin can make one HTTPS request to Country.is with the installer’s public IP to suggest country, timezone, and currency while the General Currency remains the untouched USD default. The IP address, forwarding headers, and raw response are not stored. Only normalized country, timezone, currency, and a minimal audit result are retained, and the saved state prevents repeat requests. Manual configuration remains available.
Development
The project uses the WordPress plugin architecture. PHP code belongs in includes/, JavaScript and CSS in assets/,
templates in templates/, tests in tests/, and specifications in docs/.
The local wp-env configuration mounts this repository and the sibling chada-travel-agency-manager-pro repository on ports 8890
(development) and 8891 (tests). It preserves the existing database and activates Free before Pro when the environment is started
or updated. Pro remains outside the Free release package; local payment provider credentials are intentionally left blank.
Install development dependencies, then run:
composer check
php tests/integration/installer-runtime.php
php tests/integration/checkout-runtime.php
php tests/integration/payment-runtime.php
php tests/integration/rest-runtime.php
php tests/integration/document-runtime.php
php tests/integration/admin-runtime.php
php tests/integration/readiness-runtime.php
npm run lint:js
npm run lint:js:tour
npm run test:e2e
npm run build:release
git diff --check
For the local Pro-enabled environment, run npx wp-env start --update, then verify plugin status with
npx wp-env run cli wp plugin list. The normal lifecycle is Free active first, Pro active second; deactivating Pro
must remove only Pro runtime surfaces and cron execution while retaining Pro tables and options.
Set CHADATAM_INCLUDE_PRO_TESTS=1 when running the Pro-specific Playwright coverage so the Free-only historical
grep exclusions are disabled for that run.
The local PHP checkout, payment-proof, and document-upload fixtures forward both the checkout nonce and the
page-bound guest token, matching the production REST authorization boundary.
Only report a check as passed when it was executed and its output was observed. npm run build:release creates the
curated Free package at dist/chada-travel-agency-manager/; it validates synchronized version metadata and WordPress.org description
lengths, then excludes tests, development files, credentials, Pro source, premium assets, premium templates, and
Driver.js.
Documentation
Update docs/Plugin-Features.md, readme.txt, and the affected README sections whenever a feature, public workflow,
or package boundary changes.