Homely is a web application for property listings, similar to Airbnb. It allows users to browse, create, edit, and delete property listings.
The main page displaying all available property listings in a responsive grid layout with beautiful property images, titles, and pricing.
A comprehensive form for adding new property listings with fields for title, description, image URL, price, location, and country.
Detailed view of a specific property showing full-size images, complete description, pricing, location details, and action buttons for editing or deleting.
- View all property listings
- View detailed information about a specific listing
- Create new property listings
- Edit existing property listings
- Delete property listings
- Form validation for creating and editing listings
-
Backend:
- Node.js
- Express.js
- MongoDB with Mongoose
- EJS (Embedded JavaScript) for templating
- EJS-Mate for layout management
- Joi for data validation
-
Frontend:
- HTML/CSS
- Bootstrap 5 for responsive design
- JavaScript
- Font Awesome for icons
-
Clone the repository:
git clone <repository-url> cd Homely
-
Install dependencies:
npm install
-
Make sure MongoDB is installed and running on your system.
-
Start the application:
node app.js
-
Open your browser and navigate to
http://localhost:8080
Homely/
├── models/ # Database models
│ ├── listing.js # Listing model
│ └── review.js # Review model
├── public/ # Static files
│ ├── css/ # CSS files
│ └── js/ # JavaScript files
├── utils/ # Utility functions
│ ├── ExpressError.js # Custom error handling
│ └── wrapAsync.js # Async error wrapper
├── views/ # EJS templates
│ ├── includes/ # Reusable template parts
│ ├── layouts/ # Layout templates
│ └── listings/ # Listing-related templates
├── app.js # Main application file
├── package.json # Project dependencies
└── schema.js # Joi validation schemas
- Navigate to
/listings
to see all available property listings - Click on any listing to view its details
- Navigate to
/listings/new
- Fill out the form with the property details
- Click "Create" to add the new listing
- Navigate to a specific listing's page
- Click the "Edit" button
- Modify the details in the form
- Click "Update" to save changes
- Navigate to a specific listing's page
- Click the "Delete" button to remove the listing
This project is licensed under the ISC License - see the LICENSE file for details.
- Bootstrap for the responsive design framework
- Font Awesome for the icons
- MongoDB for the database
- Express.js for the web framework