- **Justin Leopard - **
- **Murray Milton - **
- **Prayag Patel - **
- **Christian Culajay - **
iRental revolutionizes the property rental and sales market by providing a comprehensive platform that allows users to list, manage, and book properties with ease. From exotic vacations to city escapes, iRental offers a wide range of property options for renters and buyers alike. Sellers can effortlessly manage their listings, while users can explore and book stays in just a few clicks.
Our project is built using cutting-edge technologies for both frontend and backend development:
- React: To build a dynamic and responsive user interface.
- Tailwind CSS: For custom, utility-first CSS.
- Bootstrap: For responsive design and layout.
- Redux: For managing application state.
- FastAPI: High-performance, easy to learn, fast to code framework.
- MongoDB: For flexible, scalable NoSQL database management.
- Express: Minimalist web framework for Node.js.
- JWT Auth: For secure user authentication.
⚠️ Do not skip this step: It's crucial for configuring your application correctly.
Before running or deploying the application, setting up the necessary environment variables is indispensable. These variables configure your application to work with specific external services (like databases and APIs) securely and efficiently.
- Create a
.envFile: In the root directory of your project, create a file named.env. - Add Your Variables: Open the
.envfile with your favorite text editor, and include the necessary environment variables as shown below. Replace the placeholders with your actual data.
# Environment Configuration Example
SIGNINGKEY="your_signing_key_here"
VITE_API_HOST="http://localhost:8000"
CORS_HOST="http://localhost:5173"
Follow these steps to get the application up and running on your local machine:
- Open your terminal.
- Navigate to the directory where you would like to clone the project.
- Clone the repo:
git clone https://github.com/yourusername/irental-project.git - Change the directory to the project folder.
- Ensure that your Docker Desktop Application is open.
- Run the following commands in sequence:
- docker volume create mongo-data:
- docker compose build:
- docker compose compose up:
- List Properties: Users can list their properties for rent or sale, including details like location, price, and amenities.
- Manage Bookings: Property owners can manage reservations, check-in/check-out dates, and availability.
- Search and Filter: Renters and buyers can search for properties based on location, price, and other filters.
- Secure Authentication: Users can sign up, log in, and manage their accounts securely using JWT authentication.
- Profile Management: Users can update their profile information and preferences.
- Reserve Properties: Users can book properties for specific dates, with immediate confirmation.
iRental integrates these features through a user-friendly interface, backed by a robust backend that ensures smooth and secure operations. Our platform brings together property owners and travelers, making it easier than ever to find and book the perfect stay.
iRental's frontend and backend systems work in harmony to provide a seamless user experience. The frontend, built with React, Tailwind, and Bootstrap, offers a dynamic and responsive interface. Meanwhile, the backend ensures efficient data management and security with FastAPI, MongoDB, Express, and JWT Auth.
| Action | Method | URL |
|---|---|---|
| List properties | GET | http://localhost:8000/api/properties/ |
| Create a property | POST | http://localhost:8000/api/properties/ |
| Get a specific property | GET | http://localhost:8000/api/properties/{id} |
| Update a specific property | PUT | http://localhost:8000/api/properties/{id} |
| Delete a specific property | DELETE | http://localhost:8000/api/properties/{id} |
When creating or updating a property, send the following JSON payload:
{
"name": "Ocean View Condo",
"address": {
"address": "123 Beach Ave",
"city": "Seaside",
"state": "CA",
"zip": "90210"
},
"bedrooms": 2,
"bathrooms": 2,
"price": 350000,
"description": "A beautiful condo with an ocean view, modern amenities, and easy beach access.",
"amenities": {
"ac": true,
"heating": true,
"washer_dryer": true,
"parking": true,
"beer": false,
"wifi": true,
"pets_allowed": false,
"pool": true
},
"image": "https://example.com/image.jpg",
"id": "unique_property_id",
"account_id": "owner_account_id"
}| Action | Method | URL |
|---|---|---|
| List all reservations | GET | http://localhost:8000/api/reservations/ |
| Create a reservation | POST | http://localhost:8000/api/reservations/ |
| Get a specific reservation | GET | http://localhost:8000/api/reservations/{id}/ |
| Update a specific reservation | PUT | http://localhost:8000/api/reservations/{id}/ |
| Cancel (delete) a reservation | DELETE | http://localhost:8000/api/reservations/{id}/ |
For each reservation, specify the check-in and check-out dates, the name under which the reservation is made, the associated property, and the account ID of the user making the reservation.
{
"checkin": "2024-01-01",
"checkout": "2024-01-07",
"reservation_name": "John Doe",
"property_id": "unique_property_id",
"account_id": "unique_account_id"
}| Action | Method | URL |
|---|---|---|
| List all accounts | GET | http://localhost:8000/api/accounts/ |
| Create an account | POST | http://localhost:8000/api/accounts/ |
| Get a specific account | GET | http://localhost:8000/api/accounts/{id}/ |
| Update a specific account | PUT | http://localhost:8000/api/accounts/{id}/ |
| Delete a specific account | DELETE | http://localhost:8000/api/accounts/{id}/ |
When creating or updating an account, send the following JSON payload:
{
"email": "example@email.com",
"first_name": "John",
"last_name": "Doe",
"username": "johndoe",
"password": "securePassword123"
}