GitHub 代码仓SNFASA/EcoScan

EcoScan

EcoScan - 针对ITC UTHM KitaHack团队的AI垃圾分拣游戏化项目

EcoScan 项目封面
星标
1
复刻
0
最近推送(UTC)
2026年9月30日
项目状态
未归档

原始 README

以下为英文项目原文快照,最新内容请访问 GitHub。

EcoScan

EcoScan is ToastTech's guest-first waste-sorting app. Point a camera at a household item and Firebase AI Logic asks Gemini to classify it, suggest a bin, and provide a short recycling tip.

The project began at KitaHack 2026 and is now being prepared as a public Flutter/Firebase project.

Access model

Feature Guest Registered user
Home Yes Yes
AI waste scan Yes Yes
Local session points Yes Yes
Impact breakdown Yes Yes
Rankings No Yes

Rankings currently contain preview entries and the signed-in user's local session points. A shared, persistent leaderboard will require a Firestore data model and security rules; the UI calls this out rather than presenting demo values as live data.

Architecture

Flutter web/mobile
  ├─ Firebase Authentication (email/password, Rankings only)
  ├─ Firebase App Check (abuse protection)
  ├─ Firebase AI Logic → Gemini Developer API (waste scans)
  └─ Riverpod in-memory state (guest points and Impact)

Firebase Hosting serves build/web

The app does not contain a Gemini API key. Firebase AI Logic brokers AI calls, and App Check helps reject unauthorized clients. Firebase web configuration in lib/firebase_options.dart identifies the Firebase project; it is not a server secret.

Local development

Requirements
  • Flutter 3.41.1 or a compatible stable release
  • A Firebase project with a registered web app
  • A browser/device with a camera
  • Firebase CLI only if you plan to deploy
Firebase console setup
  1. In Authentication → Sign-in method, enable Email/Password.
  2. In Firebase AI Logic, start with the Gemini Developer API and enable the required API.
  3. In App Check, register the web app with a reCAPTCHA Enterprise provider.
  4. Add localhost for local testing and your Firebase Hosting domains for production.
  5. Keep budget alerts and API usage monitoring enabled even when using no-cost quotas.
Run
flutter pub get
cp config.example.json config.local.json
flutter run -d chrome --dart-define-from-file=config.local.json

Replace the placeholder in config.local.json with the public reCAPTCHA Enterprise site key. config.local.json is ignored by Git. Do not add a Gemini API key, service-account JSON, passwords, or App Check debug tokens to this repository.

The camera requires HTTPS in production; localhost is accepted during development.

Validate and build

dart format --output=none --set-exit-if-changed lib test
flutter analyze
flutter test
flutter build web --release --dart-define-from-file=config.local.json

For detailed Firebase and GitHub deployment setup, see docs/DEPLOYMENT.md.

Project status

  • Guest scanning and local Impact state are implemented.
  • Rankings are account-gated with Firebase Authentication.
  • Shared leaderboard persistence, password reset, account deletion, scan history, and recycling-centre maps are not implemented yet.
  • Bin colours are a prototype convention. Disposal guidance varies by local authority and should be verified before a public regional launch.

Contributing and security

See CONTRIBUTING.md, CODE_OF_CONDUCT.md, and SECURITY.md.

License

EcoScan is licensed under the GNU General Public License v3.0. Derivative distributions must comply with the GPL's source-sharing requirements.

SYED NABIL GitHub avatar
GitHub 作者

SYED NABIL ↗

Error like how convoluted my life is.....

COREMIND HUBMALAYSIA
语言DartC++CMakeSwiftHTMLCKotlinObjective-C

分类

使用的依赖

依赖清单 10 项

如何选择适合项目的代码仓?

先按使用场景筛选,再比较项目活跃情况,最后到原始仓库核对使用要求。

  1. 通过仓库名、作者或描述搜索,再按技术分类缩小范围。
  2. 结合星标、复刻与最近推送比较项目;星标反映社区关注,不代表质量保证。
  3. 使用前在 GitHub 核对 README、许可证与 Issues。

来源与维护

“A repository is the most basic element of GitHub.”

GitHub Docs — About repositories ↗