Apartment Finder Project

Innovation Insurgents - FSE Spring 2023

Roster
Evan Easton
Ishika Patel
Lakshmishree Chandra
Rithik Kumar Athiganur Senthil
Shreyas Kapoor
Website URL
Wiki Link
Overview Link
User stories Link
GitHub repository Link
Production software Link

Build instructions:

  • To run on localhost, In root directory, run command "npm start" to start the server.
  • In another terminal, "cd client && npm start" to start the client.
  • Launch http://localhost:3000/ in a browser.

Final Project Submission Rubric

Rubric Item Github repo location
Web application - basic form, reporting
Data collection dataCollection folder on the root contains getData.py file that extracts the data from the rapidApi and then sends that data to the rabbitMQ. store_server.py then subscribes to the queue, ingests the data from it, does some processing on the data and stores it into the database.
Data analyzer dataAnalyzer folder on the root contains reviewAnalysis.py file that contains the code for reveiw Analysis using the flair library.
The data gets send from the review.js file on a rabbitMQ message queue. Here, the data is ingested, analysisis done on the review, and then stored into the database.
Unit tests Unit test on Node.js part of the code is here.
Unit test on React code is here
Unit test on Python code is here and here
Data persistence - any data store We are using MongoDB for our data storage requirements.

dbConnect folder on root connects to our cloud database hosted on Atlas for our MERN stack requirements. Additionally we have used pymongo when connection to the database from python scripts in dataCollection and dataAnalyzer
Rest collaboration internal or API endpoint We have exposed our backend API endpoints from the routes folder. Each file contains different POST, GET, DELETE endpoints depending on the usage.

Our front end API endpoints are exposed from the components folder on client/src/components path.
Product environment
Integration tests We have used Mocha framework and chai library to do our integration testing. Files inside the test folder contains integration tests
Using mock objects or any test doubles When testing the login flow, in the login test file, line 10, 23, 34 shows how we have used mock data during the integration testing.
Line 10, 22, 36 in the property test file also shows the same.
Continuous integration We have used github workflows for our Continuous Integration. Here, we are building out project using npm and testing our project as well.
Production monitoring instrumenting
Acceptance tests For acceptance tests, we have not used any framework but have tested all of our endpoints after deploying on heroku. As discussed with the TAs, this was acceptable.
Event collaboration messaging We used RabbitMQ when extracting the data from rapidApi and then storing it into the database.
We again used RabbitMQ when we published the data from Node code to the datAnalyzer code written in Python.
Continuous delivery

Demo

Watch the video