Drupal 8, mucho más que corazón

Codigo

He de reconocerlo… me encanta Drupal y su actual rama 8 mucho más 😛

Hace unos meses escribía que estamos usando Drupal 8 en Geekia como parte del desarrollo de una App. Esta última semana decidí actualizar a la versión 0.40 del framework que usamos, React Native, ya que necesitaba una serie de módulos que solo funcionaban a partir de esta versión. Aunque se puede actualizar a través de CLI con reactnativegitupgrade, no paraba de darme errores con algunos de los módulos. Así que la mejor forma ha sido con una instalación limpia. Salvo algunos “problemillas”, con fácil solución, creo que ha sido lo más sencillo.

Una mejora notable ha sido el menor consumo en la App, de momento los esfuerzos se centran en la versión iOS, así como una mejor compatibilidad con algunos módulos.

"dependencies": {
 "base-64": "^0.1.0",
 "react": "15.4.2",
 "react-native": "^0.40.0",
 "react-native-checkbox-field": "^1.1.2",
 "react-native-datepicker": "^1.4.3",
 "react-native-extended-stylesheet": "^0.3.1",
 "react-native-keyboard-aware-scroll-view": "^0.2.6",
 "react-native-linear-gradient": "^2.0.0",
 "react-native-maps": "^0.13.0",
 "react-native-push-notification": "^2.2.1",
 "react-native-qr-barcode": "^0.6.4",
 "react-native-radio-buttons": "^0.14.0",
 "react-native-router-flux": "^3.37.0",
 "react-native-swiper": "^1.5.4",
 "react-native-vector-icons": "^4.0.0",
 "react-redux": "^5.0.2",
 "redux": "^3.6.0",
 "redux-thunk": "^2.2.0"
 }

Pero, donde más se ha notado el cambio, ha sido con Drupal ya que a partir de ahora y gracias al módulo Push Notifications, va a ser tambien el encargado del envio de push a los dispositivos en vez de parse que fue con el que comenzamos.

De esta forma Drupal pasa a ser también el “cerebro” de la App ya que, además de gestionar los usuarios, las ofertas y la geoposición de los establecimientos, será también el encargado del envio de notificaciones a los dispositivos (rules)

Ésta va a ser la primera App en la que Geekia se ha encargado de todo el diseño, desarrollo, lógica de funcionamiento…

 

 

Lo que hemos hecho en 2016 (técnicamente hablando)

Si hace unos días en geekia publicabamos lo que habíamos hecho durante el pasado año, ahora voy a intentar hacer lo mismo pero desde un punto de vista más técnico.

Este año, como anteriores 😉 el desarrollo principal ha sido bajo drupal, si bien todavía la mayor parte ha sido con la versión 7, por fin hemos podido preparar un par de proyectos en su nueva versión 8. Una API para alimentar una futura aplicación y una web para una clínica neurológica de Almería. Ya solo con este trabajo, nos ha convencido para tenerlo en cuenta para futuros proyectos durante este año.

WordPress, aunque hemos preparado un sitio, todavía no es un CMS con el que nos encontremos muy a gusto, ojo, sigo pensando que es la mejor opción para un blog, de echo, éste está funcionando con él. Eso sí, Genesis nos ha enamorado 😉

En cuanto a frameworks PHP seguimos con PhalconPHP y Symfony y aunque nos gustaría empezar con algún otro, por ejemplo Laravel, todavía estamos más que servidos con éstos.

Además este año también ha sido el cambio en la versión de PHP, ya estamos con la 7.0, aunque en producción todavía estamos simultaneandola con la versión 5.6 ya que tenemos varios proyectos que no funcionan con la nueva versión.

Para front-end seguimos con Foundation y de momento no pensamos en cambiarlo, aunque no tenga ya soporte para IE 8 😉

Además, durante este año hemos “subido” en desarrollos javascript, para ello hemos usado frameworks como Sencha (manteniendo varios simuladores), continuado con angularjs en el proyecto de cambia tu mundo para Cáritas y empezando con reactjs para la UXSpain 2016 y react native para una próxima aplicación.

