Es el nombre que recibe el software libre generado por Centrologic para desarrollo de herramientas de gestión mediante tecnología web gracias a Django/Python y a AngularJS (by Google), todo maquetado con Bootstrap (by Tweeter) para conseguir un resultado impecable, rápido, ligero y eficiente.

Cuando comencé a desarrollar la idea de CODENERIX ya llevaba mucho tiempo iluminado por la propia filosofía de Python. Para aquellos que no conozcan Python os pediré que leáis el ZEN de Python (por Tim Peters), el cual que se compone de las siguientes premisas (destaco las más importantes para mi):

  • Hermoso es mejor que feo.
  • Explícito es mejor que implícito.
  • Simple es mejor que complejo.
  • Complejo es mejor que complicado.
  • Plano es mejor que anidado.
  • Escaso es mejor que denso.
  • Cuenta la legibilidad.
  • Los casos especiales no son lo suficientemente especial como para romper las reglas.
  • Aunque sentido práctico supera pureza.
  • Los errores nunca debe pasar en silencio.
  • A menos que explícitamente silenciados.
  • Ante la ambigüedad, rechaza la tentación de adivinar.
  • Debería haber una – y preferiblemente sólo una – manera obvia de hacerlo.
  • Aunque esa manera puede no ser obvia al principio a menos que seas holandés.
  • Ahora es mejor que nunca.
  • Aunque nunca es a menudo mejor que “justo” ahora.
  • Si la implementación es difícil de explicar, es una mala idea.
  • Si la implementación es fácil de explicar, puede ser una buena idea.
  • Namespaces son una gran idea de fanfarria  – Vamos a hacer más de esos!

Estas premisas unidas al principio DRY (Don’t Repeat Yourself), me llevó a pensar que sería muy interesante desarrollar una herramienta que nos permitiese generar entornos de gestión de una forma sencilla y rápida sin necesidad de repetir las mismas cosas una y otra vez.

En un primer acercamiento a esta idea,  pensé que el panel de administración de Django podría cumplir parte de estas premisas, pero al profundizar más en la idea me di cuenta de que el panel de Django no era suficiente, y lo más importante, los cambios que por aquel entonces estaba sufriendo el panel de administración de Django eran tales que cualquier desarrollo sobre ello nos llevaría irremediablemente a unos importantes costes de mantenimiento. Fue en este punto cuando nos embarcamos a desarrollar una herramienta que rompiese los esquemas de la “antigua” web, llevando el desarrollo a tecnologías webs más novedosas (AngularJS de Google) y estar preparados para la irremediable generación de dispositivos móviles que venía arrasando el mercado y que poco tiempo después acabaría dominando el mercado en relación a páginas webs, fue por esta razón que decidimos incorporar Bootstrap (de Tweeter).

Lo que era CODENERIX en su inicio y lo que es hoy no tiene nada que ver, dado que al tener la base cubierta, empezamos a tener ideas que agilizaran los desarrollos aún más. Fue en este punto cuando CODENERIX se convirtió en un herramienta realmente potente. Hemos tenido varios saltos tecnológicos importantes, pero sin duda los más destacados fueron la inclusión de Inputs y Selects dinámicos, con capacidad de consultar a la base de datos en tiempo real y de obtener de esta un feedback sin precedentes donde cualquier dato seleccionado supusiese un feedback sobre los propios formularios. Otra de las mejoras más importantes fue la inclusión de un sistema de API donde mediante un sistema avanzado de autenticación sería posible interaccionar con el ERP como si fueses un usuario más del sistema, pero realizando todas estas acciones desde un API común.

Para nosotros entonces había comenzado una nueva época de desarrollos, donde cada proyecto se recortaban los costes de producción y mantenimiento entorno a un 15% cada vez, y debido a que estábamos realizando al año entre 5 y 6 entornos de gestión, las mejoras se iban concatenando necesariamente, hasta que finalmente apareció el gestor de paquetes.

