A plant tracking app meant to make it easy to track your plants' growth and lineages.
backendis the FastAPI backend (Python)plant-appis the React frontend (Typescript)
- Python 3.11+
- Node v20.10.0
- aws CLI
- aws credentials set up (use a profile)
The AWS infrastructure is an artisinal, hand-crafted set of services made through the AWS console. It would greatly benefit from some sort of IaC approach to reproducibility.
- AWS Amplify for front-end builds and deployment
- AWS Lambda function hosts and runs FastAPI through
Mangumhandler - API Gateway in "proxy" mode triggers lambda function
- DynamoDB NoSQL DB for basic single-table DB
- Created global secondary index 'SK-PK-index' to allow querying by plant_id directly
- S3 for image hosting
- IAM for role and permissions management for each of the above services
- Cloudwatch for logging outputs
- Oauth authentication tokens
Start FastAPI backend and react frontend using scripts in /scratch/scripts.sh
On pushes to master:
- AWS Amplify pointed at this GitHub repository does automated builds and deployment
- Github actions package and deploy FastAPI backend to lambda
Screen.Recording.2024-02-01.at.00.05.20.mov
In rough order of decreasing priority:
- Improving plant view
- Filter by "current" or not (e.g. has the plant died or been given away)
- personal data export:
- ability for users to export their plant data so they can analyze it or migrate it
- timelapse views
- creating timelapse view of plant growth from photos
- would be made easier by having a photo "ghost" overlay to previous photo when adding a new image
- plant event tracker
- watering, fertilizing, repotting
- extracted features from images
- machine vision to extract height, number of leaves, number of branches
- species identification
- care recommendations (keyed to species)
- allow automated recognition of plant ID (increasing order of difficulty):
- OCR of numbers written on tags
- small QR codes
- matching to previous photos of plant (way too hard)