Background
We were joined by Timo Behrens to talk about trakkd, a collaborative meeting productivity application that he is in the process of building. We spoke about what he sees as the benefits of local-first, the stack that he is using, and why he decided to use PowerSync.
App details
TL;DR
- Use case: A collaborative meeting notes app to improve meeting culture, focused on real-time functionality for preparation and note-taking, with offline capability as a secondary feature.
- Selected PowerSync for its production readiness and decoupled architecture.
- Uses Nuxt.js (Vue.js) without TypeScript to minimize development time.
- Ranked real-time sync as the highest priority (10/10), followed by speed (8/10) and offline functionality (6/10). Evaluated alternatives like ElectricSQL, Replicache, Supabase Realtime, and TipTap but found PowerSync best suited to their needs.
Interview
PowerSync
Thanks so much for chatting with us. Could you tell us a bit about what you’re building?
Timo
I’m building a collaborative meeting notes application aimed at improving meeting culture in companies. The goal of my app is to make people more productive, prepared for meetings, and ensure no information gets lost or decisions aren’t tracked. A lot of companies use Google Docs for one-on-one or team sync meetings, but my app is focused on helping managers and executives stay organized.
For that, I need real-time functionality, something like Google Docs, so users can have the tool open alongside their call, add agenda items before meetings, and take notes during the meetings in real-time. I looked into a few local-first frameworks, and I really liked PowerSync because it felt more decoupled than others like ElectricSQL, and I didn’t want to invest in something that was too bleeding edge. PowerSync felt more production-ready, which gave me confidence to use it.
I also like the offline-first approach, where users can prepare for meetings or retrieve information even if they don’t have a connection, like when they’re on a train. But I mostly need the real-time functionality, and the offline feature is a nice-to-have.
PowerSync
It sounds like you’re implementing real-time collaborative document editing. We demonstrated how PowerSync can be used for that, with data stored in Postgres and synced in real-time. Did you look at that example or are you doing something similar?
Timo
I checked out those technologies, but for now, I’m just using a simple strategy with PowerSync. I’m not doing anything complex like CRDTs.
PowerSync
Makes sense. Could you share what your front-end stack is?
Timo
I’m using Nuxt.js, so it’s based on Vue.js and plain JavaScript. I chose to avoid TypeScript because I’m trying to minimize development time. I’ve already opted for a lot of new technology, including PowerSync, and I had some initial struggles integrating it, mostly due to documentation - which is better now. But once it worked, it felt great. Building something like this from scratch wouldn’t have been doable for me as I’m bootstrapping everything.
PowerSync
You’ve already touched on the reasons why you chose an offline-first or local-first architecture. Speed and real-time functionality were big factors for you. Can you rank the importance of these features — real-time sync, offline functionality, and speed — on a scale of 1 to 10?
Timo
Real-time is a 10, speed is an 8, and offline is a 6.
PowerSync
As for alternatives you looked at before choosing PowerSync, were there any others besides ElectricSQL?
Timo
I also considered Replicache, Supabase Realtime, and TipTap. Supabase Realtime does not provide a lot of functionality out of the box for my use case, and ElectricSQL wasn’t production-ready at the time. Replicache seemed inactive and had a difficult API. I didn’t need full CRDT functionality, as my app is more structured and doesn’t require free-form text editing. Therefore TipTap was not suitable. Ultimately PowerSync seemed to be the best choice for my app.
PowerSync
You mentioned PowerSync being more decoupled and production-ready. Were there any other standout features that led to your decision?
Timo
Yes, the active developer team and the fact that JourneyApps uses it gave me confidence. It’s a new project, but you seem committed, which was important to me.
PowerSync
If you had to rate the importance of PowerSync’s decoupled nature versus its production-readiness and active development, which would you say is most important?
Timo
The decoupled nature was very important for my project because I didn’t want to risk having to rewrite the entire application if something didn’t work. I started with Supabase and then integrated PowerSync, though I had to adjust my data model to fit the Sync Rules paradigm.
PowerSync
We’re working on improving the flexibility of Sync Rules to handle more complex relationships. On a more general note, given our goal to make local-first and offline-first applications easier to develop, do you have any suggestions for how we can improve PowerSync?
Timo
Documentation. I had some challenges, like certain commands in the documentation using pnpm that weren’t compatible with npm. It would be helpful to offer options for different package managers. I’ve hesitated to upgrade certain tools after bad experiences with breaking changes — like when I updated PrimeVue, and it cost me weeks of rework. That’s why I’ve stuck with what’s working for me. A bit more guidance on using different tools would help, especially for new users who might struggle with the steep learning curve. Your team has been fast with updates, and I’ve seen a lot of progress making PowerSync compatible with frameworks like Nuxt and Vue.
PowerSync
That’s great feedback. Anything else you think would help improve the developer experience?
Timo
One thing that could be nice is having a third instance included in the Pro plan. I’m currently using one for local, and one for staging, and I’ll need one for production soon. I noticed you offer additional instances for $25, but having a full package with three would be useful for most developers. I also noticed you offer local hosting, which I haven’t set up yet, so that might solve this issue for me.
PowerSync
Yes, you can run PowerSync (Open Edition) locally, which might meet your needs without extra costs.
Timo
That sounds like it could work for me. I haven’t had time to dive into it yet, but it’s good to know.
PowerSync
Thanks so much for your time, Timo. We appreciate the feedback.
Timo
Glad to help. Keep up the great work!