A comprehensive web platform designed to streamline the process of searching, listing, managing, and booking real estate properties. This system caters to different user roles: Customers looking for properties, Property Owners managing their listings, and Administrators overseeing the platform.
General:
- Secure User Authentication: Robust registration and JWT-based login system.
- Role-Based Access Control: Functionality and data visibility are tailored based on user roles (Customer, Property Owner, Admin).
- RESTful API: Backend exposes a well-defined API for frontend interaction.
Customer:
- Property Search & Filtering: Search properties based on location (city), type (Sale/Rent), price range, bedrooms, bathrooms.
- View Property Listings: Browse available properties with details, images, and amenities.
- View Property Details: See comprehensive information for a specific property.
- Request Property Visit: Submit booking requests for desired properties with preferred date and time.
- View My Bookings: Track the status (Pending, Confirmed, Rejected, Cancelled, Completed) of submitted visit requests.
Property Owner:
- Property CRUD: Create, Read, Update, and Delete their own property listings.
- Multiple Image Upload: Upload multiple images for each property.
- Amenity Management: Select and manage a list of amenities associated with each property.
- Booking Management: View booking requests for their properties and Confirm or Reject pending requests. Mark confirmed visits as Completed.
- View My Properties: See a list of properties they own.
Admin:
- Admin Panel: Centralized dashboard for platform oversight.
- View All Properties: Access a list of all properties registered on the platform, regardless of owner or status.
- Delete Any Property: Ability to remove property listings for moderation or platform management. (Note: Admin Edit functionality is currently disabled in the UI but could be added).
- View All Bookings (Optional): Can view all booking requests across the system (if implemented).
- Backend:
- Java 17+
- Spring Boot 3.x
- Spring Web (MVC, REST Controllers)
- Spring Security (JWT Authentication, Role-Based Authorization, Method Security)
- Spring Data JPA / Hibernate (ORM)
- MySQL (Database)
- Maven (Build Tool)
- Lombok (Reduced boilerplate - Note: Ensure it's consistently used or removed)
- Frontend:
- React 18+
- React Router v6
- Axios (HTTP Client)
- CSS (Styling, potentially CSS Variables)
- Database:
- MySQL 8.0+
Prerequisites:
- Java Development Kit (JDK) 17 or later
- Apache Maven 3.6+
- Node.js (includes npm) v18+ or v20+
- MySQL Server 8.0+
- Git
git clone <your-repository-url>
cd <repository-folder>/backendReplace
<your-repository-url>with your actual GitHub repo URL.
Open the file:
src/main/resources/application.properties
Update with your MySQL configuration:
spring.datasource.url=jdbc:mysql://localhost:3306/realestate
spring.datasource.username=your_mysql_username
spring.datasource.password=your_mysql_passwordEnsure the
realestatedatabase exists in your MySQL server.
Manually create the realestate database in your MySQL server.
For development:
spring.jpa.hibernate.ddl-auto=updateIf you’ve created tables like property_amenities manually, use:
spring.jpa.hibernate.ddl-auto=validateor
spring.jpa.hibernate.ddl-auto=none./mvnw clean package -DskipTests./mvnw spring-boot:runThe backend server should start on:
http://localhost:8081
cd ../frontendnpm installnpm startThe frontend will run on:
http://localhost:3001
Proxy settings inpackage.jsonwill route API calls to the backend server on port8081.
- Start your MySQL database server.
- Run the Spring Boot backend:
./mvnw spring-boot:run- Start the React frontend:
npm start- Open your browser and go to:
http://localhost:3001
| Endpoint Group | Description |
|---|---|
/api/users/ |
Register, Login, Test Auth |
/api/public/ |
Public actions like Contact Form |
/api/properties/ |
GET list/details, POST create property |
/api/owner/properties/ |
PUT, DELETE, POST images (owner-specific actions) |
/api/bookings/ |
POST booking, PATCH status, GET user bookings |
/api/admin/ |
Admin actions (GET all properties, DELETE any) |
/uploads/ |
Serves uploaded property images |
- Client-Server
- Layered Architecture
- MVC (Spring Boot)
- RESTful API
- SOLID: SRP, OCP, LSP, ISP, DIP
- GRASP: Information Expert, Creator, Controller, Low Coupling, High Cohesion
- Backend: Repository Pattern, Service Layer, DTO, Dependency Injection
- Frontend: Component Pattern, Hook Pattern (React)
- Rutuja Bhagat – PES1UG23CS808
- Bhoomika R P – PES1UG23CS809
- Harshita Gujjar – PES1UG23CS810
- Hemavathi V M – PES1UG23CS811