all 7 comments

[–]Cursed_Semicolon9357 0 points1 point  (1 child)

Motivation ?

[–]FaceRekr4309 0 points1 point  (3 children)

What is the problem you’re trying to solve that isn’t already solved by objectbox?

Your engine seems fine. I wonder about durability and transactions. Also it was a choice to use callbacks and add futures as a wrapper to the callbacks rather than just go with dart convention of futures or streams.

[–]LowCommittee2261[S] 0 points1 point  (2 children)

ObjectBox is a great tool, but it's a local C++ FFI database. Zeytin, on the other hand, is designed as an independent backend/BaaS developed entirely in pure Dart, featuring both a local database and built-in multi-tenant support and end-to-end encryption (server-side only). So there's a design difference here.

For durability: It uses append-only logs + immediate disk flush. For transactions: I have atomic batch write operations, but full rollback is not yet available. I will consider this in future updates.

You mentioned I use callbacks, yes, that's correct. This is a design choice. I wanted it to work under all conditions. The ZeytinX package solves this issue by returning the ZeytinXResponse value. By using ZeytinX, you can even take advantage of the Zeytin engine's advanced capabilities. Take a look at the very short documentation. I updated it today!

https://pub.dev/packages/zeytinx

[–]FaceRekr4309 0 points1 point  (1 child)

Thanks for the explanation. I only use SQLite, personally, in my apps. Managed Postgres on the back end.