Smart plant monitoring and care system that allows users to manage their personal garden through IoT technology, artificial intelligence, and gamification.
ECOA is a complete platform that combines:
- RESTful API Backend with Node.js, Express, and Supabase
- Web Frontend with HTML, CSS, and vanilla JavaScript
- Raspberry Pi Integration for IoT sensors
- External APIs for weather data
ECOA/
βββ backend/ # RESTful API with Express and Socket.IO
βββ frontend/ # Web application (client and admin)
βββ raspi/ # Raspberry Pi scripts
βββ integrations/ # External APIs (Weather)
βββ docs/ # Technical documentation
- Node.js >= 18.0.0
- npm >= 8.0.0
- Python 3.8+ (for Raspberry Pi)
- Supabase account
- API Keys for external services
- Clone the repository
git clone https://github.com/smallcakekoo/ecoa.git
cd ecoa- Setup Backend
cd backend
npm install
npm run dev- Setup Frontend
cd ../frontend
npm install
npm run dev- Setup Raspberry Pi (optional)
cd ../raspi
pip install -r requirements.txt
python main.py- Users: Account and profile management
- Plants: CRUD for plants and metrics
- Alerts: Notification system
- Achievements: Gamification and rewards
- Donations: Community support system
- Integrations: External APIs
- Client Dashboard: Interface for end users
- Admin Panel: System administration
- Real-time: Socket.IO and Supabase Realtime for live updates
- OpenWeatherMap - Current weather data (requires API key)
- Open-Meteo - Weather data fallback (no API key required)
- Supabase - Database and real time
Plants can "communicate" with you thanks to Google Gemini:
// Interaction example
POST /api/integrations/gemini/chat
{
"message": "How are you feeling today?",
"plantType": "rose",
"plantName": "Garden Rose"
}Raspberry Pi sensors for:
- Soil moisture
- Ambient temperature
- Light level
- Automatic watering control
- Achievements for plant care
- Experience levels
- Community donation system
Socket.IO for instant notifications:
- Plants that need water
- Changes in metrics
- Unlocked achievements
- Node.js + Express.js
- Socket.IO for real-time
- Supabase as database
- HTML5 + CSS3 + JavaScript ES6+
- Vite as bundler
- Socket.IO Client for real-time
- Raspberry Pi with Python
- Humidity and temperature sensors
- Automatic water pumps
For more in-depth information about specific components of the ECOA system, refer to the following documentation:
- Backend README - Complete backend setup, API endpoints, Socket.IO events, and Supabase configuration
- Frontend README - Frontend installation, environment variables, Vite configuration, and real-time features
- API Documentation - Complete REST API reference with request/response examples
- System Architecture - System design, component interactions, and data flow diagrams
- Database Schema - Supabase tables, relationships, and RLS policies
Create the corresponding .env files:
# Supabase
SUPABASE_URL=your_supabase_url
SUPABASE_ANON_KEY=your_supabase_anon_key
# Server
PORT=3000# Supabase Configuration (for Realtime)
VITE_SUPABASE_URL=your_supabase_url
VITE_SUPABASE_ANON_KEY=your_supabase_anon_keyNote: The frontend requires Supabase credentials to enable real-time updates via Supabase Realtime and tables with real-time updates. Make sure to create a
.envfile in thefrontend/directory with these variables before running the application.
- Backend API - Fully functional
- Supabase Integration - Configured
- Socket.IO - Real-time implemented
- Google Gemini - Talking plants
- Frontend - In development
- Raspberry Pi - Basic scripts
- Testing - Pending
- Ana TobΓ³n
- Cristina Jauregui
- Sary PayΓ‘n
