When creating R4R, we took into account factors that might shape one's renting needs, such as accessibility, efficiency, and our personal experiences and frustrations as university students trying to rent off-campus housing. R4R is a platform that is meant to support those needs by providing a faster, more personalized approach to house-hunting.
What it does
Rentals 4 Real is a platform which automates the rental search process for you. All you have to do is tell us what you are looking for and we will do the rest!
- Live SMS Alerts - Real time house hunting
- When new properties are added near you, you are automatically notified to you so you can grab good deals in time!
- Aggregates from several different platforms; a universal solution for renting, subletting and accommodation.
- Get SMS alerts for properties that you have saved, so you are always on top of the house search!
- Smart recommendations - Find your dream home
- Our smart recommendation system will find you the best properties based on your preferences.
- You can also filter by price, location, and more!
- Save your favourite properties to view later.
- Easy to use UI
- Our simple and intuitive UI makes it easy to find your dream home.
- Automatic property updates
- Our database is updated daily, so you will always have the latest listings and will receive an alert when a new one is posted.
How we built it
We store all the listings and user data in one MongoDB database hosted by MongoDB Atlas. We chose a MongoDB database because of its excellent Geospatial indexing that allows us to search for listings near a user's location.
The REST API
We decided to use Python with FastAPI for the REST API backend. FastAPI has features like script type support and documentation generation that were vital for this project. The backend uses Python's MongoDB driver to connect and query the database to prepare data for the frontend to use.
The web scraper
The web scraper is built in Node.js using the Puppeteer library and express, and is responsible for finding new listings online by scraping multiple sites in order to find the newest listings. Once a new listing is posted, the Node.js express server finds relevant users from the MongoDB database and alerts them of the new listing using Twilio's SMS API.
Challenges we ran into
Deploying the site was not easy; there were a lot of errors and "but it works on my machine". The root domain was not working properly for a while and we were almost forced to use a subdomain. Luckily we managed to fix it and it works as planned. Another big challenge was integrating the frontend and backend. The frontend team had different ideas from the backend team and when it was time to integrate them we had to adjust. Finally, the biggest obstacle we ran into was time; we all strongly believe in the potential of the app but we kept ourselves back because we told ourselves "Oh there is no time for this". We were always against the clock.
Accomplishments that we're proud of
We are proud of our teamwork and how we managed to present a working product despite all the challenges. We are glad to have worked together as a team to create something we believe in. We are also happy to have the domain r4r.tech, which is a very rare domain; it's not only 3 letters but it's also a palindrome.
What we learned
Participating in this hackathon and developing this project was incredibly rewarding. We used numerous softwares and tools, some of which we may not have heard of before. We were all able to learn from each other and learn from the process of creating a functioning software from scratch. We developed our skills with APIs, learned how to debug servers, and honed our skills with databases. Most of all we learned how to manage our time to effectively complete all necessary tasks in the given time.
What's next for R4R - Rentals 4 Real
There is much that can be done with this project. For instance, we can expand our databases to accommodate international users by scraping data from global housing websites in addition to Canada. Furthermore, we could implement the ability to "save/favourite" certain houses so that users can receive specific notifications about homes they are interested in.