The :hoplon: ClojureScript Web Framework - http://hoplon.io/
George Ciobanu 2020-06-26T20:13:28.288200Z

just a quick note, in case you want to see, that I'm using Hoplon (for now mostly Javelin) for a GUI editor and that it's working really nicely. http://lindenhoney.duckdns.org:7000 (you can select and move/resize items, and create new ones by clicking on the button on the top left bar and then clicking again on the canvas) I just thought you'd like to see it used in a slightly more unique tool

flyboarder 2020-06-26T20:14:44.288500Z


flyboarder 2020-06-26T20:15:01.288700Z

i want to build something similar to this, where we can generate hoplon apps from a gui

George Ciobanu 2020-06-26T20:16:57.288900Z

building a gui editor is not hard just different and no tutorials exist. happy to share my code to see how I did it - I'm using it to build a no code tool.

flyboarder 2020-06-26T20:17:22.289100Z

are you saving the contents to some cms?

flyboarder 2020-06-26T20:17:27.289300Z

or static html?

George Ciobanu 2020-06-26T20:17:33.289600Z

not yet - but I will save it in Datomic

George Ciobanu 2020-06-26T20:18:07.289900Z

because it has version history for free and a very powerful way to model hierarchical data

George Ciobanu 2020-06-26T20:25:23.290100Z

anyway for the actual app, there are two ways to do it: generate code from the EDN app structure (a form of compiling) or build and app that interprets the app structure and build the app dynamically (interpreter). I'm planning on going the interpreter path, which is a bit harder to build at first but allows for super easy and quick updates to the app

George Ciobanu 2020-06-26T20:26:38.290300Z

but the editor and the app are completely separate: the editor manipulates the app data structure and the app interprets and "executes" it. So once the editor is ready you can reuse it (or just use it) and create another app that creates a hoplon app dynamically

flyboarder 2020-06-26T20:27:42.290500Z

yep I had the same thought, to be able to use custom hoplon elements you would need to go the interpreter route