|
min. read

Developer Case Study: Chris Primavera / Aspen Square

Background

Aspen Square is a leading property management company overseeing 17,000 apartments in 16 states, whose on-site operations include executing work orders, inspections, renovations, and other field activities. We were joined by Chris Primavera (Director of Application Development) to discuss Aspen Square’s operations platform, an in-house web and mobile app.

App details

App name Aspen Square Operations Platform
Platform(s) Mobile
App framework React Native
Backend API Supabase (PostgREST)
Backend database Supabase (Postgres)

TL;DR

  • Aspen Square adopted PowerSync for offline capabilities in its operations platform.
  • Chris highlighted the smooth developer experience of working with a local SQLite database, especially compared to web APIs.
  • Chris believes sync engines should be a go-to for mobile and native apps, and is also interested in exploring their use in web apps.

Interview

PowerSync‍
Hi Chris, thanks for joining us, it’s so valuable to have the opportunity to get feedback from developers. It looks like you tried a few sync tools in the past. You’ve used MongoDB Atlas Device Sync, is that right?‍

Chris Primavera‍
Yeah, that’s exactly right. So, we’ve been planning to release this operations platform for a couple of years. We initially looked at a bunch of vendors, did some beta testing, and ultimately decided to build the operations platform in-house.

We were looking at MongoDB Atlas Device Sync + Realm for probably a year or more before MongoDB deprecated it. So we ended up moving late in the process. We discovered PowerSync from poking around online, looking at sync engines. I think we ended up in a better spot — the stack feels a lot better than the MongoDB Realm stack felt to me at the time.

PowerSync
Did you ever end up implementing Atlas Device Sync, MongoDB’s solution?‍

Chris Primavera
No, we didn’t deploy it. It was more of an advanced POC.‍

PowerSync
Okay. So you’re now using Supabase on the backend. What does your client-side stack look like?‍

Chris Primavera
React Native. We also have some web apps.‍

PowerSync
Are you using PowerSync just in React Native for now?‍

Chris Primavera
Yes. The main use case was offline capability — being able to sync as technicians go into spotty areas of service.‍

PowerSync
That makes sense. Most developers who use PowerSync adopt it for offline support. However, we’re seeing more developers using it for improved online user experience, as working with a local SQLite database has near-zero latency. There are also developer experience benefits, like avoiding API request/response and state management complexities. Were any of those factors important to you, or was it mainly offline support?‍

Chris Primavera
We weren’t thinking about those factors going in, but I agree they’re true. Working with a local-first SQLite database feels like working with in-memory state management — so much smoother than a request-response model. When we switch between developing native apps with PowerSync and web apps using the Supabase APIs, the local database experience is way better.‍

PowerSync
That’s great to hear. Were there any other sync tools you evaluated before choosing PowerSync?‍

Chris Primavera
Not really. We were already comfortable with MongoDB as a database, which is why we focused on Realm.

PowerSync
Are you currently connecting PowerSync to any MongoDB databases?‍

Chris Primavera
Not at the moment. Only Supabase.‍

PowerSync
You probably saw that we released support in PowerSync for MongoDB as a source database.‍

Chris Primavera
Yeah.‍

PowerSync
Great. Are there any features you feel are missing or areas where you faced challenges?‍

Chris Primavera
The learning curve around Sync Rules was steep for us. We wanted to sync a relationship graph of active data — for example, syncing only open work orders and their history for a particular location. We implemented an edge function to recalculate sync flags for related entities.

We also ended up putting an asset ID in almost all our tables to manage syncing by property, as each bucket corresponds to an asset. Being able to sync from a Postgres view would’ve been ideal, but it isn’t possible with PowerSync at this time.

PowerSync
We’re actively working on supporting views with joins in Sync Rules. It’s a complex problem, but something we hope to address in 2025.‍

Chris Primavera
That sounds amazing.‍

PowerSync
One more question: Do you see sync engines becoming a standard for app development, or do you think traditional request-response APIs will remain dominant?‍

Chris Primavera
I’d say for mobile and native apps, I’d definitely use a sync engine again. For web apps, I haven’t explored the PowerSync SDK deeply enough to say. But if the developer experience for web matches the native experience, I’d consider it.‍

PowerSync
That’s great feedback. Are there any broader trends in app development that excite you?‍

Chris Primavera
I’ve been impressed by the advancements in local-first development and tools like Expo, which make transitioning between web and native much easier. Backend-as-a-service options like Supabase have also been a huge help. Advancements in WebAssembly, which is used in the PowerSync Web SDK, is also an exciting trend in app development.

PowerSync
Thanks for sharing. Anything else you’d like to add?‍

Chris Primavera
No, I think we’ve covered everything. I really appreciate the responsiveness of the PowerSync team and the support on Discord.‍

PowerSync
Thank you so much for your time and feedback. We look forward to keeping you updated as we improve PowerSync.‍

Chris Primavera
Great. Thanks.

Subscribe to receive updates

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