A React app to help users find Canadian-made products, with features for searching, barcode scanning, and image recognition to check product origins.
Current Version: 0.3.1 - See CHANGELOG.md for version history
- Search for products and find Canadian-made alternatives
- Scan barcodes to check if products are made in Canada
- Take pictures of products for identification
- Dark mode support
- Server-side database with nightly updates
- Multi-database product lookup system
- Web search integration for enhanced product information
- Improved accuracy with multiple data sources
MapleScan uses multiple data sources to provide comprehensive product information:
- Open Food Facts - Primary open database for food products
- UPC Database - Additional barcode lookup service
- Go-UPC API - Enhanced product information service
- Google Custom Search - Web search fallback for products not found in databases
This project consists of two main parts:
- React Frontend: The user interface built with React, Tailwind CSS, and various libraries for barcode scanning and image recognition.
- Node.js Backend: A server that provides API endpoints and maintains a MongoDB database of products.
- Node.js (v14 or higher)
- MongoDB (for the backend)
-
Install dependencies:
cd maplescan npm install
-
Create a
.env
file:cp .env.example .env
-
Start the development server:
npm start
-
Install dependencies:
cd maplescan/server npm install
-
Create a
.env
file:cp .env.example .env
-
Update the MongoDB connection string in the
.env
file. -
Start the development server:
npm run dev
-
Sync the database:
npm run sync
The frontend can be deployed to GitHub Pages:
npm run deploy
This will build the application and deploy it to GitHub Pages at https://screech24.github.io/MapleScan
Alternatively, you can deploy to services like Netlify or Vercel:
npm run build
The backend can be deployed to services like Render, Heroku, or DigitalOcean. See the backend README for more details.
See CHANGELOG.md for a detailed version history.
- React
- Tailwind CSS
- React Router
- Axios
- React Webcam
- Quagga (barcode scanning)
- Tesseract.js (OCR)
- Node.js
- Express
- MongoDB
- Mongoose
- Node-cron
- Winston (logging)
- Open Food Facts API
- UPC Database API
- Go-UPC API
- Google Custom Search API
- Supabase
MIT