This project is a comprehensive Home Search Engine application built with Java and the JavaFX framework. It allows users to view a collection of house data, perform various search operations, sort the data, and dynamically add new house properties.
- Data Persistence: The application reads house data from a
home_data.jsonfile on startup and saves any new additions back to the same file. - Dynamic Property Addition: A feature is implemented to allow the user to input details for a new property and add it to the live data set.
- Input Validation: All new property data is validated using methods in
ErrorValidation.javato prevent bad or missing data from being added.
- Input Validation: All new property data is validated using methods in
- Advanced Search Functionality: Users can search the house listings using multiple criteria:
- City/State/Zip
- Number of Bedrooms and Bathrooms
- Minimum and Maximum Price Range
- Square Footage (SqFt)
- Data Sorting: The application provides two different sorting algorithms for house listings based on the property price:
- Bubble Sort
- Merge Sort
- Error Logging: Exceptions encountered during data reading or other processes are logged to an
error_logfile.
| Technology | Purpose |
|---|---|
| Java | Core programming language. |
| JavaFX | Used for the Graphical User Interface (GUI) development. |
| JSON Simple (org.json.simple) | Library for parsing and writing JSON data (e.g., home_data.json). |
| JUnit 5 | Used for unit testing the model and service classes. |
Home Page and Data Entry
This is the application's initial interface, showing both the search input fields on the left and the new property addition form on the right.

Search by City/State/Zip
The application allows filtering the entire dataset by location.

Search by Bedrooms and Bathrooms
Users can filter the homes based on the number of bedrooms and bathrooms.

Search by Min/Max Price
A search can be narrowed down to a specific price range.

Author: Michael Arg.
Email: michgw7@gmail.com