The client application is hosted at https://client-reunion.vercel.app/.
The server API can be accessed at https://backend-reunion.vercel.app/api/list-properties.
This project is a comprehensive property portal that allows tenants to search for properties based on their preferences and property owners to manage their property listings.
The portal is built using the following technologies:
- Frontend: React and Material UI
- Backend: Node.js/Express
- Database: MongoDB Atlas
- Middlewares: Various middleware libraries such as
cors
,yup
,body-parser
,helmet
,express-mongo-sanitize
,xss-clean
, andexpress-rate-limit
are used for security and request handling. - version control: Git
- Hosting Platform : vercel
- Clone the project repository to your local machine.
- Ensure you have client and Database setup.
- Run
npm install
to install the project dependencies. - set up
.env
file. - start client via
npm start
- Start the server by running
npm start
or vianpm run dev
with the help of dev dependency. - The server and client should now be running on the specified port.
Create a .env file in the project root with the following variables:
DB_URL
PORT
JWT_SECRET_KEY
JWT_EXPIRY
COOKIE_TIME
- Home Page: The home page serves as the property listing page where all available properties are displayed.
- Filter Options:
- Location: Dropdown displaying city list.
- Available from date: Calendar dropdown.
- Price range: Slider.
- Property type: Dropdown.
- Authentication: This is a public page accessible to both authenticated and unauthenticated users.
- Pagination: No pagination; all properties are shown on a single page.
- Responsiveness: The page is designed to be responsive.
- Route:
/api/list-properties
- Method: GET
- Authentication: Public endpoint.
- Purpose: Fetch all available properties to display on the property search/listing page.
- Route:
/api/property
- Method: POST
- Authentication: Private endpoint (requires authentication).
- Purpose: Allows property owners to add new properties.
- Route:
/api/property/:id
- Method: PUT
- Authentication: Private endpoint (requires authentication).
- Purpose: Enables property owners to update their existing property listings.
- Route:
/api/property/:id
- Method: DELETE
- Authentication: Private endpoint (requires authentication).
- Purpose: Allows property owners to delete their listed properties.
- Route:
/api/property
- Method: GET
- Authentication: Private endpoint (requires authentication).
- Purpose: Provides property owners with a list of properties they have listed on the portal.
- Route:
/api/signup
- Method: POST
- Purpose: Allows users (property owners) to register on the portal using a valid email ID.
- Route:
/api/login
- Method: POST
- Purpose: Enables registered users to log in and authenticate themselves using JWT tokens.
- Route:
/api/logout
- Method: GET
- Purpose: Enables registered users to logout from the platform
Contributions to the projects are welcome! Please follow these steps:
- 🍴 Fork the repository.
- 🌿 Create a new branch for your feature or fix.
- 🛠️ Make your changes and commit them.
- 🚀 Push your changes to your fork.
- 🔄 Create a pull request to the main repository.
Contributions and feedback are welcome! If you find any issues or have suggestions for improvements, please feel free to submit a pull request or open an issue. Please follow the contribution guidelines.
👨💻 Author: Nishant (@nishant219)