Project skills: Ruby on Rails, AJAX, Ruby Gems, Active Records, SCSS
The activeadmin-magicfields gem is a project aiming at bringing an easy system of dynamic sections and custom fields to the Active Admin content management system.
It is an experiment trying to recreate some of the features of Wordpress' famous Advanced Custom Fields plugin, which enables users with no coding knowledge to add and remove complex content to their website.
I started this project as a challenge to myself, considering that I had been working a lot withWordpress and the Advanced Custom Fields plugin, which I liked for its relative simplicity of use for clients while in fact using quite complex process under the hood.
I was also using Active Admin on a Ruby on Rails project, which led me to try and see if I could bring a similar behavior in a gem. It required significant data structure planning before starting to develop, because of the high level of abstraction inherent to the concept.
Once the planning phase was done, the implementation in a ruby gem turned also to be more complex than foreseen, because of the dynamic nature of the data structures in play.
I carried this project on my own as an experiment with Ruby, Rails and the process of making gems. I learnt a lot about gem structuring and Ruby on Rails in itself, since this project was covering many parts of a typical web application, dynamic form building and validating being the core of the challenge.
This was a very short project made the quick'n'dirty way, which explains why so many improvements are still in plan.
As displayed on the above screenshot, the gem first enables user to define "parts", which are basically section templates. The gem provides most basic field types out of the box - like text, image and checkboxes, as well as an easy way (even if requiring minimal coding) to add more types.
From there, the user can add as many parts they need on their models with a click of a button. The gem dynamically creates the appropriate fields in the model's form, and the only thing left to do is to feel in the content!
Below, a new page is created, with a landing section, a simple text section, and more sections being added.