Team 404presentPlantPal
Plant Pal Demo Video
Never forget to water your plants again!
Plant Pal is a cross platform mobile app for Android and iOS which helps users keep track of their plants and maintain their health in an engaging way. We chose to create an app that reminds users to water and feed their plants to tackle a real world problem of keeping houseplants alive.
Plantpal provides users with a platform for managing their plants. Upon signing up or logging in, users can access a range of functionalities. They take a photo of their plant to identify its species, assign personalised names to each plant, and upload photos for reference. Additionally, users can schedule watering and feeding dates, ensuring their plants receive proper care on time. Interacting with the app allows users to reset countdowns for watering and feeding, maintaining accurate schedules. Users have the flexibility to delete plants from their account as needed.
The Team
Dave Judge
Ian Graham
Mohammed Sajjadul
Raheem Rafiq
Erkin Ayna
Technologies
We used: Javascript. React Native. Styled Components. Node.js. MongoDB. Mongoose. Express. Jest. Supertest
We chose to create the frontend of this project using React Native provides useful tools such as the expo framework to create an app that works on both Android and iOs devices. This allowed us to continue and expand our previous knowledge working with Javascript and React.js. We adopted the Styled Components library in order to reduce repeated code and share styled components across screens.
We chose to use MongoDB to create our database as it is a popular industry tool that we wanted to become familiar with. It provides ease of use through built in functions as an alternative to long SQL queries. Express allowed us to handle backend api calls with sufficient functionality and error handling. Jest allowed us to make customised tests for our api endpoints whilst Supertest allowed us to test our server by running the server dynamically with our tests.
Challenges Faced
Planning a group project that utilises unfamiliar technology. Teaching ourselves React Native and getting device emulators to work. Working with images taken on a device (storing, converting, retrieving). Teaching ourselves a new database tool, planning and implementing CRUD operations for MongoDB. Working with the limitations of free API services.