PlantifyDr 🌿
Inspiration
It all started when a lot of our family friends told us about the problems they were having with the leaves of their plants in their gardens and how they didn’t know how to diagnose and treat them. Upon further research, I found out that billions of dollars are lost in the U.S. alone out of crop production and a staggering 20-40% of the global crop production is lost every year due to a lack of knowledge in farmers on how to treat their crops. Furthermore, many farmers are forced to resort to using environmentally harmful pesticides, further harming biodiversity. I wanted to create a seamless platform where farmers, gardeners, and plant hobbyists could learn and implement sustainable methods to treat plant diseases.
What it does
PlantifyDr is a mobile application utilizing 2D Convolutional Neural Networks (CNNs) to diagnose crop diseases through the image classification of plant leaves. After classifying the plant disease, it then provides the user with an organized treatment plan that avoids the use of environmentally harmful materials such as pesticides.
How I built it
As the full-stack developer for this application, I worked closely with the backend and frontend. The backend of the application was built with Python. Specifically, I used fastai, a deep learning library for Python based off of PyTorch. To serve the model I utilized, Flask, a Python library that manages the micro web framework aspect of the project. Docker compose was used to containerize this application and manage dependencies in the backend, while the Web Server Gateway Interface (WSGI) was used to build a production-grade web application. I comprehensively tested my custom inference API with Postman, an API testing platform. The backend was entirely hosted on Amazon Web Services (AWS) compute instance. In the frontend, I coded the iOS app with Swift and designed a user interface with Adobe XD. I then connected the frontend and backend where the frontend could send POST requests of base-64 encoded images to the backend for inference through Apple's API.
Challenges I ran into
As the sole developer for this application, I was tasked with tackling both the frontend and backend of the application. At first, I had trouble grasping the deep learning concepts, but as time went on I gained a greater understanding of theoretical concepts and modifying hyperparameters in the deep learning model. As I became more immersed in creating a suitable machine learning pipeline for this project, I needed a viable dataset that accounted for the variability in plant conditions. After countless hours of work I combined the best data sources I found into a dataset with over 125,000 images of plant diseases and created the largest publicly available dataset for plant disease detection on Kaggle, the popular data science platform. Additionally, I had trouble designing a user interface (UI) that would prove to meet a users’ needs. This involved conducting many surveys and asking for multiple beta testers for my app.
Accomplishments that I'm proud of
I was able to finish this project as the sole developer of the application. During the time that my app was on the App Store, my app received over 4,000 downloads. I also had a large user-base of farmers using my app.
What I learned
- full-stack development
- app development
- UI design
- exploratory data analysis
- deploying deep learning systems
- API development
- beta-testing applications
- how to market an application
What's next for PlantifyDr
- In the future, I would like to add more plant types and diseases to my dataset.
- Additionally, I want to add more features like plant nutritional deficiency recognition which can help provide insight into pesticide free and biological treatment of plants. Something else I might have done differently was build my app in React Native or Flutter as it would have allowed me to bundle my iOS and Android app together which would be easier to do as the only developer.
- Finally, I would like to implement and experiment with more state-of-the art models including XResNet and its variants for transfer learning on different datasets.

Log in or sign up for Devpost to join the conversation.