🇪🇦 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 in a simple and fast way without having to repeat the same things over and over again.
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, and more importantly, the changes that at that time the Django administration panel was suffering 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, it was for this reason that we decided to incorporate Bootstrap (from Tweeter).
What was CODENERIX 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 the inclusion of a RESTful API system where, through an advanced authentication system, it would be possible to interact with the ERP as if you were another user of the system but performing all these actions from a common RESTful API.
For us then, a new era of development began, where each project cut production and maintenance costs by around 15% each time, and 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, but 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 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, and 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)
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 type of file in the AngularJS $scope
- ImageAngularField, which allows managing any type of 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 used to fill the text with several built-in WYSIWYG widgets
- MultiBlockWysiwygField, is a field with the ability to dynamically manage multiple WYSIWYG type inputs
- BootstrapWysiwygField (soon), is an inline editor with the ability to manage any Bootstrap element (from Tweeter) 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 and 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.