Inspiration
Like most projects, our project was inspired by boredom in Singapore. As Locals who have lived here all their lives, we found that there is nothing much to do in Singapore. No attractions, no events, nothing to "spice up" our weekends. That is why we designed KiasuPlanner: Your all in one, one stop events planner specifically designed to make Singapore lively again.
What it does
KiasuPlanner consolidates events from various local websites and incorporates them into one website, where users can plan their days and discover lively activities to do within Singapore. In KiasuPlanner, users can browse upcoming events in Singapore, search for events that interest them, and add them to an interactive timeline, where they can organise and plan their day. Specifically, we incorporate travel time in the timeline, so users will know how long it will take to travel from one event to the other! Additionally, we also include details about the event, including its location. Behind the scenes, we tag events into different categories, and recommend events to users based on the categories that the user prefers!
How we built it
KiasuPlanner is split into 2 different components: The Data Processing Pipeline, and the Webapp itself. The Data Processing Pipeline is hosted on AWS, following this flow:
Webscraper -> Deduplicator -> Classifier-forwarder -> Classifier -> Database
The webscraper, Deduplicator, and Classifier-forwarder are all AWS Lambda functions, tied together using AWS Stepfunctions, and triggered using AWS EventBridge. The Classifier, due to the size of its dependencies, is hosted in an EC2 instance instead, with the Classifier-forwarder function acting as a "fire and forget" function. After events are tagged using the DistilBERT model in the classifier, they are finally stored in the database.
For the webapp itself, the backend is hosted in an AWS EC2 instance, and the frontend is deployed on vercel.
Challenges we ran into
One of the largest challenges was on the frontend side where we had to design an interactive yet intuitive timeline interface that accounts for travel times between events. We had to integrate the frontend and backend seamlessly, ensuring that event data retrieved was able to be fetched and displayed on the user interface. This complexity of calling APIs and then handling the adding of events across different layers caused us to go through many iterations to get it working
Another challenge was designing the data processing pipeline on the backend, especially regarding the Classifier. Since the dependencies were too large, a serverless approach was not possible, hence the need to host it on a dedicated EC2 instance and creating a forwarder Lambda function to keep the pipeline serverless where possible.
Accomplishments that we're proud of
We are proud that KiasuPlanner is able to handle event data scraped from many different websites. Additionally, we got a chance to apply what we've learnt from the workshops: from the webscraper to handling api calls and securing the site.
We are also proud of the technical backend architecture: By using AWS Stepfunctions, AWS Lambda, and AWS Eventbridge, we created a scaleable and maintainable data pipeline that will automatically keep our database up to date with the latest and greatest events in Singapore, all with minimal human intervention.
On the frontend side, we are proud to have integrated UI libraries with NextJS code to made a dynamic and engaging user interfaces.
What we learned
This project was the first time that all of us had actually designed, built, and deployed a webapp from scratch. Through this event, we got to gain hands on experience in the world of fullstack development, from backend architecture designing, coding, and hosting on the cloud. On the frontend, it was the first time that most of us had used next.js, therefore designing a responsive user interface was challenging, yet rewarding.
What's next for KiasuPlanner
We aim to incorporate more features for greater user interaction with KiasuPlanner in the future, including reviews for event hosts and past events, and allowing users to create their own event listing. Additionally, we did our best to try and create a "Surprise Me" feature, where we handle the planning of events for the user, but due to time constraints, could not get it to work. Hence, we hope to improve on the function in the future, so as to create a sense of excitement for users of KiasuPlanner.
Built With
- amazon-ec2
- aws-eventbridge
- aws-lambda
- fastapi
- heroui
- nextjs
- rds
Log in or sign up for Devpost to join the conversation.