A modern full-stack accommodation marketplace built with the MERN ecosystem, enabling users to discover unique stays, create listings, share experiences through reviews, and manage properties through a secure and seamless platform.
Romify is a feature-rich accommodation marketplace that allows users to discover unique stays, create and manage property listings, upload images, and share experiences through reviews.
The platform also includes an AI-Powered Smart Stay Recommender that understands natural-language travel requirements and intelligently matches users with the most relevant properties.
Built using modern web technologies and following the MVC architecture, Romify delivers a scalable, secure, and user-friendly accommodation discovery experience.
- Secure User Registration & Login
- Passport.js Authentication
- Session Management
- Cookie-Based Authentication
- Protected Routes & Authorization
- Create New Listings
- Edit Existing Listings
- Delete Listings
- Detailed Listing Pages
- Dynamic Image Uploads
- Property Capacity & Amenities
- Property Ratings
Romify uses AI to understand what users are looking for and recommend properties based on their natural-language travel requirements.
-
🧠 Natural Language Understanding
-
Users can describe their travel plans in plain English.
-
Example:
"I'm going to Manali with 3 friends. I need a peaceful place with mountain views, Wi-Fi and parking under ₹5000."
-
-
🎯 Intelligent Property Matching
-
AI extracts important requirements such as:
- Location
- Budget
- Group size
- Amenities
- Property preferences
-
-
⭐ Match Scoring
- Every recommendation receives a percentage-based match score.
-
🏆 Ranked Recommendations
- Properties are automatically sorted from the best match to the least relevant match.
-
💡 AI Explanations
- Each recommendation includes an explanation describing why the property matches the user's requirements.
The recommendation engine evaluates multiple factors:
| Matching Factor | Weight |
|---|---|
| 💰 Budget | 25% |
| 📍 Location | 25% |
| 👥 Capacity | 15% |
| 🛎️ Amenities | 20% |
| ✨ Preferences | 15% |
- Groq API
- Mixtral 8x7B
- Natural Language Processing
- Rule-Based Fallback Parsing
- Weighted Recommendation Algorithm
The system also includes fallback parsing using regex patterns, allowing basic recommendation functionality even when the AI API is unavailable.
- Add Reviews
- Delete Reviews
- User Interaction System
- Property Feedback
- Rating-Based Property Evaluation
- Cloudinary Image Storage
- Optimized Media Delivery
- Secure Image Management
- Scalable Cloud Infrastructure
- Responsive EJS Templates
- Flash Messages
- Clean UI Design
- Mobile-Friendly Layout
- Modern AI Recommendation Interface
| Frontend | HTML5, CSS3, JavaScript, EJS |
| Backend | Node.js, Express.js |
| Database | MongoDB, Mongoose |
| Authentication | Passport.js, Express Session, Cookies |
| AI / NLP | Groq API, Mixtral 8x7B, Axios |
| Cloud Services | Cloudinary |
| Architecture | MVC Pattern |
┌─────────────────────┐
│ Client │
│ EJS + JS │
└──────────┬──────────┘
│
▼
┌─────────────────────┐
│ Routes │
└──────────┬──────────┘
│
┌───────────────┴───────────────┐
▼ ▼
┌─────────────────┐ ┌──────────────────┐
│ Controllers │ │ Recommendation │
│ │ │ Controller │
└────────┬────────┘ └────────┬─────────┘
│ │
│ ▼
│ ┌──────────────────┐
│ │ Groq AI / NLP │
│ │ Processing │
│ └────────┬─────────┘
│ │
└──────────────┬──────────────┘
▼
┌─────────────────────┐
│ Models / MongoDB │
└─────────────────────┘
User Natural Language Query
│
▼
Groq AI / NLP
│
▼
Extract Requirements
│
┌──────┼─────────┐
▼ ▼ ▼
Location Budget Amenities
│ │ │
└──────┼─────────┘
▼
Search Listings
│
▼
Calculate Match Score
│
▼
Rank Properties
│
▼
Top 5 Recommendations
│
▼
Property + Score + Explanation
I'm going to Manali with 3 friends.
We need a peaceful place with mountain views,
Wi-Fi and parking, under ₹5000 per night.
The system extracts:
Location → Manali
Budget → ₹5000/night
Group Size → 3-4 people
Amenities → Wi-Fi, Parking
Preferences → Mountain Views, Peaceful
🏆 Mountain View Villa
Match Score: 94%
✓ Within your budget
✓ Suitable for your group
✓ Located in Manali
✓ Wi-Fi available
✓ Parking available
✓ Strong match for mountain-view preference
AI Explanation:
"Excellent match for your budget and group size.
The property provides Wi-Fi and parking and strongly
matches your preference for a peaceful mountain-view stay."
Displays the AI recommendation interface.
Processes a natural-language travel query.
{
"query": "I want a villa in Goa with pool under ₹8000"
}{
"success": true,
"recommendations": [
{
"_id": "...",
"title": "Beachfront Resort in Goa",
"location": "Goa",
"price": 3500,
"capacity": 2,
"amenities": [
"Wi-Fi",
"Beach Access",
"Pool"
],
"rating": 4.6,
"matchScore": 92,
"explanation": "Perfect match for your budget, features the pool you requested, and has excellent beach access in Goa."
}
]
}For the AI recommender to work effectively, listings support additional information such as:
{
title: "Mountain View Villa",
description: "Peaceful villa surrounded by mountains",
price: 4200,
location: "Manali",
country: "India",
capacity: 4,
amenities: [
"Wi-Fi",
"Parking",
"Kitchen"
],
rating: 4.8
}These attributes are used by the recommendation engine to calculate property relevance.
git clone https://github.com/your-username/romify.gitcd romifynpm installThis installs all required dependencies including Axios for AI API communication.
Create a .env file in the project root:
ATLASDB_URL=your_mongodb_connection_string
CLOUD_NAME=your_cloudinary_name
CLOUD_API_KEY=your_cloudinary_api_key
CLOUD_API_SECRET=your_cloudinary_api_secret
SECRET=your_session_secret
GROQ_API_KEY=your_groq_api_key
NODE_ENV=developmentCreate a free Groq API key from:
Never commit your
.envfile or API keys to GitHub.
node app.jsor
npm startThen open:
http://localhost:8080
For the AI recommendation interface:
http://localhost:8080/recommendations
Romify/
│
├── controllers/
│ └── ...
│
├── controler/
│ └── recommendation.js
│
├── models/
│ └── listing.js
│
├── routes/
│ └── ...
│
├── middleware/
│ └── ...
│
├── utils/
│ └── recommendationAI.js
│
├── public/
│ ├── css/
│ ├── js/
│ └── images/
│
├── views/
│ ├── layouts/
│ ├── listings/
│ ├── recommendations/
│ │ └── index.ejs
│ ├── users/
│ └── includes/
│
├── init/
│ └── data.js
│
├── app.js
├── package.json
├── .env.example
└── README.md✅ Full-Stack MERN Ecosystem
✅ AI-Powered Natural Language Recommendations
✅ Intelligent Property Matching
✅ Match Score & AI Explanations
✅ Groq + Mixtral AI Integration
✅ Secure Authentication System
✅ RESTful API Design
✅ Cloud-Based Image Management
✅ Responsive EJS Interface
✅ Scalable MVC Architecture
✅ MongoDB Database Integration
✅ Flash Messaging System
screenshots/
│
├── homepage.png
├── listings.png
├── property-details.png
├── login.png
├── reviews.png
└── ai-recommendations.png
Through Romify, the project demonstrates practical experience in:
- Full-Stack Web Development
- RESTful API Development
- Natural Language Processing
- AI API Integration
- Recommendation Systems
- Weighted Matching Algorithms
- Authentication & Authorization
- MongoDB Data Modeling
- Cloudinary Integration
- Session & Cookie Management
- MVC Architecture
- Responsive UI Development
- Scalable Application Design
- 🔍 Advanced Search & Filters
- 🗺️ Interactive Maps
- ❤️ Wishlist Feature
- 💳 Payment Integration
- 📱 Progressive Web App
- 🔔 Real-Time Notifications
- 🌐 Multi-Language Support
- 🧠 Personalized Recommendations using User History
- 📊 Recommendation Analytics
- 🏡 Similar Property Recommendations
- ⭐ Recommendation Learning from User Feedback
- 🕒 Recommendation History
B.Tech Undergraduate | NIT Kurukshetra
Full Stack Developer Open Source Contributor