Inspiration

Now with a placement offer for next year, I have had to start looking for accommodation. This is a stressful and time consuming process of trying to contact various people who may or may not be in housing groups already, looking for people to live with. It seemed that maybe this whole process could be streamlined, using a purpose built app that circumvents the need for using emails or messengers where it can be difficult to gauge whether or not you will get along with someone. This is how we came up with Serendipity.

What it does

The current prototype demonstrates the functionality of the app. A user can access a homepage and sync their contact details with the app and our matching algorithm will search the database to identify not only who the user might get along with, but who is likely to get along with the user. By comparing preferences like whether or not the user wants an alcohol or smoke free house and budgets, we can rank all other users going to same the location and push them to the top. Once the user finds someone they think they will get along with, they can invite them to a group. This group will then be placed into circulation for other users to request to join. The result being that everyone can find a group that aligns best with their personality.

How we built it

The backend of the program is built in Python using Flask. This interfaces with the frontend, built in Flutter (Dart). The data for all the users is stored in a database that runs on SQLite. Effectively, the Python creates an API that allows the Flutter project to communicate with the database to save and retrieve data.

Challenges we ran into

The main challenge was learning to use Flutter. We had prior experience with SQL and Python as a result of coursework projects from school. Using Dart/Flutter however was a fully new experience - the first few hours were spent familiarising ourselves with this and setting up a simple communication system between Flutter and Python using REST HTTP commands.

Accomplishments that we're proud of

We are very proud of how we managed to implement 3 separate systems, SQLite, Python and Flutter. For most of the day, Oliver worked on the backend and Jacob handled the frontend and at the end we managed to get the two to communicate. We are particularly happy with being able to gain experience with an unfamiliar language and staying focused for the whole 24 hours.

What we learned

We mainly learnt the value of dividing tasks. As previously mentioned, we both worked on a different part of the program. In this sense, we could consider the other system a black-box where we didn't know how systems were implemented, just knew what inputs and outputs needed to be provided to get the result we needed.

What's next for Serendipity

Future plans for the app would first focus on the new user experience. Providing an AI guided introduction to help a user setup their account. There would be substantially more criteria for ranking housemates, perhaps considering male/female only groups or even identifying common interests. The algorithm would also learn what a given user is likely to be happy with. Finally, the business aspect. The main requirement for this would be to a much larger userbase, perhaps implementing adverts to make it profitable. A larger userbase would mean that people could match with people from other universities, perhaps even extending to students placed abroad.

Built With

Share this project:

Updates