Skip to content

Cross-platform mobile app to track products you like using simple photos and computer vision

License

Notifications You must be signed in to change notification settings

gabriel-aleixo/pizza-vision

Repository files navigation

PizzaVision

I accidentally bought the same terrible frozen pizza brand twice 😖 and vowed never to let that happen again to me or anyone else! 🥶🍕🙌

Introduction

PizzaVision is a cross-platform mobile app where you can snap pictures of product packages and tag them as either "👍" or "👎".

Forget if you've tried a product before? Just snap a pic of the packaging, and the app will search your photos and show similar ones you've had in the past.

Download PizzaVision on the App Store

Live Demo PizzaVision Web App

(Android version to come)

Description

With so many products in stores, frozen pizza stands out as one of the most cluttered category. They all look alike with Italian-sounding names and picturesque images, but few are worth their price.

How do we remember which ones we've liked and which to avoid?

Enter PizzaVision: snap a pic of the package, tag it "👍" or "👎", and never forget your preferences again.

Motivation

As my final project for the Harvard CS50x course, I wanted to learn new technologies and hone my product developement skills, while tackling a meaningfull problem for society.

PizzaVision allowed me to learn new technologies, particularly mobile development and computer vision, by tackling a common problem: remembering product preferences.

While I had postpone the broader societal impact bits, I certainly solved my own problem!

Installation

Clone the repository

  • git clone
  • cd pizza-vision\ionic-app
  • npm i

Supabase

You don't need to sign up for a Supabase account to run this code locally. Just run Supabase locally on your machine.

Run Supabase locally

  • Install the Supabase CLI, along with Docker.
  • Skip supabase init as the supabase folder is included.
  • supabase start
  • add a .env file to the ionic-app folder with the following:
REACT_APP_SUPABASE_URL=http://localhost:54321
REACT_APP_SUPABASE_ANON_KEY=(the anon key displayed when you start Supabase)
  • Open Supabase Studio on your localhost, go to "Storage" and add a bucket called "photos".

Deploy to Supabase platform

This project doesn't allow direct collaboration on backend code yet, but you can deploy to your own Supabase project.

More details here

Run the App

  • npm run start from the ionic-app directory

Tech Stack

Frontend

Backend

  • Supabase: relational database, Auth, object storage, basic CRUD API, realtime API.

Features

  • User authentication via one-time password with email.
  • Basic user profile management.
  • Snap pictures with the phone's camera.
  • Upload directly from the camera or from the phone's photo library.
  • Tag pictures as "👍" or "👎".
  • View similar images ordered by degree of similarity.
  • Library view ordered by date taken.
  • Filter library by tags.
  • Sync local images with cloud.

TODO

  • Improve performance of image processing.
  • Implement infinite scroll on home feed.
  • Add account management options.
  • Image optimization.
  • Library sharing.
  • Automatically classify images using EfficientNet (predictions from MobileNet aren't accurate enough for our use case).
  • Filter and reorder library view.

References

About

Cross-platform mobile app to track products you like using simple photos and computer vision

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages