A Flutter-based eco-friendly app featuring waste scanning, AI chatbot, weather monitoring, and environmental insights. It features a premium, minimalist light-mode design system with a clean, gradient-free interface.
- Frontend: Flutter (Android, Web)
- Backend: Node.js + Express + MySQL
- AI:
- Google Gemini 1.5 Flash (highly cost-effective and fast image analysis & tips)
- Groq (AI chatbot assistant)
- Weather: OpenWeatherMap API
- Auth: Google Sign-In + JWT
- Design System:
- Typography: Plus Jakarta Sans (loaded via
google_fonts) - Theme: Premium Light Mode (background:
#F7F9F4, cards:#FFFFFF) - Color Palette:
- Primary (Navy):
#143D60 - Secondary (Teal):
#27667B - Accent (Green):
#A0C878 - Highlight (Light Yellow-Green):
#DDEB9D
- Primary (Navy):
- Visuals: Flat design with subtle shadows, zero gradients, and consistent card spacing and typography.
- Typography: Plus Jakarta Sans (loaded via
- Flutter SDK ≥ 3.x
- Node.js ≥ 18.x
- MySQL (XAMPP / Laragon / standalone)
- A package manager:
npmfor the server
git clone https://github.com/demmagence/eco.git
cd eco
flutter pub getOpen lib/core/constants/api_constants.dart and fill in your keys:
| Constant | Where to get it | Default / Recommended Model |
|---|---|---|
geminiApiKey |
Google AI Studio | - |
geminiModel |
Google AI Studio | gemini-1.5-flash |
groqApiKey |
Groq Console | - |
owmApiKey |
OpenWeatherMap | - |
googleMapsApiKey |
Google Cloud Console | - |
Also update web/index.html — replace YOUR_GOOGLE_WEB_CLIENT_ID with your OAuth Web Client ID.
cd server
cp .env.example .env # Windows: copy .env.example .envEdit server/.env and fill in:
JWT_SECRET— a strong random string (min 32 chars)DB_PASSWORD— your MySQL root password (if any)
cd server
npm install
node init-db.js # Creates eco_db schema
node server.js # Starts on http://localhost:3000# Android (ensure server is running, emulator uses 10.0.2.2:3000)
flutter run
# Web
flutter run -d chromeEmulator note: If running on Android Emulator, change
apiBaseUrlinapi_constants.darttohttp://10.0.2.2:3000/api.
- Fork the repository
- Create a feature branch (
git checkout -b feat/your-feature) - Commit your changes
- Open a Pull Request
Never commit real API keys or secrets. All sensitive values belong in api_constants.dart (local only, not committed) and server/.env (git-ignored).