HomeHub is a full-stack web application designed for property owners to list their homes for rent or sale, and for users to easily browse and find properties that fit their needs. It is built using the MERN stack (MongoDB, Express, React, and Node.js), focusing on providing a seamless, intuitive experience for both property owners and house seekers.
- User Authentication: Secure login and signup using email and password or Google OAuth.
- Property Listings: Users can create, update, and delete property listings for sale or rent.
- Search, Filter and Sort: Property seekers can search, filter and sort listings by criteria like price, type, parking availability and more.
- Responsive Design: Fully responsive user interface designed with Tailwind CSS.
- Secure JWT Authentication: JSON Web Tokens (JWT) are used for user authentication and authorization.
- Manage User Account: Users can update and delete their account also update their profile picture
- Frontend:
- Backend:
- Authentication:
- Others:
Make sure you have the following installed on your system:
- Node.js (v14 or higher)
- MongoDB (Local or MongoDB Atlas)
- Nodemon
- Clone the repository:
git clone https://github.com/fentahunM/home-hub.git
- Navigate into the project directory:
cd home-hub
- Install the backend dependencies:
npm install
- Install the frontend dependencies:
cd client
npm install
cd ..
- Create .env files
# 1. In the root directory
#head over to mongodb atlas create project and put MongoDB Driver connection string here
MONGO_ATLAS=[MongoDB Driver connection string]
JWT_SECRET=[your jwt secret]
# 2. In client directory
#head over to firebase create project get api key
VITE_FIREBASE_API_KEY=[Your API Key]
- Start the development servers:
Backend
# change directory to root directory
npm run dev
Frontend
cd client
npm run dev
- Open the application in your browser:
http://localhost:5173/
POST /signup
: Create a new userPOST /signin
: Log in an existing userPOST /google
: Google OAuth loginGET /signout
: Log out the user
GET /:id
: Get user details by IDPOST /update/:id
: Update user detailsDELETE /delete/:id
: Delete user account
POST /create
: Create a new property listingGET /get/:id
: Get a single listing by IDGET /get
: Get all listings with filters (offer, type, price)POST /update/:id
: Update a listingDELETE /delete/:id
: Delete a listing
For any questions or inquiries, please contact me at:
Email or
Linkedin