En definitiva un año en lo técnico completito, espero que este nuevo año que acabamos de empezar nos permita seguir aprendiendo y mejorando en todo y algo que he echado mucho en falta ha sido la de compartir y cooperar un poco más con la comunidad 🙁

Por cierto, Feliz Año nuevo… un poco atrasado.

 

Drupal 8, el mejor corazón para un desarrollo

Hace unos meses empezamos a trabajar con una empresa que tiene tiendas por toda España, la mayor parte del trabajo es y ha sido relacionado con el marketing, tanto online como offline pero ahora ha tocado la parte técnica, más concretamente en “mejorar” su programa de fidelización.

Actualmente cuentan con un programa de bonos los cuales se reparten en unas fechas determinadas del año. Para romper la estacionalidad decidimos crear unos bonos que se “consumirán” a través de una App. Salvo una serie de condiciones que nos exigió el cliente, algunas que no compartimos, nos aceptaron la creación de la app.

Limpiando para mejorar

El primer problema con el que nos encontramos fue su ERP, aunque bastante potente, estaba un poco limitado para extraer datos, además de que necesitaba urgentemente  un saneo de los mismos. Estamos hablando de una bbdd de aproximadamente 500.000 usuarios, la gran mayoría recurrentes y repartidos por mucha parte de la geografía española. Esa “limpieza” se ha estado llevando a cabo durante estos últimos meses y gracias a la empresa desarrolladora del ERP se ha podido mejorar su conexión con el exterior, con una serie de servicios web tanto para la gestión de usuarios, como para el consumo de bonos.

El corazón de la app

Una vez estaba resuelta la conexión, comenzamos con la creación de una API que “alimentaría” la propia app. Para ello decidimos usar… a ver si lo adivinas… pues si, drupal y más concretamente pensamos en la versión 8 ya que su desarrollo potenciando la omnicanalidad lo hace el más adecuado para ello, además de servirnos como banco de pruebas para el uso de esta nueva versión de nuestro CMS favorito 😉

El desarrollo lo comenzamos con la versión 8.0.0, pero actualmente lo hemos migrado a la 8.2.0, con todo lo que ello ha conllevado. Todos los servicios se han segurizado con OAuth 2.0, además del propio basic_auth del core de drupal. Desde el CMS se gestionan las ofertas que se mostrarán en la app así como la conexión con el gestor de notificaciones, para ello hemos usado parse, y nos está dando muy buenos resultados.

Otra de las funcionalidades que se gestionan desde aquí, es la geoposición de las distintas tiendas que dispone el cliente, mediante la creación de un nodo específico y su correspondiente service.

Drupal 8 nos ha permitido integrar a través de su API REST, todo lo necesario para poder servir los datos de forma correcta, sencilla y segura.

…y por fin, la app

Para el desarrollo de la app hemos optado por un desarrollo híbrido y, aunque tenemos experiencia ya en Ionic, hemos elegido React-Native, a pesar de que solo hemos hecho un desarrollo (en React), su flexibilidad y potencia nos hizo creer que era la mejor opción. De momento, y salvo el cambio tan rápido de versiones que están teniendo, lo cual no está del todo mal, pensamos que la opción ha sido la más acertada.

Durante esta fase, todavía en desarrollo, se ha tenido que “experimentar” muchísimo, tanto que daría para un nuevo post, eso si, por si os puede interesar los módulos que estoy usando son estos:

"dependencies": {
    "base-64": "^0.1.0",
    "immutable": "^3.8.1",
    "parse": "^1.9.2",
    "react": "^15.3.2",
    "react-native": "^0.34.1",
    "react-native-checkbox-field": "^1.0.8",
    "react-native-datepicker": "^1.3.2",
    "react-native-extended-stylesheet": "^0.2.0",
    "react-native-linear-gradient": "^1.5.4",
    "react-native-maps": "^0.8.2",
    "react-native-nav": "^1.1.4",
    "react-native-push-notification": "^2.1.1",
    "react-native-qr-barcode": "^0.6.4",
    "react-native-radio-buttons": "^0.11.0",
    "react-native-remote-push": "^1.0.3",
    "react-native-router-flux": "^3.26.16",
    "react-native-side-menu": "^0.19.0",
    "react-native-swiper": "^1.4.5",
    "react-native-vector-icons": "^2.1.0",
    "react-redux": "^4.4.5",
    "redux": "^3.6.0",
    "redux-thunk": "^2.0.1"
  }

