What it is
Web software for tour / pilgrimage operators to manage trips, multi-stop routes, passengers (with families), vendors, expenses, and simple accounts.
Stack: PHP + MySQL/MariaDB · Admin login · Public tour list
License (required)
The software will not start without a valid `admin/.license` file bound to the customer computer.
Customer steps
1. Copy the package to the server (e.g. `D:\www\apps\tour`).
2. Configure `config/database.php` (database name, user, password).
3. Import `sql/schema.sql` into your database (or run installer if provided).
4. Open `license.php` in the browser on that same computer.
5. Click Generate info.db.
6. Send `info.db` (app root folder) to the software developer.
7. Receive `.license` back → save it as `admin/.license` (exact name, including the leading dot).
8. Open the site / admin login.
Developer steps
1. Keep `tools/generate_license.php` private (do not give to customers).
2. Open it (or CLI): upload customer `info.db`, set validity days + customer name.
3. Download / send `.license` to the customer.
4. Optional CLI:
`php tools/generate_license.php /path/to/info.db 365 "Agency Name"`
What is checked
- File present at `admin/.license`
- Cryptographic signature (cannot be forged without developer secret)
- Hardware ID match (MAC, CPU, hostname, OS, disk token, paths)
- Expiry date
- Extra checks on front page, admin login, and every admin page header
Removing one check is not enough; core module must remain intact.
Settings → Software License shows validity, days left, and customer name.
Login
- URL: `admin/login.php`
- Default: tadmin / password (change under Settings)
Main functions
Public front page (`index.php`)
Lists upcoming/ongoing tours: title, route, dates, Trip ID, cost per person, total seats, seats available.
Dashboard
All tours with Trip ID (from start date, e.g. `01122026`), seats, cost, status. Open a tour or + Add Tour.
Add Tour
- Title, from/to dates, from/to cities, seats, cost per seat, status
- Outbound stops and Return stops (city + label)
- Per stop: Bus / Train / Flight / Hotel / Meal / Ticket / Entry pass / Misc
- + Add Stop is below the stop list
Tour tabs (open a tour)
| Tab | Purpose |
|-----|---------|
| Overview | Seats, pax count, stop list with services |
| Passengers | Add head of family; choose how many family members → rows for ID, name, age, sex, seat. Fare/paid on head only. Aadhaar lookup from permanent records. List & delete |
| Transport | Bus/train/flight services from stops |
| Hotel | Hotel services from stops |
| Expenses | Credits (charges); from stops + manual |
| Vendor | Debits to vendors for this trip |
| Reports | Passenger report (printable) with paid/balance |
| Account | Income vs vendor debits; this tour / month / year |
Passengers (menu)
Permanent master records (ID, name, phone, gender…) reusable on any tour.
Vendors (menu)
Permanent vendor master (bus/train/flight/hotel…); link payments under a tour.
Settings
- Software license validity
- Agency name, address, phone, email, GST, license no., banner
- Change password · Add admin
Install checklist
1. PHP 7.4+ with PDO MySQL · MySQL 8 / MariaDB 10.5+
2. `config/database.php` → your DB (e.g. `tour`)
3. Import schema into that database
4. `license.php` → info.db → developer → admin/.license`
5. Admin login · change default password
Important files
| Path | Role |
|------|------|
| `license.php` | Customer: generate `info.db` |
| `admin/.license` | Issued license (required) |
| `includes/LicenseGuard.php` | Validation engine |
| `tools/generate_license.php` | Developer only |
| `config/database.php` | DB credentials |
| `sql/schema.sql` | Tables |
Support notes
- Moving the app to another PC requires a new `info.db` and a new `.license`.
- Expired license blocks the app until a renewed `.license` is installed.
- Do not delete or empty `includes/LicenseGuard.php` or license checks in `index.php` / `admin/login.php` / `includes/auth.php` / `admin/_header.php`.
CLICK HERE