Inspiration
The social issues of dog abandonment hit the news quite frequently. People chose to abandon their dog because it grew by size unexpectedly and they think it is no longer cute. Some people could not handle energy level of their dogs. These led to abandonment of dogs. I decided to tackle this problem to make an app that gives potential dog adopters an option to get information about the puppy with an image.
What it does
Puppify allows users to take a photo of a dog or select one from their gallery to identify its breed.
The app uses image recognition to analyze the picture and returns detailed information about the dog's 1) breed 2) breed group 3) height 4)weight 5) temperament 6) energy level 7) common health concerns.s.
How we built it
Swift and SwiftUI: For the front-end mobile interface, making the user experience intuitive and visually appealing.
Python (Flask): For the back-end server to handle image uploads, API requests, and data processing. MongoDB Atlas: To store and manage data about different dog breeds, including breed groups, popularity, and health information.
MongoDB Atlas/Pymongo: MongoDB Atlas was used to store the data of user credential and the password was hashed and saved. Pymongo framework was used to interact with the MongoDB Atlas.
GPT 4o API: GPT4o was called with an image input and generated the information about a puppy and passed it along through API endpoints to the Front-end.
Ngrok: Ngrok was used to deploy the Back-end Python Server. Front-end and Back-end communicated with each other through API endpoints. The Ngrok deployment helped.
Challenges we ran into
The challenge was the base64 string. The base64 string generated from swiftui had problems and I could not figure this out for many hours. I switched from base64 encoding to actually uploading a photo to the server. I initially deployed the backend to render.com but after base64 did not work, I had to upload actual photo and render.com did not allow this feature with free tier. Then I decided to switch to Ngrok.
Accomplishments that we're proud of
We’re proud of creating a visually engaging and user-friendly app that makes breed identification accessible to everyone. Implementing data visualizations that provide insights into popular dog breeds was another accomplishment we’re excited about, as it enriches the user's learning experience. Overcoming technical challenges related to data fetching and integrating various components also taught us valuable lessons in mobile and backend development.
What we learned
Through building Puppify, we learned a lot about integrating machine learning APIs, working with MongoDB Atlas, and handling image uploads in Swift. This project also enhanced our skills in managing data between a Python backend and a SwiftUI frontend. Additionally, we gained insights into user interface design for an educational app, making sure it’s both informative and interactive.
What's next for Puppify
More UI improvement.
Log in or sign up for Devpost to join the conversation.