Skip to content

Pranjal6955/Sprouty

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

224 Commits
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

🌱 Sprouty - Virtual Plant Caretaker WebApp

A smart assistant to help you care for your plants with ease and intelligence.

🧩 Overview

Sprouty is a full-stack MERN web application that helps users manage their real-life plants by providing care reminders, growth tracking, plant identification, and disease diagnosis. Whether you're a beginner plant parent or a green-thumb enthusiast, this app is your personal assistant for a greener lifestyle.

πŸ“Œ Features

🌿 Plant Management

  • Smart Identification: Add plants via image-based identification using Plant.ID API
  • Manual Entry: Add plants through text search or manual entry
  • Plant Gallery: View all your plants with thumbnails, care status, and quick actions
  • Care History: Track watering, fertilizing, pruning, and other care activities

⏰ Care Reminders

  • Smart Scheduling: Set customizable recurring reminders for plant care
  • Multi-type Notifications: Get notified for watering, fertilizing, and pruning
  • Due Reminders Dashboard: View upcoming plant care tasks

🩺 Plant Health

  • Disease Diagnosis: Identify plant diseases and get treatment recommendations
  • Health Tracking: Monitor plant health status and history
  • Care Recommendations: Get personalized care tips based on plant species

🌦️ Weather Integration

  • Weather Monitoring: Get real-time weather data for your location
  • Weather-based Recommendations: Adjust plant care based on local weather conditions
  • Location Search: Find and save your location for accurate weather data

πŸ“Š User Features

  • User Profiles: Manage your account details and preferences
  • Dark Mode Support: Toggle between light and dark themes for comfortable viewing
  • Responsive Design: Optimized for mobile, tablet, and desktop devices

πŸ“Έ Screenshots

🏠 Home Dashboard

Project Screenshot 1

Main dashboard showing plant overview, weather information, and upcoming care reminders

🌱 Plant Gallery

Screenshot Project 5

Your personal plant collection with care status indicators and quick actions

πŸ“± Plant Identification

Screenshot Project 7

Smart plant identification using camera or uploaded images

πŸ”” Care Reminders

Screenshot Project 4

Upcoming care tasks and reminder management interface

🩺 Plant Health Diagnosis

Screenshot Project 8 Screenshot Project 9

Disease diagnosis and health monitoring for your plants

🌦️ Weather Integration

Screenshot Project 6

Real-time weather data with plant care recommendations

πŸ“Š Plant Details

Screenshot Project 10

Detailed plant information, care history, and health tracking

πŸŒ™ Dark Mode

ScreenshotProject 11

Clean dark theme for comfortable nighttime viewing

πŸ’» Tech Stack

Frontend

  • Framework: React.js
  • Styling: Tailwind CSS
  • Icons: Lucide React
  • State Management: React Context API
  • Routing: React Router
  • HTTP Client: Axios
  • Camera Integration: React Webcam

Backend

  • Runtime: Node.js
  • Framework: Express.js
  • Database: MongoDB with Mongoose ODM
  • Authentication: JWT, Google OAuth
  • File Handling: Multer
  • Scheduled Tasks: Node-Cron

External APIs

  • Plant Identification: Plant.ID API
  • Weather Data: OpenWeatherMap API

πŸš€ Project Structure

Frontend Structure

/Frontend
β”œβ”€β”€ /public             # Static files
β”œβ”€β”€ /src
β”‚   β”œβ”€β”€ /assets         # Images, icons, and other static assets
β”‚   β”œβ”€β”€ /components     # Reusable UI components
β”‚   β”œβ”€β”€ /contexts       # Context providers (auth, notifications, theme)
β”‚   β”œβ”€β”€ /pages          # Main page components
β”‚   β”œβ”€β”€ /services       # API service modules
β”‚   └── /utils          # Helper functions
β”œβ”€β”€ index.html          # Entry HTML file
β”œβ”€β”€ tailwind.config.js  # Tailwind CSS configuration
└── package.json        # Dependencies and scripts

Backend Structure

/Backend
β”œβ”€β”€ /config             # Configuration files and environment setup
β”œβ”€β”€ /controllers        # Request handlers
β”œβ”€β”€ /middleware         # Custom middleware (auth, error handling)
β”œβ”€β”€ /models             # Database schemas
β”œβ”€β”€ /routes             # API routes
β”œβ”€β”€ /services           # External services (email, cron jobs, etc.)
β”œβ”€β”€ /utils              # Utility functions
β”œβ”€β”€ server.js           # Entry point
└── package.json        # Dependencies and scripts

βš™οΈ Setup Instructions

Prerequisites

  • Node.js (v14+)
  • MongoDB (local or Atlas)
  • API keys for Plant.ID and OpenWeatherMap

Frontend Setup

# Navigate to frontend directory
cd Frontend

# Install dependencies
npm install

# Create .env file with necessary variables
# Example:
# VITE_API_URL=http://localhost:5000/api
# VITE_GOOGLE_CLIENT_ID=your_google_client_id

# Start development server
npm run dev

Backend Setup

# Navigate to backend directory
cd Backend

# Install dependencies
npm install

# Create .env file with necessary variables
# Example:
# PORT=5000
# MONGODB_URI=mongodb://localhost:27017/sprouty
# JWT_SECRET=your_secret_key
# PLANT_ID_API_KEY=your_plant_id_api_key
# WEATHER_API_KEY=your_openweathermap_api_key

# Start development server
npm run dev

πŸ”‘ Environment Variables

Frontend (.env)

VITE_API_URL=http://localhost:5000/api
VITE_GOOGLE_CLIENT_ID=your_google_client_id

Backend (.env)

PORT=5000
NODE_ENV=development
MONGODB_URI=mongodb://localhost:27017/sprouty
JWT_SECRET=your_jwt_secret
JWT_EXPIRE=30d
GOOGLE_CLIENT_ID=your_google_client_id
GOOGLE_CLIENT_SECRET=your_google_client_secret
PLANT_ID_API_KEY=your_plant_id_api_key
WEATHER_API_KEY=your_openweathermap_api_key

πŸ“‘ API Endpoints Overview

Authentication

  • POST /api/auth/register - Register a new user
  • POST /api/auth/login - Login user
  • GET /api/auth/me - Get current user

Plants

  • GET /api/plants - Get all user plants
  • POST /api/plants - Create a new plant
  • GET /api/plants/:id - Get a specific plant
  • PUT /api/plants/:id - Update a plant
  • DELETE /api/plants/:id - Delete a plant
  • POST /api/plants/identify - Identify plant from image

Reminders

  • GET /api/reminders - Get all reminders
  • POST /api/reminders - Create a reminder
  • GET /api/reminders/upcoming - Get upcoming reminders
  • PUT /api/reminders/:id/complete - Mark reminder as completed

Weather

  • GET /api/weather - Get current weather
  • GET /api/weather/recommendations - Get weather-based recommendations

User

  • GET /api/users/profile - Get user profile
  • PUT /api/users/profile - Update user profile
  • PUT /api/users/password - Update password

🌐 Deployment

Frontend Deployment

The frontend is deployed on Vercel. Live Link: https://frontend-sprouty.vercel.app/

Backend Deployment

The backend is deployed on Render. API Base URL: https://sprouty-backend.onrender.com/api

πŸ§ͺ Testing

Detailed API testing commands are available in the postman_tests.md file in the Backend directory.

πŸ“„ License

MIT License. See LICENSE for more details.

πŸ™ Acknowledgements

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages