I noticed that one of the major things that have frustrated me and other students at my school was how they handled the school residences. Communication to staff or maintenance was difficult and inconvenient. I wanted to build a platform optimized for school and commercial residence management.
What it does
It has two main functionalities: assigning students to vacant residences using a matching algorithm and providing news updates. Administrators (staff, maintenance, property managers) upload a database file containing the details of their residences as well as a database file containing student data and their order of preference in choosing their residences. A matching algorithm pairs each student with a residence, the application automatically creates a new account with username and password credentials and adds it to the MongoDB database, and sends the student an email with their account information and how to log in.
How I built it
I used Node and Express to deal with the server-side elements and render layouts, MongoDB and Passport to store and secure account information, Python and SQLite to process the residence and student data and perform the matching algorithm.
Challenges I ran into
Accomplishments that I'm proud of
Successfully setting up a MongoDB server and learning more about MongoDB. I spent a good amount of time learning this, and I am certain that I am going to use MongoDB more in future projects. Successfully implementing an efficient matching algorithm.
What I learned
Some tools fit the task at hand more efficiently and appropriately than others. I think that this is definitely a lesson I learned, especially in the case of using MongoDB and Passport to secure passwords. Being relatively inexperienced in this topic, I wasted a lot of time trying to implement a MySQL server only to realize that MongoDB would be much easier and more straightforward to implement with Node and Passport provides better security. I learned that it's important to learn and adapt quickly.
What's next for ResidenceFlow
This is definitely a project that I plan on continuing to improve on and fixing bugs.