|
min. read

Developer Case Study: Ben Clark & Campbell Kilgour / Portable PPB

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

App name Portable PPB
Platform(s) Mobile, Web, Windows
App framework Flutter
Backend API Supabase (PostgREST)
Backend database Supabase (Postgres)

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!

Subscribe to receive updates

Thank you! Your submission has been received.
Oops! Something went wrong while submitting the form. Please try again.