MEkit (read: “MakeIt”) makes coders more productive by facilitating rapid iterative development of Facebook Messenger Extensions apps in ClojureScript and/or JavaScript using React and the Messenger platform.

What it does

Our tookit helps software developers by improving the development experience with runtime developer tools and live user interface updates on the device. It hotloads code changes into your Messenger Extensions app on the device as you’re coding, within seconds live updating React components for quick iterations. We’ve also added a developer console to conveniently inspect device logs in real time to learn what’s going on in the running Messenger Extensions app.

Moreover, we’ve implemented open source Clojurescript libraries for the Facebook Messenger platform, including a library implementing Clojurescript support for the Messenger Extensions SDK. It also includes novel clojure.spec schemas to validate json objects before submission to the Messenger SDK. See the src/cljs/api/facebook directory in the open source distribution on github.

The toolkit has been battle tested at hackathons and is now ready to be open sourced.

See the images above for a typical MEkit development workflow in the Atom code editor, with a repl to the right of the display. The mobile device shows the Messenger Extensions app under development, with the display reflecting the code in the editor, which implements React components using the Reagent library for ClojureScript.

Changing the code in the editor updates the Messenger Extensions app on the tablet. After saving the file, the code is compiled and hotloaded into the Messenger Extensions within seconds:

We have also implemented a developer console showing the debug log and other development functionality in the app, similar to the developer console provided by desktop web browsers.

How we built it

The toolkit is implemented primarily in Clojurescript (Clojure targetting JavaScript). We implement React components using the Reagent library. We’ve successfully adapted the figwheel plugin for ClojureScript to also work with Messenger Extensions, supporting live updates.

Accomplishments that we're proud of

Getting live code updates to work for Messenger Extensions.

What's next for MEkit

Eventual prize money will fund improvements to the open source code.

Built With

Share this project: