[HN Gopher] TinyBase v2.0: reactive data store for local-first apps ___________________________________________________________________ TinyBase v2.0: reactive data store for local-first apps Author : jamesgpearce Score : 51 points Date : 2022-09-16 20:08 UTC (2 hours ago) (HTM) web link (tinybase.org) (TXT) w3m dump (tinybase.org) | pbronez wrote: | Nice work. I love anything that makes local-first easier. I've | been paying close attention to Dolt for this. In a perfect world | I'd have the gut semantics from Dolt and EdgeQL from EdgeDB. | | This focuses on the reactive feature - the ability to set | listeners and get alerts. There seem to be some nice React | integration, but haven't built with React enough to immediately | see what that unlocks. | jamesgpearce wrote: | Thank you. I figured that getting/setting/listening are the key | primitives, and then the React layer (which is just one of many | theoretical UI library bindings) can use hooks and components, | or whatever, to simply wrap them. I'm not familiar with Dolt, | but seems like I need to become so! | jamesgpearce wrote: | Author here, if anyone has any thoughts or feedback. Bring it on! | pbronez wrote: | Congratulations on shipping! | | Can you explain your motive for focusing on the combination of | reactive data and local deployment? | | My first thought is that local-first = one user = I know what's | changing because I'm the only one using it. Perhaps valuable | for monitoring external data feeds? | jamesgpearce wrote: | Yeah, I see your point. I've been assuming that local-first | doesn't mean local-only. Even if it's just you, you could | easily be polling something else to get data updates, as you | suggest. (One original use case was a personal GitHub | dashboard app that polled for new activity but provided local | analytics). | | A couple of great essays I've enjoyed in this space are | https://www.inkandswitch.com/local-first & | https://riffle.systems/essays/prelude/ | | I feel it should be possible to build certain types of apps | that can view, query, and manipulate denormalized data | without even being online. (Perhaps I shouldn't over- | glamorize those days when one used to jam Access databases | into Windows apps, but hopefully you get the point.) | Reactivity just serves as a nice binding paradigm. | mfbx9da4 wrote: | Wait so can you actually connect tiny base to SQLite? | jamesgpearce wrote: | No, there's no _actual_ RDBMS involved. The query engine uses | a functional style of query that has similar concepts to SQL, | but all the evaluation (and reactivity) is first party, in | the library itself. | | Of course it would be pretty easy/fun to persist your | TinyBase content into a SQLite database, or pull a dataset | from it. The demos load up TSV but you could easily do | something similar from an actual database somewhere. | mfbx9da4 wrote: | If I understand correctly the issue with storing and | retrieving from SQLite is that it won't be incremental? | jamesgpearce wrote: | It could be made to be. The current persistence | implementations are all batch but I believe they could be | row, or even cell-level, theoretically. Nice idea. | fillest wrote: | The font is unreadable, very thin | julienreszka wrote: | I agree. | jamesgpearce wrote: | Ouch, tough crowd, but fair enough! | | I wonder if I should have a font-weight (or -family) toggle | alongside the dark mode setting. Would be a shame for people | to miss out on reading about the software because of the | typography! | j-bos wrote: | I like the thin font on mobile. | fillest wrote: | On mobile it is indeed at least not blurry but still harder | to read.. | jzcoder wrote: | I immediately close a page dense in text and using a thin | font like Lato or Raleway. | modzu wrote: | im never happy no matter what i do | mfbx9da4 wrote: | The main limitation I see with tiny base is that it has to load | all data in one batch and modifying any record results in the | whole data store being persisted to disk. Surely this can't | scale well... | jamesgpearce wrote: | The data is in memory, and the persistence strategy is kind | of up to you. So it would scale reasonably if you put the | sync/persist on a different schedule to the UI - perhaps when | the browser is idle. | | BUT of course, this is not a library to be used with data | sets of billions of rows! I'd recommend a proper RDBMS for | that ;) | mfbx9da4 wrote: | Yeah but I feel like it could be used for that, if only | retrieval and storage could be done incrementally... | mfbx9da4 wrote: | You're 80% of the way there now that you have encoded SQL | lite syntax now all you have to do is to translate that | into raw SQL queries to be executed | jamesgpearce wrote: | Correct. I think this could be done, but I would need to | think a little about how best to. Thank you for the idea! | 1egg0myegg0 wrote: | Howdy! What are the rough edges when persisting to a server? | What are the gaps relative to something like PouchDB? | jamesgpearce wrote: | Honestly, just my personal confidence currently. There's very | basic locking and store-wide read-write. I really aspire to | some sort of CRDT implementation that can be considered a bit | more state-of-the-art and tolerant to the innumerable | challenges of that problem. | pinum wrote: | I looked into building something like this for a React Native | app. (Actually I first considered the practicality of making a | reactive version of sqlite... I decided it would be too complex | and not something I'd want to use without upstream support). | | We ended up doing something a bit more traditional/basic/manual, | but this looks nice. It would definitely have been in | consideration if it'd been available at the time, and I'll keep | it in mind for future projects. | jamesgpearce wrote: | Cool! Please take a look and see if it works out. I should | point out that the ui-react library (that provides React | bindings) does _not_ depend on ReactDOM, so you can use it just | as easily in React Native. | | At least, once I got the bundler to be happy about the export | format! Please see | https://github.com/tinyplex/tinybase/issues/17#issuecomment-... | [deleted] | thruflo wrote: | Looks great, congrats on shipping :) | jamesgpearce wrote: | thanks! - it's been a labor of love :) ___________________________________________________________________ (page generated 2022-09-16 23:00 UTC)