The last week and a half were dedicated to responding to the biggest issues our early users faced, launching our beautiful new website, and increasing the scope of what you can accomplish with transformations.
In the beginning of June our website got a big overhaul in a collaboration between Diagram Office, a studio run by Sam Cox, and Praxis which is run by Nicholas Sailer. The guys did great work and rather than post pictures here I’ll just encourage you all to check it out and share your feedback.
We also produced a comprehensive product video that gives a brief demo of how Optic works. The video has gotten great reviews so far and many people have shared with me that it helped them “get” Optic. If you’re curious about the details behind Optic you should take a look.
Over the last two weeks we took a good look at our website analytics and realized that something didn’t add up. We were seeing hundreds of downloads a day, but very few users managed to get Optic working on their machines. After talking to some of these users who failed to get Optic installed we realized our install process needed to be improved.
So we built and shipped an installer for Optic and we made it accessible over the command line. Just type “npm install optic-installer -g” and it will start our CLI installer wizard. We’ve made the optic-installer the only supported way to install Optic and since making that change we’ve seen 100% of people who use the installer get Optic installed successfully.
Installs the standalone Optic App
Installs Optic plugins to any supported IDEs on your computer
Launches the Optic Demo Project for you
As more users have gotten into Optic it became apparent that we needed to expand the scope of the transformations system. Over the last week and a half we’ve added support for the following types of transformations. You can check out their feature branches on GitHub now or wait for the next release that comes out this week.
Mutating Transformations **bring the **ability to use a transformation to mutate an existing model or set of models. Some examples where this might come in handy is if you wanted to “Add OAuth to Route” or “Add Action to Reducer”. You can already update a model’s properties in Optic, but until now you couldn’t update an existing model’s children nodes. By bringing this capability to Optic in the form of a transformation we make it possible to bridge multiple sections of Optic knowledge together into one useful patch.
Mutating transformations are not designed to work with the sync system. They’re meant to be used as one time commands to add features to your existing code.
**Multi-Transformations **allow transformation functions to do multiple things at once. You can create a multi-transformation by returning an array of ‘Generate’ or ‘Mutate’ calls in a transformation function. These calls can be used to stage changes within the same file (“Generate all the CRUD routes for User”) or across multiple files (“Add Action to Reducer”).
Multi-Transformations also can not by synced, but since they are are** **composed of a series of transformations each of those can sync. For instance if you generated all the CRUD routes for a model, each individual route would sync directly with the model not by way of the multi-transformation that created it.