Background
Ben Clark and Campbell Kilgour from Portable PPB joined us to discuss their app for infield gold detection in the mining industry. We covered their stack, what they see as the benefits of local-first architecture and why they decided to use PowerSync.
App details
Interview
PowerSync
Could you tell us a bit more about what you’re building?
Portable PPB
Our main product is a gold detection system for mining and exploration. We've built a beta version over the last two and a half years, but we’re now rebuilding it to be more robust.
PowerSync
What stack are you using for the rebuild?
Portable PPB
Our new stack will be based on Supabase, Flutter, and PowerSync.
PowerSync
With the legacy version, did you build your own offline functionality?
Portable PPB
Not really. It’s essentially just an XML file loaded into memory and saved back. It’s a simple and temperamental system prone to corruption if something crashes. We definitely needed a more reliable solution.
PowerSync
So you’re moving to a proper local-first architecture with a local database? Was the main reason for that to support customers in remote areas with poor internet connectivity, or were there any other benefits that you're also hoping to get from a real local-first architecture?
Portable PPB
There are a few different reasons beyond just the scarcity of internet connection. We operate in over 30 countries, some with unstable internet and power. Starlink is helping, but it’s not fully reliable yet. Another reason is to have a local backup of sensitive data. In case our servers go down, customers still have a local copy.
PowerSync
Will this be deployed on phones, tablets, or computers?
Portable PPB
We’re targeting Android, Windows, and web platforms, with potential future support for iOS and Linux.
PowerSync
For the web platform, will it be built with Flutter Web?
Portable PPB
Yes, we’re using Flutter for everything. As a small team, we need the efficiency of a single codebase that works across platforms.
PowerSync
We’ve seen developers use local-first architecture not just for offline mode but also for faster performance. Was speed also a consideration for you?
Portable PPB
Speed was a secondary factor.
PowerSync
What options did you evaluate for implementing local-first before choosing PowerSync?
Portable PPB
An important consideration for us is that we wanted to use Flutter, which is similar to C#, our primary development language. We considered Firebase but found Supabase better in terms of cost and features. We prefer open-source solutions, so Supabase was a better fit. With this locked in, we looked for offline-first solutions that work well with Supabase and Flutter. PowerSync was the only tool we found that provided an out-of-the-box solution, which was vital for our small team.
Also, a deciding factor for us at the time was the speed of development. We’re on a tight timeline, so the faster we can build, the better.
PowerSync
You mentioned that PowerSync being loosely coupled to Postgres was valuable to you. Can you elaborate?
Portable PPB
As a small team, we prioritize flexibility. With Postgres, we could swap out Supabase for a different hosted Postgres database if needed. Personally, I like minimizing lock-in, as it allows for better adaptability, especially if the company evolves or gets acquired.
PowerSync
What do you think is the most valuable aspect of PowerSync?
Portable PPB
The simplicity of setup and great documentation. I had the system running and connected to Supabase in one afternoon, which is rare for other tools. We weren’t looking for the best option, just one that worked quickly, and yours fit the bill.
PowerSync
So, ease of onboarding was key?
Portable PPB
Yes, and your support team’s responsiveness has also been a big plus.
PowerSync
Great feedback, thanks. Our vision is to make local-first app architecture as easy to implement as traditional cloud-first approaches. We believe ocal-first will then be the preferred choice for developers due to its advantages, such as speed and resilience against network issues. Given this goal, do you have any suggestions or recommendations on what we should focus on or improve?
Portable PPB
Two things: First, your local development system is great, but we’re missing a CLI that works with the local environment to automate our CI/CD pipeline. That is a missing puzzle piece for us at the moment.
Second, Sync Rules are quite limited. We can't join tables, which forces us to denormalize data, and our data is highly relational.
PowerSync
Thanks for the feedback. We’re working on improving the flexibility of sync rules without impacting performance. Thanks for your time!
Portable PPB
Thanks, it's been great working with you guys!