This project aims to assist users, particularly parents, in finding suitable schools, neighborhoods, and homes. It helps users make informed decisions when selecting a home to buy, with a strong emphasis on school quality and educational attainment history.
- Navigate to the
server
directory. - Run
npm install
to install server side dependencies. - Start the server with
npm start
- Navigate to the
client
directory. - Run
npm install
to install dependencies. - Start the client with
npm start
and access it atlocalhost:3000
The project relies on the following major dependencies:
- Node.js: The runtime environment for the server.
- Express: The web application framework for Node.js.
- React: The front-end library for building user interfaces.
- Material-UI: The React UI framework for implementing Google's Material Design.
- Axios: The promise-based HTTP client for making requests.
All dependencies, except Node.js, can be installed via npm as specified in the package files.
The data
directory houses three curated datasets pivotal to our project, alongside scripts utilized for data cleaning.
Note that some preprocessing was conducted manually and is not reflected in the scripts.
Databse was MySQL hosted on AWS RDS. Here is the Relational Schema for reference
To ensure optimal performance and user experience, we implemented various query optimization techniques:
- Indexing: Created indexes on frequently queried columns to improve search speed and efficiency.
- Pagination: Implemented pagination for large result sets to reduce memory usage and improve response times. Here is the added section on query optimization:
- Indexing and Temp Tables (Materialized Views): We strategically created indexes on frequently accessed columns and utilized temporary tables to reduce the computational complexity of complex queries.
- Pushed-in selections and projection using relational algebra equivalences: We applied relational algebra equivalences to reorder and simplify queries, allowing the database to efficiently execute them. We also utilized the Datagrip's Explain Plan to analyze and optimize query execution.
Franci Branda-Chen, Aaron Wu, Hussain Zaidi, Jesse Zong