Inspiration
Several members of our team had the same frustrating experience: we would come across beautiful photos of blooming flowers on TikTok or Threads, but the posts often did not include the exact location. By the time we found out where the flowers were, the bloom might already be fading, and because many flowers only bloom for a short period, discovering them online does not always translate into being able to experience them in person.
We wanted to change this: Instead of simply scrolling past beautiful places on social media, we wanted to give people a reason to step outside, explore their city, and experience these moments for themselves.
This led us to create PeTAL: an app that helps users discover what is currently blooming around Melbourne, identify those flowers and trees, and locate where they can be found.
By making these short-lived local experiences easier to discover and reach, PLATea encourages people to break out of their usual routines, explore their surroundings, take photos, visit new places, and share those experiences with friends.
For us, this connects directly to Track 2: Connect Outside: turning something you see on a screen into an opportunity to go outside and experience more of the city in real life.
What it does
PLATea is a mobile application for discovering trees and flowering plants around Melbourne. Users can search for trees by their common name, scientific name or genus, with results linked to real trees from the City of Melbourne Urban Forest dataset.
From there, users can:
- View detailed information about a selected tree.
- See its location on an interactive map.
- Track their live distance to the tree using GPS.
- Follow a walking route towards the selected tree.
- Discover species that are currently blooming.
- View bloom information based on flowering data and recent observations.
- Identify plants from a photo.
Together, these features turn a static tree dataset into an interactive way to explore Melbourne's urban environment.
How we built it
We built PeTAL as a mobile application using Expo SDK 57, React Native and TypeScript, with Expo Router for navigation.
For the map experience, we used react-native-maps, while expo-location powers live GPS tracking and device heading. We also integrated the Mapbox Directions API to generate walking routes from the user's current location to a selected tree. The Explore experience uses @gorhom/bottom-sheet, with react-native-reanimated and react-native-gesture-handler for animations and interactions.
Our backend is built with Node.js, Express 5 and TypeScript. We use multer and sharp to process uploaded images, and Gemini for photo-based plant identification, with Pl@ntNet as a fallback if the primary service is unavailable.
PeTAL combines several data sources to create the final experience. The City of Melbourne Urban Forest dataset provides real tree locations and information, while VicFlora, iNaturalist, and our curated HortFlora species data help determine flowering periods and whether plants may currently be blooming.
Together, these technologies allow users to move from discovering a flower or tree, to finding a real example nearby, and then navigating directly to it.
Challenges we ran into
One of our biggest challenges was combining data from different sources. VicFlora provides useful structured flowering data, but it mainly covers native and naturalised plants. Melbourne's urban forest also contains many cultivated and ornamental species, which meant that some trees could not be matched. HortFlora provided better coverage, but much of its flowering information was contained in individual plant descriptions instead of a structured dataset. With the limited hackathon timeframe, automatically extracting and cleaning all of that information was not practical, so we created curated profiles for high-priority species.
We also ran into several technical challenges while integrating our features. For example, our walking route initially failed to appear when tracking started before the first GPS position was available. We had to adjust our state and effect dependencies so that the route was generated as soon as the user's location became available.
We also experienced device-to-server connectivity problems when testing across different networks, as well as service availability issues with Gemini. These challenges pushed us to make the application more resilient, including introducing Pl@ntNet as a fallback for plant identification.
Another challenge was merging work from different team members and branches while maintaining a consistent app architecture. There was a lot of discussion beforehand and during the coding process to make sure merging process would not create too many conflicts, as well as discussion for resolving conflicts.
This is also our first time creating an app, and using TypeScript to write code, so this was definitely a big learning experience.
Accomplishments that we're proud of
We're particularly proud that PeTAL brings together several different technologies into one connected experience.
Instead of simply displaying tree information, users can go from searching for a species, to viewing a real tree, locating it on a map, and physically navigating towards it.
We're also proud of our live tracking system, which combines GPS location, distance calculations, map camera movement and compass heading to create a more interactive navigation experience.
Another major accomplishment was integrating multiple plant and flowering data sources. When one source does not contain enough information, our system can use alternative sources rather than relying on a single dataset.
Finally, we are proud that we were able to turn Melbourne's existing urban forest data into something that feels accessible, visual and useful for everyday users.
What we learned
One of the biggest things we learned was that building a useful application with real-world data involves much more than simply connecting to an API.
Different datasets use different naming conventions, have different levels of coverage and are often incomplete. We learned how important it is to validate, combine and prioritise data from multiple sources.
We also learned a lot about mobile development, particularly working with live GPS updates, compass sensors, map state and asynchronous API requests.
From a software engineering perspective, we learned the importance of separating features into reusable hooks and components, especially as the application grew and multiple team members were working on different parts of the project.
Most importantly, we learned how to make practical compromises. With limited time, sometimes building a reliable curated prototype is more valuable than trying to automate everything immediately.
What's next for PeTAL
The next step for PLATea is to expand the bloom prediction system to support many more species.
Currently, some flowering periods are stored in curated profiles. In the future, we could automate the extraction and processing of flowering information or gain access to more structured horticultural datasets, allowing the system to scale much further.
We would also like to improve bloom predictions by incorporating more recent observations and environmental information, making predictions more accurate and location-specific.
On the exploration side, we want to make it easier for users to discover interesting trees and flowering locations near them, rather than only searching for a species they already know. Additionally, we would also like to expand the features in the Community section, perhaps creating a much more interactive space for people to share their beautiful photos of blooms they've visited.
Ultimately, we want PLATea to become a companion for exploring Melbourne's urban forest — helping people know what's blooming, where to find it, and how to get there.
Built With
- api
- city-of-melb-open-data
- dotenv
- expo-image-picker
- expo-location
- expo.io
- genai-photo-id
- hortflora
- inaturalist
- map
- node.js
- react-native
- sdk57
- server-express-backend
- typescript
- vicflora
Log in or sign up for Devpost to join the conversation.