Inspiration
When volunteering first comes to mind, one might think of the various beneficiaries and organisations that always require help on a regular basis. We wanted to take a different approach to the matter that hits close to home through helping the people around you, your neighbours.
What it does
Our solution hopes to provide a one-stop avenue for Singaporeans who wish to take part in volunteering activities but find it difficult to find a suitable one within close range. We believe that lending a hand to one another will foster greater camaraderie in the neighbourhood and reignite that ‘kampung’ spirit.
How we built it
We chose Telegram as its a popular messaging app and it is readily accessible to the general public, which complements the convenience of using the bot to locate possible volunteering events nearby. These events are grouped by categories, giving users a choice on which volunteering activities they wish to participate in. With Telegram being intertwined in our social lives, our team translated our ideation into an actual Telegram bot prototype using Python and Telegram (python-telegram-bot). Throughout the developmental phase, our frontend was established with the Telegram API, using the app as its interface. For the backend, we used Firebase Realtime Database to store the data parsed from the bot.
Challenges we ran into
This was the first hackathon our team had participated in and it was a very humbling experience. We had unfamiliarity with the python-telegram-bot syntax, which posed a challenge as we wanted to make the bot very responsive for our users. Calculating the distance between two postal codes in our bot also proved a challenge, as we could not find a suitable public API to help us do so. Hence, we resorted to using the python pandas module to parse the data from a CSV file (https://www.listendata.com/2020/11/zip-code-to-latitude-and-longitude.html) that contained the postal codes and their corresponding latitudes and longitudes. We then used a formula to calculate the distance using latitude and longitude. The backend using Firebase was also quite confusing at first, as we did not know the respective syntax. However, we slowly got the hang of it and managed to implement it to fetch and store our data.
Accomplishments that we're proud of
In truth, it came to us as a surprise that we have managed to complete our ideation and developmental cycle, 12 hours within our expectations. Our team was actually anticipating for us to stay overnight till the morning to complete this whole project, but thankfully, we all could have a good night's rest.
What we learned
We improved on our programming knowledge and experience, but we have also learnt about the applicability of making use of what we have to come out with a feasible solution. Not all of us had experience with the various technologies and languages we touched but we managed to understand them on a deeper level after the hackathon. We’ve also learnt how to use source control such as Git as a team, working simultaneously on a project and communicating about what our differing ideas were. We were also greatly humbled as we underestimated the amount of effort it took to actually create a fully functional application. Although it seemed like a simple application, we learned that we had to break down our application into individual components and connect the dots well.
What's next for Help A Neighbour Out
Our group consists of incoming Y1 CS students, and the main reason why we took this hackathon was to gain experience and exposure. We hope to improve on the bot’s capabilities and add more features or constant updates should it gain fame and recognition.
1) For example, rather than custom keyboard buttons, we could have implemented inlinekeyboard instead (which we attempted to do in the beginning). However, due to our inexperience, we had difficulties in manipulating the Callback query data type that stemmed from the inlinekeyboard and hence we resorted to use a simpler method.
2) Another improvement we could've done is detecting inaccurate data entry. If someone writes illogical words/numbers on the form, our bot is not able to detect it. We could've improved it using Regular expressions, but there is no set pattern to a name/address, hence we were not able to implement this as well.
3) Lastly, due to the lack of time we were unable to implement a function to remove the job from the database once it has been marked as "complete".
Log in or sign up for Devpost to join the conversation.