A Clojure library for managing migrations and seeding across multiple datastores like SQL, Datomic, Cassandra, and Elasticsearch.
Joplin is a Clojure library designed for flexible datastore migration and seeding. It solves the challenges of managing multiple datastores—such as SQL, Datomic, and Cassandra—across different environments like development and production. By providing a unified configuration and extensible plugins, it streamlines database operations in complex systems.
Clojure developers working on projects that involve multiple datastores and require consistent migration and seeding across environments. It's particularly useful for teams managing SQL, NoSQL, or search databases in microservices or polyglot persistence architectures.
Developers choose Joplin for its extensible plugin system, declarative environment configuration, and seamless integration with Clojure workflows. Unlike single-database tools, it offers a unified solution for heterogeneous datastores, reducing operational complexity.
Flexible datastore migration and seeding for Clojure projects
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Built-in plugins for SQL, Datomic, Elasticsearch, Cassandra, and more allow consistent migration across heterogeneous databases, reducing operational complexity.
Enables defining databases, migrators, and seeds in EDN files and combining them into environments like dev and prod for reproducible setups.
Can be run from the REPL, via Leiningen aliases, or programmatically, fitting seamlessly into Clojure development workflows.
Adding support for new datastores requires implementing only a handful of multi-methods, as per the README, making it adaptable to custom needs.
Version 0.3 contains many breaking changes from 0.2, requiring careful migration and potentially breaking existing configurations, as warned in the README.
Seed functions are not idempotent and can lead to data duplication if run multiple times, requiring manual oversight to avoid issues.
The EDN-based configuration map with environments, migrators, and seeds can be overkill for simple projects, adding unnecessary setup overhead.
Heavy reliance on Leiningen and Clojure-specific features makes it less suitable for projects using other build tools or languages, limiting its portability.