// the find
openfoodfacts/smooth-app
🤳🥫 The new Open Food Facts mobile application for Android and iOS, crafted with Flutter and Dart
The Flutter front-end for Open Food Facts — scan a barcode, get Nutri-Score, Eco-Score, allergen info, and additive lists pulled from a crowdsourced database of 3+ million products. It's a real production app with 1300+ stars and active releases, not a demo project. Aimed at Flutter developers who want to see how a large, multi-platform mobile app is structured at scale.
The monorepo package split is well thought out — scanner backends (MLKit vs ZXing), app store variants (Google Play, F-Droid, Apple), and the core app are separate packages with their own pubspecs, so you can swap implementations without touching the main app. The CI pipeline is thorough: separate workflows for translation validation, dependency review, Waldo UI sessions, and multiple release tracks (internal, beta, production) all automated via Fastlane. The Figma-first design process with a defined graphic charter means the UI is intentional rather than ad hoc. Contributing infrastructure is unusually good — weekly video meetings, structured issue templates, CODEOWNERS, Hacktoberfest participation — this is a project that actually onboards outside contributors.
The multi-entrypoint setup (separate `main_google_play.dart`, `main_ios.dart`, etc.) plus shell scripts that mutate `pubspec.yaml` to swap dependencies is fragile and confusing — a new contributor will be lost without reading the CI scripts carefully. The Flutter version is pinned to 3.41.8 via FVM, which is fine in principle, but the README's troubleshooting section already documents cache-busting workarounds for pub dependency conflicts, which suggests the dependency graph is under stress. Test coverage appears thin from the repo structure — most `test/` directories contain a single placeholder test file, so there's no meaningful automated regression safety net for a production app of this size. Offline behavior isn't documented at all in the README, which matters a lot for a scanning app used in supermarkets with spotty connectivity.