Disclaimer: Aunque conozco personalmente a miembros del equipo de AppNow (unos auténticos cracks) no tengo ninguna relación con la empresa ni con los productos que ella desarrolla.
TL; DR Los creadores de Radarc acaban de lanzar la preview gratuita de AppNow, una herramienta en la nube para generar un backend para nuestras aplicaciones. En este artículo veremos cómo generar nuestro backend, el resultado, y qué nos podemos encontrar en el código generado.
Un poco de contexto
Si no sabes qué es Icinetic, es una empresa con sede en Sevilla que se dedica al desarrollo de productos y aplicaciones móviles. Su producto estrella, Radarc, es una una solución para generar modelos de aplicaciones nativas a partir de un modelo de clases (model-driven design).
Su funcionamiento se realiza a través de diversos módulos llamados fórmulas y se integran en Visual Studio a través de una extensión. Pude verlo en acción hace unos meses y me quedé muy impresionado con la calidad del código generado.
En el pasado /Build, saltaron a la nube presentando Radarc Online, lo que supone una independencia de Visual Studio, y hoy han ido un paso más allá con AppNow, una herramienta para crear y desplegar backends personalizados en la nube.
Características técnicas y limitaciones
La versión beta nos permite probar un stack MEAN, es decir:
- Servidor: Heroku
- Base de datos: MongoDB
- Backend: Node.js + Express.js
- Frontend: Angular.js
Primer contacto
Cuando entramos a la web lo primero que podemos hacer es iniciar sesión con nuestra cuenta de nuestra red social favorita:
El siguiente paso es configurar nuestro modelo de datos, que para este ejemplo he optado por cargar el conjunto que ofrecen por defecto:
Una vez configurado el modelo de datos, continuamos con nuestras credenciales de heroku. En este punto es muy importante que nuestra credencial esté validada (ver más..) y que agreguemos nuestra clave SSH a Heroku para poder continuar.
Si todo ha ido bien podremos ver una pantalla como la que se muestra, que se irá actualizando mientras se va generando la solución.
Con ello hemos generado código a partir de nuestro modelo de clases, y lo hemos desplegado en la nube con un solo paso. El resultado de dicho despliegue es este sitio:
Desde él podemos listar los modelos creados, así como agregar, editar y borrar los mismos.
Bajo el capó
En la lista de ficheros podemos ver, dentro del directorio public las diferentes vistas, controladores y servicios que forman parte de una aplicación angular, y por otro el backend dentro del directorio app.
Si echamos un vistazo al código podremos ver algunos detalles:
- El acceso a MongoDB se realiza mediante mongoose, que es un ORM que nos aporta validación y tipos estrictos de datos para trabajar con MongoDB,
- La API (generada usando Express.js) es compatible con swagger, que si no lo conoces, es una herramienta que nos permite generar documentación así como clientes estáticos y dinámicos de manera automática a partir de los comentarios de la API
- La aplicación Angular es una SPA, con un controlador por cada entidad que hemos especificado al principio, y diferentes acciones de edición, agregación, listado o borrado para cada uno de ellos.
- Soporta, adicionalmente, autenticación y sesiones a través de servicios de Angular.
Conclusiones
Un punto interesante en este aspecto es que ofrece el paquete completo, no solamente la generación de código sino que también el despliegue, y, al estar basado en git, podemos, a partir de ese momento, obtener el control del código y continuar el desarrollo. Es una manera simple y elegante de crear un servicio de backend, que, una vez generado, no tiene ninguna dependencia adicional a servicios de Radarc.
Aunque no es más que una demo, es una prueba interesante de la potencia tras esta herramienta. El código que genera es limpio, bien comentado, a partir del cual se podría continuar el desarrollo (nada que ver con el código auto-generado que hemos visto en algunas herramientas). Mi recomendación es probarlo con paciencia, y avisar a los chicos de Icinetic si encontramos algún fallo. Sin duda, un proyecto a seguir de cerca!