Group 21
- Pang Zi Jian Adrian
- Peter Febrianto Afandy
- Muhammad Nur Dinie Bin Aziz
- Tng Jian Rong
- Lionel Sim Wei Xian
- Ryan Lai Wei Shao
Plogathon is an innovative mobile application designed to revolutionize waste management and promote recycling through plogging - an exercise introduced in Sweden back in 2016 that combines both jogging and picking up litter. Despite the increased interest of plogging in Singapore, activities are currently organised using manual means such as Facebook groups. Plogathon aims to streamline this process to promote the adoption of plogging, together with recycling.
Plogathon integrates cutting-edge technologies to guide users to nearby recycling bins for proper waste disposal, as well as machine learning to determine the recyclability of items in real-time during plogging sessions. The mobile application is developed using Flutter to provide a seamless mobile experience, and leverages on cloud-native computing for efficient data processing.
Plogathon aligns with several of the United Nations' Sustainable Development Goals (SDGs), fostering a cleaner planet and advocating for good health and personal well-being.
Join us in creating a Cleaner World for tomorrow, One stride at a time!
Plogathon adopts a microservices-based architecture for better scalability, reliability and performance. It consists of three microservices that are orchestrated together using Docker, and Kubernetes. These microservices work in tandem to support the Plogathon mobile application's operations.
These microservices include:
- Activity Microservice (For Strava operations)
- User Microservice (For user authentication and CRUD operations)
- Classifier Microservice (For machine learning classification of items' materials and their recyclability)
Microservices-based Architecture
Plogathon's adoption of a microservices-based architecture for its backend infrastructure provides several strategic advantages in terms of reliability, scalability, and overall system efficiency. Communication between the frontend and both the user and activity services employs gRPC, while HTTP is utilized for the interaction between the frontend and the classification service.
Cloud-Native
Google Kubernetes Engine (GKE) by Google Cloud facilitated the hosting of our Cloud Native Kubernetes Deployment, enabling rapid cluster creation and deployment. Leveraging the cloud platform, it offers centralized server development for the Plogathon project, particularly advantageous for developing mobile Flutter applications where mobility is essential for testing. This approach enhances collaboration and efficiency within the development team.
Integration with Google's Direction Service API
Google's direction service API is integrated into Plogathon to provide navigation to the nearest recycling bin locations. Leveraging on the robust capabilities of Google Maps API, it calculates the optimal plogging path to guide users towards designated recycling bins where they can recycle materials. Additionally, users can view nearby bins plotted as markers on the map before commencing the plogging activity. During plogging, after picking up a recyclable material, users can also opt to reroute to the nearest bin, enhancing user experience.
Community Engagement (Integration with Strava)
Strava is one of the most popular applications used for tracking users' physical activity. Plogathon supports Strava Single Sign On (SSO) login to allow users to track and share their plogging activities onto Strava. A Plogathon club has been created in Strava to allow users to initiate group activities and to further engage the community.
Recyclability Classifier (Machine Learning)
The recyclability classifier is aimed at improving users’ recycling knowledge and educating them on what is recyclable. It takes in an image of a potential recyclable provided by the end user, and outputs the item’s recyclability and proper waste disposal instructions. It consists of two components, the Object Material Type (OMT) classifier, as well as recyclability evaluator. These components work in tandem to provide users with up to date recycling knowledge, educating and aiding them in performing proper waste disposal.
To see a walkthrough and demonstration of Plogathon, click here, or scan the QR code below!
Docker/ (Docker and Kubernetes files)
plog-activity-service/ (code for Activity Microservice)
plog-classify-service/ (code for Classification Microservice)
plog-user-service/ (code for User Microservice)
plogathon/ (code for Flutter-based mobile applciation)
plogathon.sql (SQL migration file for Plogathon's database)
README.md (this file)
To setup your own MySQL database for this project, follow the instructions below:
- Ensure that you have MySQL installed on your computing environment. Install MySQL here.
- Run the following command to import the empty MySQL database that has the necessary tables for Plogathon:
This command will automatically create the
mysql -u<username> -p < plogathon.sql
plogathon
database schema. If you plan on using a different schema (ensure that it is created), run the following command instead:mysql -u<username> -p <schema name> < plogathon.sql
-
Follow the instructions to install Flutter.
-
Install (
Git LFS
) -
cd
intoplogathon
foldercd plogathon
-
Copy config file
cp env/config-example.json env/config.json
-
Edit
env/config.json
and add google maps api key -
Install dependencies
flutter pub get
-
Select your device and run flutter referencing the config file
flutter run --dart-define-from-file env/config.json
-
(Optional) To run in release mode
flutter run --dart-define-from-file env/config.json --release
Disclaimer: This deployment requires a cloud server to provide external endpoints to the 3 core services. Suggestion: Google Kubernetes Engine(GKE)
Prerequistes
- Have Helm Installed
- Have Kubernetes and Docker Installed
- Package Helm Chart for deployment
helm package Docker/PlogChart
- Install and Deploy
helm install <name-of-deployment> <packaged-file-name>.tgz
Archived and stored
Variables are stored in Config Map and Secrets in the Kubernetes Cluster