ScanScavvy is a smart barcode scanner app built for the Walmart Hackathon using React Native (Expo Go) for the frontend and Express.js (Node.js) for the backend.
It leverages ngrok to expose the backend server globally for real-time mobile interaction.
The app was designed to enhance in-store and online shopping experiences by:
- ๐ฆ Scanning product barcodes
- ๐ Displaying key product info: expiry date, manufacture date, and nutritional data (e.g., fat, protein composition)
- ๐ค Recommending alternative products with a similarity score
- ๐ฃ๏ธ Converting all product info into speech for accessibility
- ๐๏ธ Adding products to a cart and calculating the total cost
- ๐ Real-time barcode scanning and product analysis
- ๐ง Smart suggestions based on product similarity
- ๐จ๏ธ Text-to-speech for accessibility
- ๐ Cart management with total price display
- ๐ Backend exposed globally via ngrok
| Part | Technology |
|---|---|
| Frontend | React Native + Expo Go |
| Backend | Node.js + Express.js |
| Networking | ngrok (for global tunnel) |
| Utilities | Text-to-Speech, Similarity Logic |
git clone https://github.com/Subhash-777/ScanScavvy.git
cd ScanScavvy-
Backend:
cd backend npm install -
Frontend:
cd ../frontend npm install
- Start your Express server:
cd backend npm start - In a separate terminal, launch ngrok:
ngrok http 3000
- Copy the generated ngrok URL (e.g.
https://abcd1234.ngrok.io)
Update it infrontend/api.jsasAPI_BASE_URL.
- Start the Expo project:
cd frontend expo start - Scan the QR code with Expo Go app to launch on your device.
ScanScavvy/
โโโ backend/
โ โโโ index.js โ Express backend entry point
โ โโโ routes/ โ Product routes and logic
โโโ frontend/
โ โโโ App.js โ React Native main app
โ โโโ api.js โ API endpoint (ngrok URL goes here)
โ โโโ components/ โ UI elements
โโโ README.md
โโโ .gitignore
Every time you restart ngrok:
- Run
ngrok http 3000 - Copy the new URL (e.g.,
https://xyz.ngrok.io) - Paste it into
frontend/api.js - Restart the frontend app
-
โ App not connecting to backend?
- Check if ngrok is running and the new URL is correctly added.
- Ensure backend server is running.
-
๐ CORS or network errors in Expo?
- Add
corsmiddleware in backend. - Restart Expo and ngrok if needed.
- Add
- ๐ Deploy backend to cloud (Heroku, AWS, etc.)
- ๐ Secure API with JWT authentication
- ๐ข๏ธ Connect to database for persistent storage
- ๐ฑ Polish UI and improve accessibility support
Made by Subhash Powered by React Native, Express.js, ngrok, and creativity โจ