MediFy
Full-stack medical-tourism marketplace with payments and real-time chat

About
Context, problem & solution
MediFy is a full-stack medical-tourism marketplace that lets patients plan an entire trip around a medical procedure — the clinic, the stay, and the transport — in one place, with payments, messaging, and reviews built in.
Context and problem. Medical tourism is logistically messy: a patient has to coordinate a clinic, accommodation near it, and transport between them, often across a language barrier and always with money and trust on the line. A platform for this can't just be a catalog — it needs secure payments, verified reviews, real-time communication, and different capabilities for very different kinds of users.
Solution. MediFy is organized as a multi-role marketplace. Patients browse and book across three service types (clinics, houses, cars); clinic/house/car managers manage their own listings and bookings; a super-admin oversees the whole platform. The React frontend talks to an Express/MongoDB backend exposing a REST API, with Socket.IO powering in-app chat and notifications. Payments run through Stripe (payment intents, scheduling, automated refunds), media is handled by Cloudinary, and MongoDB's aggregation pipelines drive the analytics dashboards.
Engineering and quality focus. Security is treated as a first-class concern rather than an afterthought: JWT authentication with refresh tokens, optional TOTP two-factor auth, role-based access control, request rate limiting, and input validation across the API surface. The domain is modeled explicitly (Users, Clinics, Houses, Cars, Reservations, Reviews) so responsibilities stay separated, and the codebase carries a test setup (Jest, React Testing Library, Supertest) so critical flows like payments and booking can be exercised in isolation.
Architecture
How the system is built
Tech stack
Technologies used
Frontend
Backend
Database
Payments & media
Security
Want to know more about MediFy?
The complete source code is available on GitHub, along with the history and deployment configuration.