Fork me on GitHub

đź’¸ Clojurists Together is going to be funding four project $9,000 each over 3 months. đź’¸ See what kinds of projects our members want us to fund at, and apply by January 15th at


spartan.spec: an implementation of clojure.spec.alpha that can be interpreted by and used with babashka:


Heya, just wanted to let you know that datafire is now available as 0.1.1 at It lets you persist Datascript databases in Firebase's Firestore. Supports offline usage and multi-user synchronization. You can use Firestore Security Rules to limit access. If you're persisting Datascript and this fits your usecase let me know, and also let me know if you've been looking for something like this but with more features. Very interested in how this setup can be pushed further.


Nice work! On startup does this have to transact in all the available data, or does it use from-datoms?


it replays all previous transactions in order


so it keeps history


OK; That could get expensive as number of transactions build up. It's much more efficient if you can rehydrate from a collection of datoms. That may be challenging with firebase as a backend, but maybe there's a way to do it?


I haven't thought very hard about it, but maybe


that version mainly supports transaction level granularity


meaning it persists opaque transactions


I was thinking of supporting datom granularity, thus persisting datoms (opaque or not)


Yeah, semantically that is nice (storing transactions). Clear conceptual model.


but ran into a roadblock where firestore is actually really slow when offline is on and loads of small docs hit it


going to datom granularity might also enable views and entity based security rules


but I wanted to understand usecases better before trying to figure out the firestore slowness


I hadn't considered conn-from-datoms very much before you asked though


but if there's datoms available, and there's a mapping from the firebase ordering to the local ordering, I think it would help


the mapping will always be necessary because only the server has the real order, and it's actually very hard to just get a monotonically increasing number on firestore


so the server uses nanosecond precision timestamps... which unfortunately lose precision when coming over


the offline model also doesn't cater very well to a transaction based CAS number either, so it's for the best


Have you completed the State of Clojure 2020 Survey yet? If not, take 8 minutes and complete it here: - thanks!


If you've already taken it, can you post it in your local Clojure meetup or company slack room? That would really help to spread the word.


🎉 I’m happy to announce a new major version of Compound Compound is a library to help maintain indexed data in reagent/re-frame apps. It works with maps to make debugging and inspection easy. The new version (compound2) is not backward compatible, but improves on the original in a number of ways - it’s faster, has a simpler api, and is less impactful on your bundle size. Hope you find it useful!


@ I've opened a PR to add it to clojure-toolbox ... if you can think of a better category than "Databases", please lmk.


Also, might be worth adding some github topic tags so it shows up in


@ ah thanks for that 🙂 good idea with the topic tags, I didn’t even know they were a thing