
We Spot Turtles!
Empowering global sea turtle conservation with Flutter
We Spot Turtles! is a citizen science platform dedicated to sea turtle conservation. The mobile application allows anyone, from tourists and snorkelers to divers, volunteers, and researchers, to report sea turtle sightings in just a few taps.
By collecting these observations, We Spot Turtles! helps conservation organizations better understand sea turtle populations and supports scientific research and protection efforts around the world.
Why Flutter?
We Spot Turtles' journey with Flutter began at DevFest Brest, where they came across a Flutter codelab. Nicolas Guillot, the maintainer of the We Spot Turtles! app, was immediately impressed by how quickly it was possible to create beautiful and high-performance mobile applications.
A few years later, We Spot Turtles! became that project.
As a solo developer, Flutter was the perfect choice because it allowed Nicolas to build the entire platform with a consistent technology stack. The mobile applications for Android and iOS, as well as the web dashboard used by conservation organizations, are all built with Flutter.
This approach allowed Nicolas to move faster, share knowledge and components between platforms, and maintain the whole ecosystem more efficiently as a single developer.
Beyond the technology itself, the Flutter community has been a key part of this journey. Through meetups, conferences, and exchanges with other developers, Nicolas has continuously learned and improved his skills. Flutter is not only the framework that powers We Spot Turtles!, it is also the community that helped him bring this project to life.
Their solution: Building with Flutter
We Spot Turtles! is built entirely with Flutter, from the mobile application used by citizens to report sea turtle sightings, to the web dashboard used by conservation organizations to review, validate, and analyze collected data.
Using Flutter allows the We Spot Turtles! team to maintain a unified codebase across Android, iOS, and web, making it possible to develop new features faster and provide a consistent experience across platforms. That shared codebase pays off in a shared geographic qualification engine: the mobile app uses it to classify every observation the moment it is captured, and the web dashboard uses the very same logic to scope what each partner organization can see, so a conservation NGO like Te Mana O Te Moana only accesses observations recorded inside the French Polynesian EEZ it is authorized to monitor:
- Geo-gating: KML and CSV data parsed with the xml and csv packages are processed using custom geometry utilities and the geodesy package, to determine which zone any given coordinate belongs to, global abundance areas, rare-sighting zones, or national EEZs.
- Context-aware species picker: Combining the google_maps_flutter and geolocator packages with an abundance table attached to each zone reorders the species list at capture time, surfacing the sea turtles most frequently sighted locally so field observers get a shortlist that matches local ecology.
- Offline-first pipeline: The isar-community package embedded database keeps observations and reference zones available without a network connection, so field workers on remote beaches capture data first and sync opportunistically when connectivity returns.
- Encrypted coordinates: Latitudes and longitudes are AES-encrypted with the encrypt package before being written to Cloud Firestore, with build-time key obfuscation via envied package, keeping sensitive hatchling, nesting, and sea turtle locations protected end-to-end.
Leaning on the Flutter community package ecosystem helped add complex features quickly:
- Home screen widgets: Leveraging the home_widget package, users can log sightings with a single tap directly from their device home screen, with the observed species already pre-selected. One widget per turtle species pinned to the home screen jumps straight into the right form.
- Photo-first observation flow: The native_exif package reads GPS coordinates and capture time directly from imported photos, so an observer can log a sighting simply by picking a photo. The form pre-fills itself with the coordinates and timestamp embedded by the camera at the moment of the shot.
- Scalable map rendering: The google_maps_cluster_manager_2 package groups thousands of observation markers into dynamic clusters as users zoom out, keeping the map readable and performant even in densely monitored areas.
- Integrated backend: Powered by Google Maps Platform and the Firebase suite of tools (Authentication, Cloud Firestore, Firebase Storage, and Cloud Messaging).
By combining Flutter with Google's technologies, We Spot Turtles! provides a scalable platform that connects citizens, researchers, and conservation organizations to collect and share valuable data for sea turtle conservation.
Key results and business impact
We Spot Turtles! makes it possible for anyone to contribute to marine conservation by sharing their observations, while providing organizations with the tools they need to manage and analyze this data.
- More than 6,000 Android downloads and a growing community of users contributing observations.
- Partnerships with conservation organizations, including Te Mana O Te Moana in French Polynesia.
- A complete mobile and web platform built and maintained by a single developer, demonstrating how Flutter enables ambitious projects with limited resources.
By combining Flutter, Firebase, and citizen participation, We Spot Turtles! helps transform individual observations into valuable knowledge to better protect sea turtles worldwide.