EcoScan
EcoScan - ITC UTHMのKitaHackチーム向けのAI廃棄物分別ゲーム化プロジェクト
- スター
- 1
- フォーク
- 0
- 最終プッシュ(UTC)
- 2026/09/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
- In Authentication → Sign-in method, enable Email/Password.
- In Firebase AI Logic, start with the Gemini Developer API and enable the required API.
- In App Check, register the web app with a reCAPTCHA Enterprise provider.
- Add
localhostfor local testing and your Firebase Hosting domains for production. - 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.
カテゴリー
使用している依存関係
依存関係一覧 10 件
- flutter
{"sdk":"flutter"} - flutter_riverpod
^3.3.2 - firebase_ai
^4.0.0 - firebase_app_check
^0.4.8 - firebase_auth
^6.2.0 - firebase_core
^4.3.0 - cupertino_icons
^1.0.8 - camera
^0.11.3+1 - flutter_test開発用
{"sdk":"flutter"} - flutter_lints開発用
^6.0.0
プロジェクトに合うリポジトリを選ぶには?
用途で絞り込み、開発状況を比較し、採用前に元のリポジトリで要件を確認しましょう。
- 名前・作者・説明で検索し、技術トピックで絞り込みます。
- スター、フォーク、最近のプッシュを比較します。スターは関心の目安であり、品質の保証ではありません。
- 利用前に GitHub で README、ライセンス、Issues を確認します。
情報源と管理
“A repository is the most basic element of GitHub.”
GitHub Docs — About repositories ↗