// case study
Fruit freshness detection on GCP
An ML backend on Google Cloud for real-time image processing (Bangkit Academy).

Context
Bangkit Academy capstone, Cloud Computing track (Nov 2024), for the team app VeggieVision, which tells fresh fruit and vegetables from rotten ones. The cloud code is in the team repo.
Problem
A mobile app needed to judge fruit freshness from a photo in real time without overloading the user's device.
Approach
I built an ML-based image processing backend on Google Cloud, plus the API the mobile app talks to.
- An Express (Node.js) API that loads a TensorFlow.js model converted from the ML team's model (Kaggle dataset, trained in Jupyter Notebook, exported to
.h5). - A
POST /scanendpoint that takes a photo, stores it in Cloud Storage, then runs the prediction. /articlesendpoints (GET, POST, DELETE) for in-app articles.- Deployed to App Engine (Node.js 18 runtime).
Result
Photos from the app are processed in the cloud and results return to the user in real time.
What I learned
Designing an API that works for both the mobile team and the ML team.