Skip to content

About

A full-stack sustainable gardening platform integrating AI-based plant disease recognition, climate-adaptive recommendations, and geospatial visualization. Built with Vue, AWS serverless architecture, and Python-based data and ML pipelines.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Β 
Β 

Latest commit

Β 

History

204 Commits

Folders and files

Repository files navigation

2025-08 SDG13 Plant'X Website (Sustainable Gardening Platform)

Frontend: Vue.js AI & Data: Python Infrastructure: AWS License: MIT Website Status

A sustainable planting and ecological awareness platform for Australian gardening enthusiasts. The project was delivered over three iterations: onboarding & plant search, disease identification & climate-fit recommendations, endangered species & climate-trend visualizations, plus community connection features.


πŸ“Ž Links

πŸ“„ Website URL: https://www.plantx.me/
πŸ“„ δΈ­ζ–‡η‰ˆREADME: README.zh.md
πŸ“‘ Product Document: Product_Document.pdf
πŸ“‘ Support Document: Support_Document.pdf
πŸ“‘ Maintenance Document: Maintenance_Document.pdf


πŸ“Œ Project Overview

This platform provides evidence-based and accessible sustainable gardening guidance for Australian gardeners. It helps users make better planting decisions under climate change and understand how personal gardening practices connect to broader environmental and climate goals (SDG 13). Features, data, and system architecture are refined across three iterations.

Core problem (excerpt): Climate change makes rainfall and temperature more volatile, and many gardeners lack clear, practical guidance. Key strategies include choosing climate-appropriate species, efficient water use, improving soil, and supporting biodiversity. The platform offers tools and resources to reduce trial-and-error costs and boost confidence in sustainable practices.

Target users: Australian gardeners (from beginners to advanced users, home or community gardens) who want localized, reliable, and easy-to-understand guidance for environmentally friendly planting.

Persona (example): Sarah Green, 46, librarian in Caulfield, Victoria. She cares about the environment but struggles with disease identification, climate-matched plant selection, and accessing trustworthy biodiversity data. The platform helps via AI disease recognition, location- & weather-based recommendations, and visualizing ecological data.


πŸ” Iteration Roadmap & Feature Overview

The main Epics and key user stories/acceptance criteria by iteration are summarized below for a quick understanding of project evolution.

Iteration 1: Onboarding & Plant Search

  • Epic 1 | Vision & Onboarding:

    • A homepage clearly communicates the mission, core features, and sustainable gardening β€œknowledge cards”; mobile-friendly.
    • Key user stories:
      • US 1.1/1.2/1.3: View intro & feature cards; click β€œLearn more” to see simple sustainable practice examples (e.g., local natives, water-saving).
  • Epic 2 | Plant Exploration & Details:

    • Multimodal search: keyword, voice, and photo matching.
    • Details page with care icons/tips and expandable sections to lower the learning curve for beginners.

Iteration 2: Disease Identification, Climate-Fit Recommendations & Urban Ecology

  • Epic 3 | Plant Disease Recognition & Interpretation:

    • Disease search (by name or uploading an image for likely matches).
    • Disease details include overview/symptoms/solutions.
    • AI predictions return Top-3 probabilities with links to details.
  • Epic 4 | Location & Weather-Based Plant Recommendations:

    • Pick a coordinate on the map β†’ call weather API to aggregate next 16 days of key variables (temperature, rainfall, sunshine, UV, precipitation probability, etc.).
    • Compare the weather summary against plant growth conditions to generate an adaptation list; click a plant card to view description/features/care guide.
  • Epic 5 | Nearby Plants & Trees (Urban Biodiversity):

    • Interactive map shows species density/distribution in the selected area.
    • Search by species name and highlight occurrence regions/coordinates to support local ecological literacy.

Iteration 3: Threatened Species, Climate Trends & Community

  • Epic 6 | Australian Threatened Plants Distribution:

    • Filter by state and display threatened plant markers on the map.
    • Right-side list is linked to the map; clicking a card opens species info.
  • Epic 7 | Climate Trends vs. Threatened Plants:

    • A time slider drives a choropleth map to compare interannual state-level spatial patterns.
    • State-level trend lines jointly visualize the species index and temperature/other weather variables over time.
  • Epic 8 | Community & Plant Clubs:

    • List club names/contacts/meeting cadence.
    • Filter by region/state.
    • A β€œToday’s Meetings” panel automatically shows clubs with activities today (or β€œNone” if no events).

Note: Detailed user stories and acceptance criteria for each Epic are documented in the iteration documents; this README provides a showcase-oriented summary.


