HouseHub was the product of a semester-long Software Engineering project during the summer of 2019. The goal was to follow the formulation of a product while following common Software Engineering practices. These included those such as requirements gathering, security analysis, and more. HouseHub specifically had the goal of connecting students at UC who wanted to fill a sublease with those looking to acquire a sublease. HouseHub was implemented as a WebApp and on Android, with an independent custom-built API, which allowed for efficient interfacing between each platform and the database. For the API, since we were transmitting sensitive user data, such as e-mails and passwords, we implemented JSON Web Token standards. This allowed us to generate a payload (JSON string of the data) and then encrypt it, and then using this we would generate a separate hash which would be sent with the encrypted payload. This ensured that the data wouldn't be plain text, and then we could also verify the integrity of the data (ensure it came from a valid source) by validating the hash.
The WebApp featured the following
- Registration/Login/Logout system
- Ability to view all available listings
- Ability to view all available listings in a detailed view
- Ability to sort listings based upon price or created date
- Users can save or unsave listings to come back to later
- Filter listings based on specific text, min/max prices, My Listings, and My Saved Listings
- Users can post and update listings which they have posted
- Users can hide/unhide a listing they have posted
- Users can view account information for their account and others
- Users can update their account information
- All user forms provide error checking and feedback for incorrect entries
- Allow users to delete their listings
- Allow users to deactivate their account
- Option on the Login screen for users who had forgotten their password
- Account e-mail activation
- Administration features such as reporting listings, ability to delete listings, ability to delete users
- Semester availability options
- Allow users to check specific available semesters when posting a listing
- Ensure listings are within a two mile radius (utilize Google Distance API)
- Fully responsive WebApp
- HTTPS to ensure the data being transmitted between the front-end and back-end was encrypted
- If this were a production environment this would be a major priority. But because this is a school project we decided to not move forward with this due to the cost of securing a trusted certificate
- Login/Registration/Logout system
- View all available listings
- View a listing in detail
- Sort and Filter listings based on price, specific text, My Listings, My Saved Listings
- View account information
One of the major challenges was navigating the group dynamic. I took on the role of the Project Manager and was responsible for ensuring everything was appropriately timelined with a team of four others. One of the issues our team faced was conflict when coming up with the project. We originally had a different idea, but decided to change, which one of our members disagreed with. This resulted in un-needed conflict within the group but was effectively managed by describing why we decided to change, along with being mature and approaching the conversation with open minds.
Another challenge was from the project management side. My initial role as Project Manager included that I float between both the WebApp and Android teams, to help develop the projects in tandem and ensure seamless functionality. However, I spent most of my time working on the API and WebApp, which resulted in the Android app missing many of the key features. In turn, the Android team and I worked quickly to develop several of the features we felt were most important to meet the end of the semester deadline. In the future, I now recognize how important it is to develop these different platforms in tandem and keep communication between myself and each team thorough. This way, everyone is on the same page and knows exactly what should be developed, along with how to do it.
The third challenge I felt was most difficult to overcome was the massive course/workload each of our team members had. During the summer, we each were taking 18 credit hours of core classes. These core classes each were extremely demanding, and at times we weren't able to put as much time into developing this project as we would have liked. As well, the class we were developing HouseHub for focused more on process than project, so we spent a lot of time creating documentation rather than developing. In the future, I would approach the solution to this problem by beginning with a smaller feature set and not overcomplicating the project. As well, I would push the other team members such that we all put in a substantial amount of effort to successfully, and effectively, produce a thorough product.