MyGarden

MyGarden is a Python CLI app I developed in November 2020 as part of an assignment for my Databases class. It consists of an SQLite database of many different plants, and allows users to create their own gardens, compare the size of their gardens with others, and provides many different tools for navigating the relational database.

MyGarden main screen

The final version of the myGarden app was built and finished on November 30, 2020. The app was built in Python 3.9 using the command line interface on PyCharm IDE. Upon running, the user is presented with a sign-in screen which prompts for the username and password. If either the username or password does not exist, then the user is offered whether to create an account or exit. If they choose to create an account, they are prompted to enter the values for the Users table: username, password, and USDA gardening zone. After signing in, the username is saved as a global variable and the user is presented with a menu consisting of 9 options:

  1. Search for plants by type

  2. Search for viable plants in your USDA gardening zone

  3. Search for plants by common name

  4. See what fruits and vegetables can be planted today

  5. See which flowers are currently in bloom

  6. Add a plant to your garden

  7. Show all the plants in each users' garden

  8. Update a record in your garden

  9. Change your login credentials

Database schema

The relational database stores the information of 25 different plants split into edible plants (fruits and vegetables) and non-edible plants (flowers, grasses, cacti, etc.). The database is composed of 4 main tables: User, Plant, Edible, and NonEdible, with a supplementary table ALLPLANTS to store the plants of all users. Data was collected by hand off of the National Gardening Association's Plants Database.

Information stored on each plant includes: Scientific and common name, the amount of water and light required (low, medium, or high), the time the plant takes to flower (if applicable), what month it should be planted (for flowers and harvestable types), the type of plant (fruit, vegetable, or other non-edible category), and the USDA gardening zone the plant thrives in. For edible plants the time to harvest is also stored. The database also adheres to ACID principles.


This was my first ever project working with SQL and data queries. I learned about the many properties I need to include in a database so as to maintain consistency along with the power of SQL queries. It was fun applying this knowledge to a personal hobby of mine as I was just learning how to grow my own herbs and take care of plants at home. On the other hand, it also introduced me to the tediousness of building datasets from scratch. For my next project, I was ready to try my hand at automated data collection.

github link to the project: https://github.com/simonrendon/myGarden