πŸ”§ Technology & Implementation Highlights (Summary)

  • Cloud & Services: AWS (API Gateway, Lambda, S3, CloudFront, RDS/KMS/Secrets Manager)
  • AI/ML: Image-based disease recognition with Top-K probability visualization
  • Visualization: Interactive maps (distribution, choropleth with time slider), linked cards & trend charts
  • Usability: Mobile-friendly; icons/tips and expandable sections to ease onboarding

πŸ—‚οΈ Data & Sources (by Iteration)

Iteration 1 (baseline plants & environment):

  • Melbourne Planting Guide (traits/growth conditions/biodiversity, CSV)
  • Kaggle (gardening images, JPEG/PNG)
  • ALA species list (CSV)
  • Vic Future Climate Tool (API)

Iteration 2 (disease/weather/urban forestry):

  • Perenual API (disease descriptions/solutions & images) β†’ training/retrieval
  • Open-Meteo (16-day forecast, API) β†’ climate-fit recommendations
  • City of Melbourne Urban Forest (CSV) β†’ urban species map
  • The Australian Threatened Species Index (CSV) β†’ enrich sustainable-practice content

Iteration 3 (threatened/historical climate/boundaries/clubs):

  • Perenual + City of Melbourne (general + threatened plants, API/HTML β†’ CSV)
  • Open-Meteo historical weather (API)
  • ABS state boundaries (SHP)
  • Garden Clubs of Australia (CSV)

Note: Each dataset is annotated in the docs with its Epic/user-story usage. Production tables and light preprocessing outputs are standardized to CSV for frontend/backend and visualization.


🧱 Architecture & Security (evolving with iterations)

  • Architecture evolution:

    • Iteration 1: Frontend–backend connected via API Gateway; algorithms and database on private networks; the backend performs more computation.
    • Iteration 2: Shift to API-centric and serverless design: API Gateway + AWS Lambda for algorithms; frontend static assets and objects (e.g., disease images) in S3, accelerated by CloudFront; database hardened with Secrets Manager/KMS; APIs connect directly with Lambda/S3 to optimize data flow.
  • Security strategy:

    • Iteration 1: Perimeter-focused (VPC, subnets, port allowlists, etc.).
    • Iteration 2: API-level security: API Gateway rate limiting/quotas, usage plans, API keys; AWS Shield (Standard/Advanced) for DDoS mitigation.
    • Rationale: Once APIs are exposed externally, the primary risks shift from perimeter threats to interface abuse and denial of service, requiring API-side mitigations.

πŸ‘₯ Team & Roles

  • Team: Spaghetti Marshmallow King (ID TA21)
  • Members (example): Zihan Yin, Yiyang Chen, Klarissa Jutivannadevi, Yu Xie, Yean Yee Tan, Weiqi Xie
  • Disciplines & responsibilities:
    • MDS: Open data processing (rainfall/temperature/species), modeling & analysis; actionable insights (e.g., native weather-resilient plants)
    • MIT: Architecture & full-stack development, testing & version control, feature integration (search, water-saving tips, community, etc.)
    • MAI: AI models (disease recognition, climate-matched plant selection), AI ethics (bias/privacy)
    • MBIS: Iteration planning, persona/journey design, project governance (minutes, docs, supervisor comms)

πŸ“ Version History (Milestones)

  • v1: Vision & basic retrieval (Iteration 1)
  • v2: Disease recognition / weather-fit recommendations / urban ecology (Iteration 2)
  • v3: Threatened distribution / climate–species trends / community (Iteration 3)

🧭 Repository Structure

