classic-trip

Classic Trip Platform

Classic Trip is a Node.js + Express + MongoDB + Mongoose + EJS monolith for a multi-tenant travel marketplace. Public booking, company operations, employee/driver tools, customer accounts, promoter workflows, and super-admin controls now run through one production dashboard system with role-scoped data and actions.

What is implemented

First run

cd classic-trip-platform
cp .env.example .env
npm install
npm run lint
npm test
npm run dev

Open:

http://localhost:5000

Demo login accounts

Use the password below for every demo account:

Password123

Accounts:

admin@classictrip.test       -> /admin
company@classictrip.test     -> /company/dashboard
employee@classictrip.test    -> /employee/dashboard
customer@classictrip.test    -> /account
promoter@classictrip.test    -> /promoter/dashboard

MongoDB-first data layer

The old in-memory demo store has been removed from runtime. The app expects MongoDB as the system of record when DEMO_MODE=false. For local development, start MongoDB, seed the reference data, then run the app:

npm run seed:local
npm run seed:counts
npm run dev

Use AUTO_SEED_MONGO=true only for local/dev bootstrapping when the database is empty.

Environment notes

Real production values are required for:

Production ticket PDFs are generated with PDFKit at /tickets/:bookingRef.pdf. Cloudinary upload support is available in the PDF service once Cloudinary credentials are configured.

Current implementation status

The implementation is MongoDB-first with seeded platform records, transaction-style checkout persistence, seat and hotel room-night locking, signed/idempotent webhook processing, scoped dashboard routes, support/partner onboarding, refund and wallet reversal flows, scheduled cleanup jobs, configurable payment providers, and locally generated ticket PDFs with Cloudinary upload support when production credentials are present.

Recommended release checks:

npm run check
npm run check:dashboards
npm run check:dashboard-smoke-static
npm run acceptance:matrix
npm run test:acceptance
npm test

Production package cleanup

Tests and audit evidence stay in the repository so the platform remains verifiable. They are excluded from production deploy/package payloads through .slugignore, .npmignore, and .dockerignore.

Runtime-required folders are: