Immutable in-memory database and Datalog query engine for Clojure, ClojureScript, and JavaScript.
DataScript is an immutable in-memory database and Datalog query engine built for Clojure, ClojureScript, and JavaScript. It provides a lightweight, ephemeral data store that runs entirely in the browser, enabling complex queries and centralized state management for client-side applications. It solves the problem of tracking and querying application state efficiently without server dependencies.
Frontend developers building interactive, state-heavy web applications in ClojureScript or JavaScript, particularly those needing advanced query capabilities and immutable state management.
Developers choose DataScript for its simplicity, performance, and Datalog query power in a client-side context. Unlike server-heavy databases, it offers zero-overhead in-memory operations, seamless immutability, and a uniform approach to state, making it ideal for modern browser-based apps.
Immutable database and Datalog query engine for Clojure, ClojureScript and JS
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Based on persistent data structures, DataScript offers cheap database creation and consistent state snapshots, enabling efficient undo/redo and time-travel debugging without overhead.
Supports complex queries, rules, aggregates, and recursive relationships, allowing non-trivial questions about application state to be answered directly in the browser with minimal setup.
Optimized for in-memory operations in the browser, it runs with minimal overhead and is ephemeral, making it ideal for interactive web applications that don't require server dependencies.
Centralizes application state so that rendering, server sync, and undo/redo operations become independent and non-interfering, as highlighted in the README's benefits.
As an ephemeral in-memory database, DataScript lacks durable storage out-of-the-box, requiring additional work to integrate with localStorage, IndexedDB, or server sync for data longevity.
Missing advanced database features like full-text search, partitions, and automatic history tracking, which are standard in systems like Datomic, limiting its use for more complex data needs.
Requires familiarity with Datalog query syntax and immutable data patterns, and the README admits a lack of comprehensive docs, relying on examples and external Datomic documentation.