De ellos, sin duda alguna el que más me ha parecido “magia” ha sido redux… cómo he podido estar desarrollando sin conocer esta maravilla 😉

Para esta parte del desarrollo cambiamos del IDE (o editor) que estábamos usando hasta ahora, NetBeans, por Atom con Nuclide y ya se ha convertido en nuestro editor de código de cabecera… tranquilos, SublimeText todavía no lo he desinstalado y lo sigo usando para otros menesteres 😉

El soporte que tiene Nuclide de React-Native es sin duda alguna mejor que en otros editores, lógico por una parte ya que ha sido desarrollado también por los mismos, Facebook

Una vez todo funcione junto, el flujo de la app deberá ser como esto:

Flujo de la app

 

Esperemos poder presentar el desarrollo muy pronto 😉

Me gusta Mac pero…

Hace 2 años que soy usuario de Mac, vamos, desde que estoy en geekia, mis socios que me engañaron 😉 y he de reconocerlo, ha sido de lo mejor como usuario.

Un MacBook Pro, Iphone 4 y el Ipad2 de la empresa, o sea, que salvo el Ipod todo lo demás y aunque me cost­ó al principio, lo “bien que están hechos” hizo que me resultara bastante fácil acostumbrarme a ellos. OSX creo que es un buen sistema operativo, intuitivo, usable, estable y “muy bonito tambien”, y en el que uso, para mi trabajo, software libre (salvo el SO claro), Firefox, Netbeans, GIMP, Inkscape, Libre Officce…etc, soy un ferviente usuario de software libre, de echo, he sido y soy usuario tambien de linux.

La cuesti­ón es que todo este rollo es porque necesitabamos o queriemos desarrollar para ios y estos de Apple solo te dejan hacerlo de esa forma. En parte lo entiendo, si quieres un sistema que funcione bien filtrar el software que se ejecuta en esos dispositivos es una opci­ón, la cual, los desarrolladores aceptamos. Los problemas, que en realidad no lo son ya que tengo la opci­ón de cambiar el SO, aparecieron hace unos mesas probando el IOS5 ya que me “obligaba” a actualizar mi sistema a Lion, cosa que no querí­a hacer ya que estaba/estoy bastante c­ómodo. Bueno pues continuar trabajando para IOS4 que tampoco está tan mal 😉

Objetive C es un lenguaje con el que me siento a gusto, pero siempre he creido que una de las cosas más importantes en software es el tema de la multiplataforma. Empezé a “programar serio” en un Commodore Amiga 500, antes tení­a un Amstrad CPC 464 y poco podí­a hacer, la abadí­a del crimen, navy moves o ghost and goblins me quitaban mucho tiempo: :_) , durante esa época la mayorí­a de mis amigos disponian de PC y yo hacia “programas” de calculo que ellos no podí­an ejecutar. Entonces descubrí­ java y se solucion­ó (en parte) el problema. Es por eso que siempre me ha “atraido” la programaci­ón web, por mucho que digan que es para los “que no saben programar” y más ahora despues de lo que se puede hacer con html5, css3, responsive design… eso sí­ con “navegadores modernos” que se pueden ejecutar en los 3 SO de escritorio más usados, linux, osx y windows.

Phonegap es una ayuda GENIAL para poder lograr esto, pero los señores de Apple lo están poniendo más dificil y todo esto está cada vez minando mis ganas de hacer cosas para Mac, ojo, me encanta usar mis dispostivos Mac, pero esa “filosofia” tan “perfeccionista” me está empezando a pasar factura. ( ¿ más linuxero que fanboy ? )

El tiempo dirá …