πŸ“¦2025-08-SDG13-PLANT-X-WEBSITE
β”œβ”€ πŸ“‚.vscode
β”‚  β”œβ”€ extensions.json
β”‚  └─ settings.json
β”‚
β”œβ”€ πŸ“‚01_data_wrangling                           ⟢ Raw datasets, cleaned outputs & processing scripts
β”‚  β”œβ”€ πŸ“‚01_raw_data
β”‚  β”‚  β”œβ”€ πŸ“‚01_species_details                    ⟢ Species detail JSON (large, numeric filenames)
β”‚  β”‚  β”œβ”€ πŸ“‚02_care_guide                         ⟢ Species care guide JSON (large)
β”‚  β”‚  β”œβ”€ πŸ“‚03_hardiness_map                      ⟢ Species hardiness/distribution HTML (large)
β”‚  β”‚  β”œβ”€ πŸ“‚04_plant_diseases                     ⟢ Disease JSON (1–100+)
β”‚  β”‚  β”œβ”€ πŸ“‚05_thumbnail_image                    ⟢ Species thumbnails JPG (large)
β”‚  β”‚  └─ πŸ“‚06_tsx_table_vic                      ⟢ State/national TSX CSV raw tables
β”‚  β”‚  β”œβ”€ 01_threatened-plant-living-collection-plan.csv
β”‚  β”‚  β”œβ”€ 02_tsx-aggregated-data-dataset_for_vic_plants.csv
β”‚  β”‚  β”œβ”€ 03_TSX 2024 Data Dictionary.pdf
β”‚  β”‚  β”œβ”€ 04_urban-forest.csv
β”‚  β”‚  β”œβ”€ 05_STE_2021_AUST_SHP_GDA2020.zip           ⟢ Geospatial boundary data
β”‚  β”‚  └─ 06_tsx-aggregated-data-dataset_for_aus_plants.csv
β”‚  β”œβ”€ πŸ“‚02_wrangled_data                         ⟢ Cleaned master tables (for FE/BE/models)
β”‚  β”‚  β”œβ”€ Table01_PlantMainTable.csv
β”‚  β”‚  β”œβ”€ Table02_GeneralPlantDescriptionTable.csv
β”‚  β”‚  β”œβ”€ Table03_GeneralPlantCareGuideTable.csv
β”‚  β”‚  β”œβ”€ Table04_GeneralPlantDistributionMapTable.csv
β”‚  β”‚  β”œβ”€ Table05_GeneralPlantImageTable.csv
β”‚  β”‚  β”œβ”€ Table06_ThreatenedPlantDescriptionTable.csv
β”‚  β”‚  β”œβ”€ Table07_ThreatenedPlantCareGuideTable.csv
β”‚  β”‚  β”œβ”€ Table09_PlantDiseaseTable.csv
β”‚  β”‚  β”œβ”€ Table10_PlantDiseaseImageTable.csv
β”‚  β”‚  β”œβ”€ Table11_PlantDiseaseLinkTable.csv
β”‚  β”‚  β”œβ”€ Table12_UrbanForestTable.csv
β”‚  β”‚  β”œβ”€ Table13_GeneralPlantListforRecommendation.csv
β”‚  β”‚  β”œβ”€ Table14_TSX_Table_VIC_version{1..4}.csv ⟢ TSX state-level aggregated versions
β”‚  β”‚  β”œβ”€ Table15_StateShapeTable.csv
β”‚  β”‚  β”œβ”€ Table16_TSX_SpeciesMonitoringTable.csv
β”‚  β”‚  └─ Table17_AustralianGardenClubTable.csv
β”‚  β”œβ”€ .cache.sqlite                              ⟢ Cache for downloads/cleaning
β”‚  β”œβ”€ 01_download_plant_species_details_data.ipynb    ⟢ Download species details
β”‚  β”œβ”€ 02_download_plant_species_care_guide_data.ipynb ⟢ Download species care guides
β”‚  β”œβ”€ 03_download_plant_species_hardiness_map.ipynb   ⟢ Download hardiness/distribution maps
β”‚  β”œβ”€ 04_download_plant_disease_data.ipynb            ⟢ Download plant disease data
β”‚  β”œβ”€ 05_wrangle_for_Table06_Table07.ipynb            ⟢ Clean Tables 06 & 07 (threatened species desc/care)
β”‚  β”œβ”€ 06_wrangle_for_Table01_PlantMainTable.ipynb     ⟢ Clean Table 01 (plant main)
β”‚  β”œβ”€ 07_wrangle_for_Table02_GeneralPlantDescriptionTable.ipynb     ⟢ Clean Table 02 (general description)
β”‚  β”œβ”€ 08_wrangle_for_Table03_GeneralPlantCareGuideTable.ipynb       ⟢ Clean Table 03 (general care)
β”‚  β”œβ”€ 09_wrangle_for_Table04_GeneralPlantDistributionMapTable.ipynb ⟢ Clean Table 04 (distribution map)
β”‚  β”œβ”€ 10_wrangle_for_Table05_GeneralPlantImageTable.ipynb           ⟢ Clean Table 05 (images)
β”‚  β”œβ”€ 11_wrangle_for_Table09_Table10.ipynb                          ⟢ Clean Tables 09 & 10 (diseases & images)
β”‚  β”œβ”€ 12_wrangle_for_Table11_PlantDiseaseLinkTable.ipynb            ⟢ Clean Table 11 (external links)
β”‚  β”œβ”€ 13_wrangle_for_Table12_UrbanForestTable.ipynb                 ⟢ Clean Table 12 (urban forest)
β”‚  β”œβ”€ 14_wrangle_for_Table13_GeneralPlantListforRecommendation.ipynb⟢ Clean Table 13 (rec list)
β”‚  β”œβ”€ 15_wrangle_for_Table14_ThreatenedSpeciesIndexTable.ipynb      ⟢ Clean Table 14 (threatened species index)
β”‚  β”œβ”€ 16_wrangle_for_Table14_TSX_Table_VIC.ipynb               ⟢ Clean Table 14 (VIC TSX version)
β”‚  β”œβ”€ 17_wrangle_for_Table15_StateShapeTable.ipynb             ⟢ Clean Table 15 (state shapes)
β”‚  β”œβ”€ 18_wrangle_for_Table16_TSX_SpeciesMonitoringTable.ipynb  ⟢ Clean Table 16 (species monitoring)
β”‚  └─ 19_wrangle_for_Table17_AustralianGardenClubTable.ipynb   ⟢ Clean Table 17 (AU garden clubs)
β”‚
β”œβ”€ πŸ“‚02_backend                                  ⟢ Shared utilities & (Lambda) backend code
β”‚  β”œβ”€ πŸ“‚common
β”‚  β”‚  β”œβ”€ config.py / db_utils.py / http_utils.py / s3_utils.py ⟢ Base utilities
β”‚  β”‚  └─ index.py / __init__.py
β”‚  └─ πŸ“‚lambdas
β”‚     β”œβ”€ πŸ“‚assets
β”‚     β”‚  β”œβ”€ app.py                                ⟢ Lambda entry for static assets/files
β”‚     β”‚  └─ requirements.txt
β”‚     └─ πŸ“‚gardening_clubs
β”‚        └─ πŸ“‚common (same structure)             ⟢ Backend shared code for garden clubs
β”‚
β”œβ”€ πŸ“‚03_machine_learning_models
β”‚  β”œβ”€ πŸ“‚01_plant_image_recognition               ⟢ Plant image retrieval/recognition (CLIP)
β”‚  β”‚  β”œβ”€ πŸ“‚clip-vit-b32                          ⟢ Tokenizer/preprocess configs
β”‚  β”‚  β”œβ”€ πŸ“‚index (embeddings_fp16.npz, meta.json)⟢ Prebuilt index
β”‚  β”‚  β”œβ”€ πŸ“‚test_images                           ⟢ Sample test images
β”‚  β”‚  β”œβ”€ 01_plant_image_embedding.ipynb          ⟢ Embedding
β”‚  β”‚  β”œβ”€ 02_plant_image_query.{ipynb,py}         ⟢ Similarity search/query
β”‚  β”‚  └─ requirements.txt
β”‚  β”œβ”€ πŸ“‚02_plant_disease_recognition             ⟢ Disease classification (PyTorch)
β”‚  β”‚  β”œβ”€ πŸ“‚test_images                           ⟢ Sample test images
β”‚  β”‚  β”œβ”€ model.pth                               ⟢ Trained weights
β”‚  β”‚  β”œβ”€ 01_plant_disease_training.ipynb         ⟢ Training script
β”‚  β”‚  β”œβ”€ 02_plant_disease_query.{ipynb,py}       ⟢ Inference scripts
β”‚  β”‚  β”œβ”€ Dockerfile / lambda_function.py         ⟢ Deployment (container & serverless)
β”‚  β”‚  β”œβ”€ class_map.json / Table11_*.csv          ⟢ Class mapping & link tables
β”‚  β”‚  └─ requirements.txt / kaggle.json          ⟢ Dependencies & data credentials
β”‚  β”œβ”€ πŸ“‚03_plant_recommendation_system
β”‚  β”‚  β”œβ”€ 01_plant_recommendation.{ipynb,py}      ⟢ Recommendations based on Table 13
β”‚  β”‚  └─ Table13.csv
β”‚  β”œβ”€ πŸ“‚04_tsx_trend_prediction                  ⟢ TSX trends/visualization/backend integration
β”‚  β”‚  β”œβ”€ 01_tsx_trend_prediction.ipynb
β”‚  β”‚  β”œβ”€ 02_upload_table14_to_mysql.ipynb        ⟢ Data ingest
β”‚  β”‚  β”œβ”€ 03_epic7_backend_local.ipynb
β”‚  β”‚  β”œβ”€ 04_epic7_backend_{local,sql}.py         ⟢ Local/SQL backends
β”‚  β”‚  β”œβ”€ Table14_TSX_Table_VIC_version{3,4}.csv
β”‚  β”‚  └─ Table15_StateShapeTable.csv
β”‚  └─ πŸ“‚05_ml_workflow_description                ⟢ ML workflow docs (EN/ZH + images)
β”‚     β”œβ”€ πŸ“‚images (2_01.png, 4_01~4_08.png)
β”‚     β”œβ”€ 01_plant_image_recognition_{en,zh}.{md,pdf}
β”‚     β”œβ”€ 02_plant_disease_recognition_{en,zh}.{md,pdf}
β”‚     └─ 03,04_*_{en,zh}.{md,pdf}
β”‚
β”œβ”€ πŸ“‚public
β”‚  └─ weblogo.svg
β”‚
β”œβ”€ πŸ“‚src                                         ⟢ Frontend (Vue + Vite)
β”‚  β”œβ”€ πŸ“‚api
β”‚  β”‚  β”œβ”€ http.ts                                 ⟢ Axios/request wrapper
β”‚  β”‚  β”œβ”€ plants.ts / plantrcmd.js                ⟢ Plant list & recommendation APIs
β”‚  β”‚  β”œβ”€ pdisease.js / DiseaseUpload.js          ⟢ Disease search/upload
β”‚  β”‚  β”œβ”€ climateimpact.js                        ⟢ Climate impact/TSX
β”‚  β”‚  β”œβ”€ tpmap.js / trees.js                     ⟢ Distribution/tree data APIs
β”‚  β”‚  └─ uploads.ts                              ⟢ Generic upload
β”‚  β”œβ”€ πŸ“‚assets                                   ⟢ Static images/styles (many)
β”‚  β”‚  └─ styles.css / logo.svg / …               ⟢ Key assets
β”‚  β”œβ”€ πŸ“‚components
β”‚  β”‚  β”œβ”€ πŸ“‚icons (Icon*.vue)                     ⟢ Reusable icon components
β”‚  β”‚  β”œβ”€ NavBar.vue / FooterBar.vue              ⟢ Global nav/footer
β”‚  β”‚  β”œβ”€ ThemeToggle.vue                         ⟢ Theme switch
β”‚  β”‚  β”œβ”€ PlantCard.vue / PdiseaseCard.vue        ⟢ List cards
β”‚  β”‚  └─ CardSkeleton.vue                        ⟢ Skeleton loader
β”‚  β”œβ”€ πŸ“‚router/Router.js                         ⟢ Routes
β”‚  β”œβ”€ πŸ“‚views                                    ⟢ Pages
β”‚  β”‚  β”œβ”€ HomePage.vue                            ⟢ Home
β”‚  β”‚  β”œβ”€ PlantSearch.vue / PlantDetail.vue
β”‚  β”‚  β”œβ”€ PlantRcmd.vue                           ⟢ Plant recommendations
β”‚  β”‚  β”œβ”€ DiseaseSearch.vue / DiseaseDetail.vue
β”‚  β”‚  β”œβ”€ UrbanMap.vue / UrbanThreaten.vue        ⟢ Urban forest/threatened views
β”‚  β”‚  β”œβ”€ TPmapping.vue                           ⟢ Species distribution (hardiness/map)
β”‚  β”‚  β”œβ”€ ClimateImpact.vue                       ⟢ TSX/trend impact
β”‚  β”‚  └─ CommunityPage.vue / GardenPage.vue
β”‚  β”œβ”€ App.vue / main.js                          ⟢ App entry
β”‚  β”œβ”€ env.d.ts                                   ⟢ TS env declarations
β”‚  └─ vite.config.js                             ⟢ Frontend build config
β”‚
β”œβ”€ .editorconfig / .env / .gitattributes / .gitignore / .prettierrc.json
β”œβ”€ dist.zip                                      ⟢ Build artifacts (snapshot)
β”œβ”€ eslint.config.js / jsconfig.json / tsconfig.json
β”œβ”€ index.html                                    ⟢ App template
β”œβ”€ package.json / package-lock.json              ⟢ Dependencies & scripts
β”œβ”€ README.md
└─ vite.config.js                                ⟢ Root build config (same name as in src)

πŸ“„ License

Distributed under the MIT License.


This project is part of Monash University’s FIT5120 Industry Experience Studio Project, Semester 2, 2025;
Delivered via an agile, open process across three iterations.

About

A full-stack sustainable gardening platform integrating AI-based plant disease recognition, climate-adaptive recommendations, and geospatial visualization. Built with Vue, AWS serverless architecture, and Python-based data and ML pipelines.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages