EcoDrop is a smart recycling system that combines a mobile app, web admin dashboard, AI and computer-vision validation, and an ESP32-powered SmartBin.
- Mobile app: React, Vite, and Capacitor
- Web admin dashboard: Next.js and TypeScript
- Backend: FastAPI, MongoDB, and Redis
- AI and computer vision: OpenCV with optional Roboflow integration
- SmartBin firmware: ESP32, servo control, and an IR barrier sensor
The system awards recycling points only after image validation succeeds and the SmartBin sensor confirms that the item entered the bin.
apps/mobile/ Mobile application
apps/web-admin/ Admin dashboard
services/backend/ API and IoT orchestration
services/ai-cv/ Image validation service
packages/shared/ Shared TypeScript contracts
iot/smartbin-esp32/ ESP32 firmware
docs/ API, architecture, deployment, and planning documents
- Node.js and npm
- Python 3.10 or newer
- MongoDB and Redis for non-mock backend operation
- Platform tooling for Android, iOS, or ESP32 development as needed
npm install
npm run dev:mobilenpm run dev:webcd services/backend
python -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt
uvicorn app.main:app --reload --port 8000cd services/ai-cv
python -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt
uvicorn app.main:app --reload --port 8010Copy the appropriate example environment file before running the services:
cp .env.example .envFor production, configure real Google OAuth credentials, non-default JWT, admin, and device secrets, a production database, a supported AI mode, and the correct mobile and admin API origins.
Never commit filled environment files or device credentials. The ESP32 firmware requires its own backend URL and device token configuration.
Production deployment guidance is available in:
Production mode must disable demo authentication, mock persistence, seeded demo data, mock AI, unsafe CORS, and in-memory command handling.
Reward points must remain sensor-gated. Image validation alone must never award points without confirmation from the SmartBin sensor.