RentalSphere is a versatile platform that addresses the complexities of property management, streamlining operations for landlords while enhancing the rental experience for tenants through innovative features and analytics-driven insights.
- In the backend directory, run
./mvnw install
. - After successful compilation and build, go to the root directory of the repository and run
docker-compose build
. - After docker images are built successfully, run
docker-compose up
. - Ctrl + c to stop the containers.
- Please run
docker-compose down
after stopping the containers.
Scenario: User registers on the website
Given a person visits the website for the first time
When the person fills out the registration form with their details
Then the person should submit the registration form
And the person should be successfully registered as a user
And their role on the website should be set as user
Scenario: User logs in with valid credentials
Given a registered user wants to access the website
When the user enters their username and password
Then the user should be able to successfully log in
And should gain access to user-specific features and functionalities
Scenario: Property manager's role gets added after property approval
Given a user has registered and posted a property on the website
And the property has been approved by the admin
When the property manager logs in
Then the user's role should be updated to include the property manager role
Scenario: Tenant's role gets added after tenant request approval
Given a user has registered and applied for a property as a tenant
And the tenant application has been approved by the property manager
When the user logs in
Then the user's role should be updated to include the tenant role
Scenario: User fills out property posting form
Given a normal user is logged in
When the user fills out the property posting form with relevant details
Then the user should submit the property posting request
And the request should be sent to the admin for review
Scenario: Admin approves property posting request
Given the admin is logged in
And there is a pending property posting request
When the admin reviews and approves the property posting request
Then the property should be successfully posted on the website
And the user's role should be changed to property manager
Scenario: Property manager adds further properties
Given a user has the role of property manager
When the property manager wants to add a new property posting
Then the property manager should be able to add the property without admin approval
And the newly added property should be immediately visible on the website
Scenario: User applies for a property posting
Given a normal user is logged in
And the user is viewing a property posting they are interested in
When the user fills out the tenant application form for that property
Then the user should submit the tenant application request
And the request should be sent to the respective property manager for review
Scenario: Property manager reviews tenant application
Given the property manager is logged in
And there is a pending tenant application request for their property
When the property manager reviews the tenant application
Then the property manager should have the option to approve or decline the request
Scenario: Property manager approves tenant application
Given the property manager approves a tenant application request
Then the user who applied should be granted tenant access to the property
And the user's role on the website should be updated to include both user and tenant roles
Scenario: User views property as a tenant
Given a user has been granted tenant access to a property
When the user views the property listing
Then the user should see the tenant view of the property details
And the user should have access to tenant-specific features and information
Scenario: Admin views property requests
Given the admin is logged in with admin credentials
When the admin accesses the admin page
Then the admin should be able to view a list of property requests
And each request should display relevant details for review
Scenario: Admin reviews property request
Given the admin is viewing a property request on the admin page
When the admin reviews the details of the property request
Then the admin should have the option to accept or decline the request
Scenario: Admin accepts property request
Given the admin decides to accept a property request
Then the property associated with the request should be approved and posted on the website
Scenario: Admin declines property request
Given the admin decides to decline a property request
Then the property associated with the request should not be approved or posted on the website
Scenario: Property manager adds a new lease
Given a property manager is logged in
When the property manager adds a new lease for their property with start date, end date, rent, etc.
Then the new lease should be successfully added to the property
Scenario: Property manager updates an existing lease
Given a property manager is logged in
And there exists an existing lease for their property
When the property manager updates the lease with new details such as start date, end date, or rent
Then the lease should be successfully updated with the new information
Scenario: Property manager removes a lease
Given a property manager is logged in
And there exists an existing lease for their property
When the property manager removes the lease
Then the lease should be successfully removed from the property
Scenario: Tenant views property lease
Given a tenant is connected to a property
When the tenant views the property details
Then the tenant should be able to view the lease details for that property
Scenario: Property manager adds a new announcement
Given a property manager is logged in
When the property manager adds a new announcement with a title and description
Then the new announcement should be successfully added for all tenants connected to their properties
Scenario: Property manager updates an existing announcement
Given a property manager is logged in
And there exists an existing announcement
When the property manager updates the announcement with new title and/or description
Then the announcement should be successfully updated for all tenants connected to their properties
Scenario: Property manager deletes an announcement
Given a property manager is logged in
And there exists an existing announcement
When the property manager deletes the announcement
Then the announcement should be successfully removed for all tenants connected to their properties
Scenario: Tenant views property announcements
Given a tenant is connected to a property
When the tenant views the property details
Then the tenant should be able to view the announcements posted by the property manager for that property
Scenario: Tenant posts an item for sale
Given a tenant with the role of tenant is logged in
When the tenant posts an item for sale in the marketplace with relevant details
Then the item should be successfully posted for other tenants to view
Scenario: Tenant views items for sale in the marketplace
Given a tenant with the role of tenant is logged in
When the tenant accesses the marketplace
Then the tenant should be able to view all items posted for sale by other tenants
Scenario: Tenant expresses interest in buying an item
Given a tenant with the role of tenant is logged in
And the tenant views an item they are interested in buying
When the tenant clicks on the item for more details
Then the tenant should be redirected to their mail application with the receiver set as the posting tenant's email address for further communication
Scenario: Property manager logs a violation
Given a property manager is logged in
When the property manager logs a violation on their property with a description, intensity, and any associated monetary cost
Then the violation should be successfully added to the violation log for the property
Scenario: Tenant views violation log
Given a tenant is connected to a property
When the tenant views the property details
Then the tenant should be able to view the violation log for that property, including descriptions, intensity, and any associated monetary costs
<h3>Feature: Dashboard Analytics (Property Manager)</h3>
Scenario: Property manager views dashboard analytics
Given a property manager is logged in
When the property manager accesses their dashboard
Then the property manager should be able to see an overview of all related features, such as lease management, announcements, violation log, etc.
And clicking on each feature should allow the property manager to navigate to that specific feature for further details and actions
Scenario: Tenant views dashboard analytics
Given a tenant is logged in
When the tenant accesses their dashboard
Then the tenant should be able to see an overview of all related features, such as property details, marketplace, violation log, etc.
And clicking on each feature should allow the tenant to navigate to that specific feature for further details and actions
Dependency | Version | Usage | Link |
---|---|---|---|
SpringBoot | 3.1.4 | Java Framework for REST APIs | Link |
Spring Security | 3.1.4 | Authentication and access-control framework | Link |
Lombok | 1.18.30 | Autogenerate getter setters in POJO classes. | Link |
MySQL Connector | 8.1.0 | Connects application to the MySQL | Link |
JSON WebToken | 0.11.2 | Generates JWTs in the application for authorization. | Link |
Cloudinary | 1.34.0 | Cloud storage and image/video manipulation service. | Link |
JUnit5 | 5.9.2 | Unit testing of the modules. | Link |
Thymeleaf | 3.1.4 | Templating engine for HTML emails. | Link |
JSON WebToken (jjwt-jackson) | 2.15.3 | Generates JWTs in the application for authorization. | Link |
Kaushal Sapara
LinkedIn
GitHub