Skip to content

A platform for adopting and caring for virtual plants. Users adopt plants as virtual pets, earn accessories through donations, and admins manage the platform and donations.

Notifications You must be signed in to change notification settings

SmallCakekoo/ECOA

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

ECOA Logo

🌱 ECOA - Ecosystem Companion Optimization Assistant

Node.js Express.js Supabase Vite Socket.IO Vercel

JavaScript HTML5 CSS3 Python

Smart plant monitoring and care system that allows users to manage their personal garden through IoT technology, artificial intelligence, and gamification.

Description

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

System Architecture

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

Quick Start

Prerequisites

  • Node.js >= 18.0.0
  • npm >= 8.0.0
  • Python 3.8+ (for Raspberry Pi)
  • Supabase account
  • API Keys for external services

Installation

  1. Clone the repository
git clone https://github.com/smallcakekoo/ecoa.git
cd ecoa
  1. Setup Backend
cd backend
npm install
npm run dev
  1. Setup Frontend
cd ../frontend
npm install
npm run dev
  1. Setup Raspberry Pi (optional)
cd ../raspi
pip install -r requirements.txt
python main.py

Main Services

Backend API (Port 3000)

  • 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

Web Frontend (Port 5000)

  • Client Dashboard: Interface for end users
  • Admin Panel: System administration
  • Real-time: Socket.IO and Supabase Realtime for live updates

Integrated APIs

  • OpenWeatherMap - Current weather data (requires API key)
  • Open-Meteo - Weather data fallback (no API key required)
  • Supabase - Database and real time

Main Features

Smart Plants

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"
}

IoT Monitoring

Raspberry Pi sensors for:

  • Soil moisture
  • Ambient temperature
  • Light level
  • Automatic watering control

Gamification System

  • Achievements for plant care
  • Experience levels
  • Community donation system

Real-time Alerts

Socket.IO for instant notifications:

  • Plants that need water
  • Changes in metrics
  • Unlocked achievements

Technologies Used

Backend

  • Node.js + Express.js
  • Socket.IO for real-time
  • Supabase as database

Frontend

  • HTML5 + CSS3 + JavaScript ES6+
  • Vite as bundler
  • Socket.IO Client for real-time

IoT

  • Raspberry Pi with Python
  • Humidity and temperature sensors
  • Automatic water pumps

Detailed Documentation

For more in-depth information about specific components of the ECOA system, refer to the following documentation:

Setup Guides

  • 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

Technical References

Environment Variables

Create the corresponding .env files:

Backend (.env)

# Supabase
SUPABASE_URL=your_supabase_url
SUPABASE_ANON_KEY=your_supabase_anon_key

# Server
PORT=3000

Frontend (.env)

# Supabase Configuration (for Realtime)
VITE_SUPABASE_URL=your_supabase_url
VITE_SUPABASE_ANON_KEY=your_supabase_anon_key

Note: The frontend requires Supabase credentials to enable real-time updates via Supabase Realtime and tables with real-time updates. Make sure to create a .env file in the frontend/ directory with these variables before running the application.

Project Status

  • 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

Development Team

  • Ana TobΓ³n
  • Cristina Jauregui
  • Sary PayΓ‘n

About

A platform for adopting and caring for virtual plants. Users adopt plants as virtual pets, earn accessories through donations, and admins manage the platform and donations.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 3

  •  
  •  
  •