Liking cljdoc? Tell your friends :D

Project logo

Jessie Ware

Status GitHub Issues GitHub Pull Requests License


JES: Just Enough Schema to leverage.

📝 Table of Contents

Clojars Project

What is it?

Jessie Ware A.K.A jes provides a means to define attributes and datatypes using plain Clojure maps. It is extended via shortcodes (registered in a plain Clojure map) stored in memory as a Pathom smart map and leveraged via Pathom resolvers. This combination makes it very easy to extend attributes and datatypes into different contexts. It is JUST ENOUGH STRUCTURE to leverage - JES.

Why does it exist?

This whole thing kicked off several years ago with a Conj talk by Antonio Andrade about building a data platform on top of Datomic. I was enamored with Datomic, but growing jaded with how often I felt lost in a sea of attributes. Datomic and other EAVT stores are far too granular. I've got good attribute definitions, but in order to really leverage these attributes for fun and profit I need them collected in a reasonable way.

After switching to current favorite XTDB this approach provided loads of power that's missing from a document store. I want to generate, validate, collect, infer, store, all that. I don't want to just fly by the seat of my pants and end up with a brittle system that I'm afraid to touch. Minimum sized attributes and datatypes do that for me.

Pathom resolvers are hands down the best way to grow capabilities on top of known sources. Combining J.E.S. with a smart map and some write-as-needed resolvers really gave me some power these already powerful tools lack.

How does it work?

  1. Hook up your shortcodes.
  2. Build attributes using maps that contain 2 required keys (jes/spec, and jes/sc).
  3. Build datatypes from attributes using maps that contains 1 required key (jes/req).
  4. Scaffold specs and valuable information about your data via jes-group fn.
  5. Put your jes-group into a Pathom registry
  6. Write some resolvers for fun or profit.
  7. Use your reg and resolvers via sm-> fn to do powerful things.

How do I use it?

Are there examples?

Is it finished?

How can I help?

Did you show gratitude?

Antonio Andrade

Can you improve this documentation?Edit on GitHub

cljdoc is a website building & hosting documentation for Clojure/Script libraries

× close