Skip to content

johendrickson/capstone

Repository files navigation

Plant Pal 🌱

Plant Pal is a full-stack web application that helps users track and care for their plants.

It combines AI-generated plant information, location-based weather alerts, and customizable watering reminders into one tool.


Overview

Plant Pal is designed for anyone who wants an easier way to manage indoor and outdoor plants.

Users can store plant details, receive email reminders for watering, and get notified about weather conditions that might harm their plants.

Key capabilities:

  • Store and manage plant information (CRUD operations)
  • AI autofill for plant details based on scientific name
  • Email alerts for frost, heat waves, cold snaps, and dry heat spells
  • Customizable watering schedules with reminders
  • Location-based features powered by ZIP code to coordinate conversion

Features

  • Plant Inventory Management – Create, view, update, and delete plant records with fields such as scientific name, common name, watering frequency, location (indoor/outdoor), and optional notes.
  • AI-Autofill – When a scientific name is entered, the Gemini API automatically fills in optional plant details such as preferred soil type, propagation methods, edible parts, and pet safety. All AI-generated data can be reviewed and edited by the user.
  • Weather Alerts – The backend checks daily forecasts and sends email alerts for conditions like frost, heat waves, cold snaps, or extended dry heat spells, helping users take preventive action for outdoor plants.
  • Watering Reminders – Based on a plant’s custom watering schedule, users receive email reminders. Multiple plants due on the same day are combined into a single digest email.
  • Zip-to-Coordinates Conversion – At signup or when updating a ZIP code, the app uses the LocationIQ API to convert the ZIP code into latitude and longitude coordinates, which are stored and used for weather forecasting.

Tech Stack

Frontend

  • React (TypeScript)
  • React Router

Backend

  • Python (Flask)
  • PostgreSQL (Supabase for deployment)
  • SMTP (email notifications)
  • LocationIQ API (geocoding)
  • OpenWeather API (weather data)
  • Google Gemini AI API (AI autofill)
  • Cron jobs (scheduled alerts & reminders)
  • GitHub Actions

Deployment

  • Frontend: Render
  • Backend: Render
  • Database: Supabase

Local Development (Docker)

Plant Pal can be run locally using Docker Compose, which spins up the frontend and backend together with a single command.

This setup is recommended for contributors who want a consistent local environment without installing dependencies manually.

Prerequisites

  • Docker
  • Docker Compose (included with Docker Desktop)

Running the app locally

From the root of the main (capstone) repository, run:

docker compose up --build

This will:

Once running, open your browser and navigate to:

http://localhost:3000

Environment variables

  • The backend reads configuration (such as database credentials and API keys) from environment variables. For more info on the needed credentials, see the Plant Pal Backend repository.
  • For local development, these can be provided via a .env file referenced in docker-compose.yml.
  • For deployment, environment variables are managed by the hosting platform (Render).

No code changes are required to switch between local and deployed environments.

Stopping the containers

To stop all running services:

docker compose down

📸 Screenshots / Wireframes


Author

Jamie Hendrickson Ada Developers Academy, Cohort 23

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published