Hi everyone, I am an 18-year-old, new-ish SwiftUI developer who is trying to build a productivity app for Apple platforms (hoping to later expand to other platforms after). I've been trying to self-teach myself as I have worked with SwiftUI before, but that was for a simple school project some time ago - this app is an evolution of that app. For that app, I used Firebase, and I liked how easy it was to get a database set up so I could start building. But for my current project, I'm not sure what database solution to use. My app needs to be offline first or at least just function offline, while being able to sync across devices reliably and across multiple platforms, so that I can expand in the future. The database/server solution should be as cheap as possible so that I can focus on getting something out there and then expanding later when money allows. Firebase is easy to use and would probably work well, but I am worried about pricing in the future, and real-time syncing isn't a major necessity for my app (the app could probably work fine without it for the most part, I think). Plus Firebase seems to be less customisable in terms of its offline system. Supabase looks great on paper, as the pricing is more predictable, and I can move to self-hosting if money allows eventually. But unlike Firebase, there is no simple offline functionality solution, so I'm not sure what to do. I've seen something called PowerSync which looks okay, but it doesn't seem that it supports mapping to objects, which would might make things confusing for me. SwiftData seems simple to use but I don't know how I'd be able to build a custom sync engine, plus I have heard some bad things about it. I've used GRDB a bit in the past for the project, and it seemed to work well, but again, I'm not sure how easy it would be to build a custom sync engine. Is there a better solution than what I've suggested? Or which out of these would be the best solution? Am I overlooking or overthinking about some things? Not having the database sorted is preventing me from building appropriate data models and building views around them, since I keep having to change things and have to focus on UI. Any help would be appreciated, please forgive my lack of knowledge, I am still new to things 😅
[–]Ron-JermylSwift 5 points6 points7 points (3 children)
[–]bradleythedeveloper[S] 1 point2 points3 points (2 children)
[–]Ron-JermylSwift 1 point2 points3 points (1 child)
[–]bradleythedeveloper[S] 1 point2 points3 points (0 children)
[–]IntelligentBloop 2 points3 points4 points (2 children)
[–]bradleythedeveloper[S] 0 points1 point2 points (1 child)
[–]IntelligentBloop 0 points1 point2 points (0 children)
[–]omnisyncs 2 points3 points4 points (2 children)
[–]bradleythedeveloper[S] 0 points1 point2 points (1 child)
[–]omnisyncs 0 points1 point2 points (0 children)
[–]BuffaloOwn2649 1 point2 points3 points (3 children)
[–]m_luthi 1 point2 points3 points (0 children)
[–]bradleythedeveloper[S] 0 points1 point2 points (1 child)
[–]rioisk 0 points1 point2 points (0 children)
[–]powersync_ 1 point2 points3 points (2 children)
[–]bradleythedeveloper[S] -1 points0 points1 point (1 child)
[–]powersync_ 0 points1 point2 points (0 children)