🇪🇦 Leer en Español, “¿Qué es CODENERIX?“
It is the name given to the Open Source and free software created by Centrologic for the development of management tools using web technology thanks to Django/Python and AngularJS (by Google), all laid out with Bootstrap (by Tweeter) to achieve an impeccable, fast, lightweight and efficient result.
When we started developing the idea of CODENERIX we had already been enlightened by the philosophy of Python itself for a long time. For those who do not know Python, I will recommend you to read the ZEN of Python (by Tim Peters), which is made up of the following premises (I highlight the most important ones for us):
- Beautiful is better than ugly.
- Explicit is better than implicit.
- Simple is better than complex.
- Complex is better than complicated.
- Flat is better than nested.
- Sparse is better than dense.
- Readability counts.
- Special cases aren’t special enough to break the rules.
- Although practicality beats purity.
- Errors should never pass silently.
- Unless explicitly silenced.
- In the face of ambiguity, refuse the temptation to guess.
- There should be one– and preferably only one –obvious way to do it.
- Although that way may not be obvious at first unless you’re Dutch.
- Now is better than never.
- Although never is often better than *right* now.
- If the implementation is hard to explain, it’s a bad idea.
- If the implementation is easy to explain, it may be a good idea.
- Namespaces are one honking great idea — let’s do more of those!
These premises, together with the DRY (Don’t Repeat Yourself) principle, led us to think that it would be very interesting to develop a tool that would allow us to generate management environments quickly without repeating the same things repeatedly.
In the first approach to this idea, we thought that the Django administration panel could fulfill part of these premises, but as we delved deeper into the idea, we realized that the Django panel was not enough. More importantly, the changes that the Django administration panel was suffering from at that time were such that any development on it would inevitably lead to significant maintenance costs. It was at this point that we embarked on developing a tool that would break the schemes of the “old” web, taking development to newer web technologies (Google’s AngularJS) and be prepared for the irremediable generation of mobile devices that had been sweeping the market. and that, a short time later, would end up dominating the market in relation to web pages. For this reason, we decided to incorporate Bootstrap (from Twitter).
What CODENERIX was at the beginning and what it is today has nothing to do with it, given that by having the base covered, we began to have ideas that would speed up development even more. It was at this point that CODENERIX became a really powerful tool. We have had several important technological leaps, but without a doubt, the most outstanding was the inclusion of dynamic Inputs and Selects, with the ability to query the database in real-time and obtain unprecedented feedback from it, where any selected data implied feedback on the forms themselves. Another of the most important improvements was including a RESTful API system where, through an advanced authentication system, it would be possible to interact with the ERP as if you were another system user but performing all these actions from a common RESTful API.
For us, a new era of development began, where each project cut production and maintenance costs by around 15% each time. Because we were making between 5 and 6 management environments a year, the improvements were concatenating necessarily, until finally, the package manager appeared.
To date, all these actions and improvements have been a complete success from the development point of view. However, there was still a long way to go since we are so convinced of the power of CODENERIX that we think that using them alone is wasting a great amount of work, so we have also recently decided to publish the code under a free license (Apache License 2.0 and Creative Commons BY-NC-SA 4.0) and take the final step to our essence, the free software. We faithfully believe in CODENERIX and enjoy its benefits every day.
Over the years, we have made different tools with CODENERIX, among the most outstanding I must-name tools for client management for important Spanish insurers, software for managing private flight services, data acquisition systems, industrial management, online stores, marketplaces, and document management software.
When the team described the different features, the following especially stood out:
- it’s just Django on a bunch of steroids
- designed to develop new Django applications or integrate with existing applications
- methods to simplify writing filters and control the results granularly
- control what your users see in your applications in just one line
- it is very simple to develop custom views
- client-side validation included as standard
- dynamic inputs and selects with the ability to autocomplete in real-time
- queries sent to the server may include feedback from other form fields
- server responses can include control information to act on any form field (fill, empty, read-only)
- all dynamic inputs and selects are declared in just one line with our powerful autofill
- get extra information from the classes through the class introspection system
- ready to go with Memcache without doing any extra work
- complete control of permissions and new types of permission included as standard
- RESTful API system integrated as standard
- multiple authentication systems, including OTP (One Time Password)
The version of CODENERIX that you can find on GitHub is also prepared to work directly with the following plugins:
However, what Django offered us was not enough, so we decided to develop special Widgets and Special Fields to manage the data more granularly:
- FileAngularField, which allows managing any file in the AngularJS $scope
- ImageAngularField, which allows managing any image in the AngularJS $scope
- Date2TimeField, which allows us to fill in the dates in a more operator-friendly format
- MultiEmailField, a field capable of managing and validating multiple email addresses on the client-side
- WysiwygAngularField is a field that fills the text with several built-in WYSIWYG widgets.
- MultiBlockWysiwygField is a field with the ability to manage multiple WYSIWYG-type inputs dynamically.
- BootstrapWysiwygField (soon) is an inline editor with the ability to manage any Bootstrap element (from Twitter) and design the web to measure (it is in the experimental phase)
- GenReCaptchaField is a field that interacts with Google’s reCaptcha
You can see CODENERIX from 5 different perspectives:
In any case, we are always available to help you in your CODENERIX development. That is why if you have problems, do not hesitate to post them on Stackoverflow, where we will attend to any questions and answer any questions that may be asked there.
Continue reading the following article about CodenerixModel.