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.

Built With

Share this project:

Updates