The open-source operating system for travel agencies—from first enquiry to post-trip support.
MooNsConfig connects CRM, itinerary creation, route maps, supplier RFQs, quotations, bookings, payments, trip operations, customer support, and Maya-assisted workflows in one multi-tenant platform.
Ready to use: The included stack runs the core CRM, packages, itineraries, vendors, route maps, RFQs, bookings, and operations workflows locally. Provider-backed features such as AI, email, telephony, payments, SSO, live inventory, and WhatsApp become available after you add your own credentials. Complete the production-readiness checklist before handling real customer, payment, or identity data.
Every bold title in the first column is a link. Choose the path that matches what you want to do:
| Start here | What you will find |
|---|---|
| 🚀 Install and run MooNsConfig → | Windows, Linux, macOS, Docker, native development, login, stopping, and troubleshooting |
| ✨ Explore every feature → | Maya, CRM, RFQs, maps, itineraries, packages, vendors, hotels, cars, chat, and operations |
| 🎬 Open the live product tour → | Privacy-safe captures from the running application and a guided workflow |
| 📊 Check what is ready → | Local capabilities, provider requirements, limitations, and maturity |
| 🤝 Make your first contribution → | Fork, clone, branch, test, push, open a pull request, and earn recognition |
| 🛡️ Read the security policy → | Private vulnerability reporting and rules for protecting traveller data |
| 💬 Get project support → | Setup questions, bug reports, feature requests, and safe support channels |
| 🧭 Understand project governance → | Maintainer roles, decisions, reviews, releases, and roadmap ownership |
Repository documents are also available through GitHub's README, Contributing, Code of conduct, MIT license, and Security tabs above this page.
Click here to open the live product tour →
The tour uses direct, privacy-safe captures from the running application—not UI mock-ups. Any visible lead data is deliberately fictional.
View the full screenshot tour →
- Travel agencies replacing spreadsheets and disconnected point tools.
- Tour operators building custom itineraries, quotations, and packages.
- DMCs coordinating suppliers, hotels, vehicles, activities, and traveller operations.
- Engineering teams evaluating a multi-tenant travel SaaS foundation.
- Contributors interested in maps, realtime systems, workflow automation, accessibility, travel technology, and governed AI.
- Capture the enquiry. Receive a lead through a form, customer chat, callback, WhatsApp, or incoming phone call.
- Qualify and follow up. Assign ownership, record requirements, schedule calls and messages, and keep the entire lead timeline visible.
- Discover and curate. Start from a destination brief, existing catalogue, or uploaded inspiration picture.
- Build the itinerary. Add days, activities, stays, rooms, cars, transfers, pricing, media, and route maps.
- Request supplier rates. Select vendors, prepare reusable or Maya-composed RFQs, review them, and organize outreach.
- Quote and confirm. Build versioned proposals and PDFs, collect approval, create bookings, and manage payment schedules.
- Operate the trip. Coordinate participants, services, documents, messages, incidents, flight watches, and recovery actions.
- Support the traveller. Continue through team chat, customer chat, Maya assistance, human handover, invoicing, refunds, and post-trip follow-up.
The summary below explains the main product areas. Use the complete feature guide for the full capability list and provider boundaries.
- Connects to Asterisk ARI for incoming travel calls, returning-traveller recognition, enquiry capture, package search, callback scheduling, escalation, and end-of-call CRM journaling.
- Keeps calls, emails, WhatsApp messages, meetings, quotations, outcomes, next actions, Maya-owned cadences, and staff-owned queues connected from first contact to conversion.
- Uses read-only defaults, approval-bound operational writes, audit records, sensitive-data redaction, and an external-write kill switch.
- Manages lead ownership, priority, notes, recordings, requirements, next actions, outcomes, follow-up queues, customer profiles, sales pipeline, and deal context.
- Builds versioned quotations from catalogue and supplier data with branded PDFs, feedback, approval, bookings, invoices, payment schedules, escrow, refunds, and promo codes.
- Provides a human-operated lead WhatsApp inbox with unread badges, approved templates, conversation history, retry handling, and sent, delivered, and read states.
- Provides realtime staff channels, direct conversations, customer chat, attachments, presence, unread state, call requests, and support history through Socket.IO and Redis.
- Allows eligible customer conversations to be assigned to Maya with urgent-travel recognition, human escalation, takeover, and hand-back.
- Gives staff a browser-based voice and chat workspace for asking Maya questions while preserving permissions and operational guardrails.
- Creates editable day-by-day itineraries from destination briefs while keeping the manual editor available without an AI provider.
- Turns an uploaded inspiration picture into destination, mood, activity, and itinerary ideas.
- Supports activity selection, drag-and-drop days, stays, rooms, vehicles, transfers, inclusions, media, coordinates, pricing, margin, and route generation.
- Selects suppliers by destination, service, hotel, vehicle, experience, scope, and travel date.
- Uses reusable templates or Maya-composed RFQs, with staff review before external sending.
- Tracks outreach queues, delivery history, inbound and outbound supplier conversations, extracted offers, reviewable inventory drafts, and approval.
- Builds interactive road, rail, air, sea, and mixed-mode routes with destinations, waypoints, labels, transport icons, coordinates, and styling.
- Exports static maps for itineraries and proposals.
- Produces animated journey playback for presentations and marketing while keeping the route connected to itinerary data.
- Creates reusable packages with media, SEO content, day-by-day plans, pricing, inclusions, and exclusions.
- Manages hotels, resorts, rooms, amenities, galleries, vendors, supplier net costs, margin, selling prices, vehicles, coverage, capacity, luggage, and transfers.
- Maintains activities, experiences, destinations, flights, cruises, themes, and broader catalogue inventory with search, filtering, editing, and source verification.
- Moves approved proposals into bookings with participants, services, payments, documents, messages, and wallet metadata.
- Gives operations teams a Journey Manager, activity status, flight watches, broadcasts, incident desk, recovery workflows, and customer updates.
- Gives travellers a hub for proposals, trips, services, payments, documents, messages, and Maya SOS or human support.
- Supports campaigns, audiences, automations, banners, promotions, destination content, packages, Travel Hub content, visa content, and SEO workflows.
- Assists with audience rules, campaign drafts, banner copy, trend analysis, lead priority, and analytics chat while leaving external publication and sending reviewable.
- Uses a platform database plus isolated logical databases for travel-company workspaces.
- Covers tenant registration, provisioning, lifecycle, plans, quotas, billing, backup, operator controls, authentication, invitations, roles, module permissions, MFA-sensitive actions, and audit trails.
- Uses Redis-backed limits, locks, caching, queues, transactional outbox patterns, idempotent workers, and provider integrations that remain disabled or fail closed when unconfigured.
Explore the complete feature guide →
| Area | Status |
|---|---|
| CRM, leads, proposals, bookings, packages, vendors, stays, and cars | Ready in the local stack |
| Itinerary editor, visual curation, activities, and route-map studio | Ready; AI generation needs a configured provider |
| Supplier RFQs and vendor-response workflow | Ready; external delivery needs configured email |
| Team chat and customer-support workspace | Ready with the included Redis and Socket.IO stack |
| Human-operated lead WhatsApp inbox | Ready after connecting a Meta WhatsApp Business account |
| Maya chat, calling, follow-up, and operational assistance | Provider-backed with approval and audit guardrails |
| Payments, SSO, object storage, live flights, and external inventory | Optional provider integrations |
Open the detailed capability and maturity matrix →
Install and start Docker Desktop, then:
git clone https://github.com/schowdary75/moonsconfig.git
cd moonsconfig
chmod +x start.sh stop.sh
./start.shOn Windows, run the commands in Git Bash or WSL. The launcher generates an ignored local environment, builds the full stack, applies Prisma migrations, creates the initial administrator, and prints the login details. Open http://localhost:8080 when startup completes.
Stop without deleting local application data:
./stop.shOpen the complete Windows, Linux, macOS, Docker, and native setup guide →
flowchart TB
subgraph Channels["Users and inbound channels"]
Staff["Agency staff and administrators"]
Travellers["Traveller Hub and customer chat"]
Webhooks["Signed provider webhooks"]
Voice["Asterisk ARI and voice services"]
end
subgraph Edge["Edge and web delivery"]
Nginx["Nginx reverse proxy"]
SPA["React 19 and Vite single-page application"]
end
subgraph Application["Application runtime"]
API["Express 5 API"]
Realtime["Socket.IO realtime gateway"]
Security["Authentication · MFA · RBAC<br/>plan entitlements · tenant context"]
RequestFlow["Routes → controllers → services<br/>repositories → Prisma"]
Domains["Travel domain services<br/>CRM · itineraries · RFQs · bookings · support"]
end
subgraph Async["Asynchronous processing"]
Scheduler["Schedulers and idempotent jobs"]
Redis[("Redis 7.4<br/>queues · cache · locks · rate limits")]
Worker["Separate BullMQ worker process"]
end
subgraph Data["Persistence and tenant isolation"]
PlatformPrisma["Platform Prisma client"]
TenantPrisma["Tenant Prisma client"]
PlatformDB[("Platform MySQL database<br/>identity · tenants · plans · credentials")]
TenantDB[("Isolated tenant MySQL databases<br/>travel and operational records")]
Storage[("Persistent uploads and logs")]
end
subgraph Integrations["Optional provider adapters"]
AdapterBoundary["Validated provider boundary"]
AI["AI"]
Communications["WhatsApp · email · SMS"]
Travel["Flights · inventory · travel rules"]
Business["Payments · SSO · accounting"]
Cloud["Object storage · CDN · malware scanning"]
end
Staff -->|HTTPS| Nginx
Travellers -->|HTTPS| Nginx
Nginx -->|serves static assets| SPA
SPA -->|REST through Nginx| API
SPA <-->|realtime through Nginx| Realtime
Webhooks -->|verified HTTPS events| API
Voice <--> API
API --- Realtime
API --> Security
Realtime --> Security
Security --> RequestFlow
RequestFlow --> Domains
Domains --> PlatformPrisma
Domains --> TenantPrisma
PlatformPrisma --> PlatformDB
TenantPrisma --> TenantDB
Domains --> Storage
Domains <--> Redis
Scheduler -->|enqueue| Redis
Redis -->|BullMQ jobs| Worker
Worker --> PlatformPrisma
Worker --> TenantPrisma
Worker --> Storage
Domains <--> AdapterBoundary
Worker <--> AdapterBoundary
AdapterBoundary --- AI
AdapterBoundary --- Communications
AdapterBoundary --- Travel
AdapterBoundary --- Business
AdapterBoundary --- Cloud
Socket.IO is shown separately to make realtime traffic clear, but it runs with the API rather than as another Docker service. The API and BullMQ worker are separate processes.
| Layer | Responsibility |
|---|---|
| Nginx and React/Vite | Serve the browser application, provide SPA history fallback, and proxy API, upload, sitemap, and realtime paths |
| Express API and Socket.IO | Expose versioned HTTP endpoints, accept verified webhooks, and publish tenant-scoped realtime updates |
| Security and workspace resolution | Validate sessions, MFA, permissions, plan entitlements, and tenant identity before protected data access |
| Domain and repository layers | Run CRM, itinerary, RFQ, booking, support, and operations rules through explicit repository boundaries |
| Redis and BullMQ | Hold queues, rate-limit state, caches, distributed locks, retries, and idempotent background work |
| Platform data | Keep shared identity, workspace, plan, domain, and encrypted provider-credential metadata |
| Tenant data | Keep each workspace's travel and operational records in its resolved tenant database |
| Provider adapters | Connect only configured AI, communications, travel, business, and cloud providers; otherwise fail closed |
- Nginx serves the SPA and proxies API and realtime traffic.
- Authentication, MFA, RBAC, plan entitlements, and tenant context are resolved before a protected request reaches a domain service.
- Synchronous data access follows
routes → controllers → services → repositories → Prisma → MySQL. - Long-running or retryable work is enqueued in Redis with an idempotency key.
- The separate worker claims BullMQ jobs, writes through the same Prisma boundaries, and records bounded retries or dead-letter outcomes.
- Socket.IO publishes tenant-scoped updates when enabled. Provider-dependent workflows remain disabled or return a real configuration/error state when credentials are absent.
The TypeScript monorepo uses React 19, Express 5, MySQL 8.4, Prisma 6, Redis 7.4, BullMQ, Socket.IO, Docker Compose, and Nginx.
Read the architecture guide → · Understand the travel operating-system design →
| Open this guide | Use it when you want to… |
|---|---|
| Features → | Explore the complete product surface |
| Getting started → | Install, configure, run, stop, or troubleshoot |
| Product tour → | Inspect real application screens and workflows |
| Project status → | Check what works locally and what needs a provider |
| Production readiness → | Prepare a deployment that handles real data |
| Contributing → | Make a focused, tested pull request |
| Security → | Report vulnerabilities without exposing details |
| Support → | Ask for help through the correct channel |
| Governance → | Understand decisions, reviews, releases, and ownership |
| Documentation index → | Browse every product, technical, and community guide |
Contributions are welcome across travel workflows, route maps, accessibility, tests, provider adapters, responsive UI, documentation, setup, and security.
Find a good first issue → · Follow the visual fork-to-PR guide → · Read the contribution rules →
Accepted work is recognized in the Hall of Fame, leaderboard, and contributor recognition program. Milestone closers can receive Roadmap Champion recognition and repository-verifiable digital certificates.
All participation follows the Code of Conduct. For setup or usage questions, read Support. Report vulnerabilities privately through the Security Policy, never through a public issue.
Original MooNsConfig source code is available under the MIT License, copyright 2026 MooNsConfig. Third-party components retain their own licenses and terms; see THIRD_PARTY_NOTICES.md.