Hasta la fecha, todas estas acciones y mejoras han sido todo un éxito desde el punto de vista de desarrollo, pero aún faltaba más camino por recorrer, ya que estamos tan convencidos de la potencia de CODENERIX que pensamos que usarlos nosotros solos es desaprovechar un gran trabajo, por lo que además hemos decidido recientemente publicar el código con una licencia libre (Apache License 2.0 y Creative Commons BY-NC-SA 4.0) y finalmente dar el paso a nuestra esencia, el software libre. Creemos fielmente en CODENERIX y disfrutamos a diario de sus bondades.

Durante los años hemos realizado diferentes herramientas con CODENERIX, entre las más destacadas debo nombrar herramientas para gestión de clientes para importantes aseguradoras españolas, software para gestión de servicios privados de vuelos, sistemas de adquisición de datos y gestión industrial, tiendas onlines y marketplaces y gestión documental. Es obvio que en Centrologic, no podría ser de otro modo, usamos CODENERIX para nuestra propia gestión interna.

Cuando el equipo describíamos las diferentes características, se destacaron especialmente las siguientes:

  • simplemente es Django con un montón de esteróides
  • diseñado para desarrollar nuevas aplicaciones Django o integrarse con aplicaciones existentes
  • métodos para simplificar la escritura de filtros y controlar los resultados granularmente
  • controla lo que ven tus usuarios en tu aplicaciones en sólo una lína
  • es muy simple desarrollar vistas personalizadas
  • validación en el lado del cliente incluída de serie
  • inputs y selects dinámicos con habilidad para autocompletar en tiempo real
    • las búsquedas enviadas al servidor pueden incluir feedback de otros campos del formulario
    • las respuestas del servidor pueden incluir información de control para actuar sobre cualquier campo del formulario (rellenar, vaciar, poner en sólo lectura)
  • todos los inputs y selects dinámicos son declarados en sólo una línea con nuestro potente “autofill”
  • obtiene información extra de las clases mediante el sistema de instropección de clases
  • listo para funcionar con Memcache sin realizar ningún trabajo extra
  • completo control de los permisos y nuevos tipos de permiso incluídos de serie
  • sistema API integrado de serie
  • múltiples sistemas de autenticación incluyendo entre ellos OTP (One Time Password)

La versión de CODENERIX que puedes encontrar en GITHUB además está preparada para trabajar de forma directa con los siguientes plugins:

No obstante, lo que Django nos ofertaba no era suficiente, así que decimos desarrollar Widgets y Campos especiales para hacer una gestión más granular de los datos:

  • FileAngularField, que permite gestionar cualquier tipo de fichero en el $scope de AngularJS
  • ImageAngularField, que permite gestionar cualquier tipo de imagen en el $scope de AngularJS
  • Date2TimeField, que nos permite rellenar las fechas en un formato más amigable para un operario
  • MultiEmailField, campo capaz de gestionar y validar múltiples direcciones de email en el lado del cliente
  • WysiwygAngularField, es campo usado para rellenar texto con varios widgets tipo WYSIWYG integrados
  • MultiBlockWysiwygField, es un campo con capacidad para gestionar dinámicamente múltiples inputs tipo WYSIWYG
  • BootstrapWysiwygField (pronto), es un editor inline con capacidad de gestionar cualquier elemento de Bootstrap (de Tweeter) y diseñar la web a medida (está en fase experimental)
  • GenReCaptchaField, es un campo que interacciona con reCaptcha de Google

Debo indicar que CODENERIX no habría sido posible sin el increíble equipo técnico que dispone Centrologic, y que el esfuerzo de desarrollo ha sido realizado enteramente realizado por Centrologic tanto a nivel de negocio, también a efectos de marketing, gestión en redes sociales  y por supuesto todos aquellos aspectos económicos que requiere un proyecto de esta embergadura.

Puedes ver CODENERIX desde 5 perspectivas diferentes:

En cualquier caso, siempre estamos disponibles para ayudarte en tu desarrollo CODENERIX y es por ello que si tienes problemas, no dudes en publicarlos en Stackoverflow, donde nosotros iremos atendiendo cualquier consulta y dando respuesta a cualquier pregunta que allí se realice.