FindMyHome is a web based application for finding roommates and houses based on preferences set by the users. Preferences like maximum number of roommates, pets policy, rent contribution, dietary habits etc. Users are suggested with people who are similar to their preferences in an order with highest matches at the top. Once two users like each other they are fromed into a group and the users will be unable to like any other users. Users can join existing groups which are suggested to the users based on their prefereneces. The user has an option to see the details of the members in the group and if the user like the group then the user is added to the group once any of the group member approve. Users can post lisitings and view all the listings. Users can form a group to apply for the listings or an user can apply for the listings individually.
Our deplloyed application link
Front end: React, Java Script
Back end: Spring Boot using Maven Wrapper, Java, Mysql
For the front end we have used reactjs which requeries nodejs and npm.
Check for if the npm and nodejs are installed
npm -v
node -v
To install npm & nodejs.
For the back end we have developed using java version 17 & maven(any version after 3.8 ) wrapper based spring boot application
Check for if java and maven are installed
java -version
mvn -v
For installing java & maven on windows, for mac.
For storing the data we have used MySQL(Any version after 8.0.26).
mysql -version
For installing MySQL on windows, for mac.
The steps to install the application and run it.
Clone the repository:
git clone https://git.cs.dal.ca/courses/2023-winter/csci-5308/group17/
Install the necessary dependencies:
For the frontend (React JS), navigate to the frontend directory:
cd group17/Frontend/react-group17/
and run:
npm install
For the backend, navigate to the backend directory:
cd group17/Backend/group17/
and run:
mvn clean install
Configure the database:
Create a MySQL database and user with appropriate permissions. In the application.properties file (located in group17/Backend/group17/src/main/resources), update the database configuration to match your MySQL database:
spring.datasource.url=jdbc:mysql://localhost:3306/<database-name>?useSSL=false&serverTimezone=UTC
spring.datasource.username=<database-username>
spring.datasource.password=<database-password>
Start the application:
For the frontend (React JS), navigate to the frontend directory
cd group17/Frontend/react-group17/
and run:
npm start
For the backend (Spring Boot), navigate to the backend directory:
cd group17/Backend/group17/
and run:
mvn clean install
This will create a jar file inside the target folder, move to the target folder:
cd group17/Backend/group17/target/
and run the jar file:
java -jar group17-0.0.1-SNAPSHOT.jar.original
else run the commend in backend directory which will start the application directly:
mvn spring-boot:run
Access the application in your local:
The frontend will be available at http://localhost:3000.
The backend API will be available at http://localhost:8080.
User Scenarios: A college student who is moving to a new country would want to use the home finder application to search for affordable apartments or roommates near their university. They can open the application and enter property or roommate preferences, such as the number of roommates,pets, rent contribution. The application presents them with a list of available housing options, and they are able to view photos and read details. If they find a property that they are interested in, they are able to like it.
The application starts with the login page. It also provides an option to Register if the user has not already registered.
The registration page provides an option to the user to register by providing basic personal information.
The user can add property preferences and the roommate preferences. Property preference refers to the kind of property they are looking for and roommate preferences refer to the basic habits that would prefer in their roommates.
This page shows all the listings as per the preference of the user. To view the images of the listing the user can click on show details.
Profile page provides an option to the user to edit their information and to view their group members, view the users they have liked, create a listing, view groups, edit preferences and view their like requests.
If the user is not in a group then it shows the recommended groups to the user. If the user is already in a group then it won't recommend any group to the user.
From the profile page the user can create a listing and upload basic details along with the pictures.
After signing out the user is re directed to the login and register page.
We have covered around 69% of the unit tests cases
-
Dhanesh Walte - B00934223 - [email protected]
-
Maulik Gajipara - B0034641 - [email protected]
-
Muskan Vazirani - B00912626 - [email protected]
-
Naveen Kunapaneni - B00930132 - [email protected]
-
Sreya Gajjipara - B00922295 - [email protected]