Check how evil your food is.
A barcode scanner and a client for the Open Food Facts API for Android and iOS, built with Ionic + Vue + Capacitor.
Scan a barcode (or type it), and EvilCheck tells you what is wrong with the product — ultra-processing, additives, palm oil, animal exploitation, a poor Nutri-Score or Eco-Score — and what is right about it. No account, no analytics; nothing leaves the device except the barcode you look up.
- Node.js 22 or newer
- Android Studio with JDK 21, for Android
- Xcode with command-line tools and CocoaPods, for iOS
npm installnpm run devCamera scanning needs a real device; in the browser, use the manual barcode field.
npm run verify # lint + typecheck + unit tests + production buildIndividual steps: npm run lint, npm run typecheck, npm test, npm run test:coverage.
npm run sync # build the web app and copy it into android/ and ios/
npx cap open android # then Build > Generate Signed App Bundle
npx cap open ios # then Product > ArchiveSee store/RELEASE.md for the full submission checklist, and store/ for
the listing copy and the screenshots.
src/
services/ API client, product analysis, barcode maths, scanner, storage <- all unit-tested
composables/ useProduct: the lookup lifecycle (cache -> network -> history)
components/ presentational pieces (verdict, findings, score badges)
views/ HomePage, ScanPage, ProductPage
i18n/ six locales; English is the reference catalogue
tests/unit/ Vitest suites
store/ App Store / Play Store assets and copy
Rule of thumb: anything that forms an opinion about a product lives in src/services/analysis.ts and is
covered by tests/unit/analysis.spec.ts. Components only render what it returns.
Product data comes from Open Food Facts, a free and collaborative database, under the Open Database License. The app identifies itself on every call and stays within the documented rate limits (15 requests per minute), caching lookups on the device for a day.
- Raphaël Renaudon for OnlineCreation
- You ?
This project is licensed under the MIT License - see the LICENSE.md file for details