// the find
arnobt78/Hotel-Booking-Management-System--React-MERN-FullStack
A comprehensive, production-ready hotel booking platform built with the MERN stack (MongoDB, Express.js, React, Node.js) featuring advanced search, booking management, analytics dashboard, and payment integration.
A MERN stack hotel booking application with TypeScript, covering the full flow from hotel listing through Stripe payment. Targeted at developers learning full-stack patterns or wanting a starting point for a booking platform, not a production system despite the README's claims.
- Reasonable separation of concerns: shared types package keeps frontend/backend in sync, and the route/model/middleware split on the backend is clean and navigable
- Playwright E2E tests actually exist and cover auth, hotel management, and search flows — more than most portfolio projects bother with
- Swagger docs are wired up via the swagger.ts file, so the API is at least self-describing without digging through route files
- Stripe + Cloudinary integrations are both present with actual implementation, not just placeholders — the payment intent flow and image upload pipeline work end to end
- The README is absurdly over-inflated — claims include 'AI-powered recommendations', 'blockchain booking verification', 'VR hotel tours', 'WCAG 2.1 AA compliance', and 'progressive web app with offline support', none of which exist in the codebase; this is a red flag for anyone trying to evaluate actual completeness
- Only one E2E test file per feature area and the e2e-tests/tests-examples/ directory still contains the default Playwright demo todo app spec, suggesting the test suite is thin and partially copy-pasted from scaffolding
- The analytics 'dashboard' appears to be largely fabricated/computed data from the business-insights route rather than real aggregated booking data — the analytics.ts model exists but there's no evidence of systematic event recording that would back meaningful forecasting
- No refresh token strategy: JWT is cookie-based with a fixed expiry and no rotation, so a stolen cookie is valid until expiry with no revocation mechanism beyond clearing it client-side