I did this just to learn re-frame and get more familiar with the clojure script workflow with shadow-cljs. This is an example SPA that can run standalone with random data or by connecting to the server in my product-inventory project.. The source of data can be changed in the app. There are two interfaces, a single product drop-down or a multi-product checkbox table. In either case, the chosen product(s) inventory history will be charted. There is also the ability to add new history records for the chosen item.