AgriSenseNet (CropWise)
The Challenge
The platform spanned 14 independently developed microservices — a FastAPI backend, a React dashboard, an MQTT–Kafka bridge, Spark, and six ML inference services. Each had different dependencies and build requirements, and the team needed a consistent, reproducible way to build all of them and keep the deployed cluster in sync with what was in Git.
My Approach
I containerized all 14 services, authoring 27 Dockerfiles with multi-stage builds to keep images lean. I then built a GitHub Actions CI pipeline using Buildx caching that publishes SHA-tagged images to GitHub Container Registry, and bridged it to GitOps via repository dispatch — automatically updating the Kubernetes manifests that ArgoCD watches.
Outcome
Every merge produces reproducible, SHA-tagged images and automatically updates the Kubernetes manifests ArgoCD deploys from, so the running cluster stays in sync with Git without any manual deployment steps.