Proporcionar información de previsión meteorológica de localidades de España
Contención del coste en tiempo y dinero:
Disponibilidad como aplicación web responsiva para llegar a cualquier dispositivo
Distribución como aplicación 'nativa' utilizando Phonegap, llegando a las principales plataformas de dispositivos móviles
Utilización de fuentes de datos gratuitas
Single Page Interface: restamos trabajo al servidor, lo cargamos al dispositivo cliente
Fuentes de datos
Aemet, para la predicción a 7 días
Openweathermap, para las condiciones actuales
Openstreetmaps para los mapas
Estructuración del área de trabajo
Se separa el código fuente en tres áreas (directorios):
'app': Contiene la base de la aplicación.
'php', 'node' y 'data': Contienen la parte de servidor.
'phonegap': Contiene los ficheros necesarios para combinar con la base de la aplicación y construir las versiones nativas con Phonegap.
Otros elementos del área de trabajo
'scss': estilos de la aplicación con Compass
'build', 'bin': scripts para construcción de la aplicación mediante Phonegap y dependencias de binarios
'resources': recursos de diseño
Servidor
La idea inicial era un servidor Node.js, aunque por razones prácticas se opta por PHP para la versión estable.
Base de datos en formato SQLite: Evita la necesidad de utilizar un servidor de base de datos, tanto PHP como Node.js la pueden consultar sin dificultades. En el caso de PHP cualquier alojamiento permite utilizarlas
Cliente
SPI utilizando Backbone.js y Underscore
Require.js
Se utiliza Require.js para la gestión de dependencias, cargando un primer fichero que contiene:
Configuración y variables de la aplicación (pendiente de refactorización)
Listado de dependencias (se utiliza ‘shim’ para las de JS)
Inicialización de la aplicación una vez cargadas las dependencias
Backbone / Lodash
Backbone, para las vistas, navegación, carga del modelo de datos, etc.
Lodash (similar a Underscore.js), para mixins y plantillas HTML
Bootstrap
Se opta por Bootstrap para evitar costes en UX
Componentes HTML / CSS y algunos comportamientos en cabecera
Facilita que la aplicación sea responsiva, adaptándose a cualquier pantalla, incluso en el caso de aplicaciones nativas.
Otros elementos
Highcharts, para los gráficos.
Leaflet, para los mapas. Permite cargar mapas, y capas, desde fuentes diversas, incluso Google Maps.
En iOS las aplicaciones UIWebView tienen un rendimiento inferior a las aplicaciones web, ya que ciertas características sólo son soportadas por Safari.
Phonegap quizá no es lo más adecuado para aplicaciones que sean muy exigentes en recursos, ya que hay plataformas (iOS) que no les dan un soporte adecuado.
¿Construcción local?
Preparar un entorno para generar aplicaciones con Phonegap puede resultar un poco tortuoso:
Android Requiere el SDK de Android y algunas dependencias (Ant, Java JDK...). Soporta las tres plataformas más extendidas: Windows, Linux y MacOs.
Windows Phone Requiere Visual Studio. Fácil de instalar, pero requiere Windows 8 y destroza cualquier aplicación de virtualización que encuentre a su paso, ya que para el emulador instala Hyper-V.
iOS Requiere xCode, sólo disponible en MacOS (y obviamente una máquina de Apple...).
¿Construcción remota?
Existen algunos servicios en la 'Nube' que permiten construir aplicaciones con Phonegap, siendo quizá el más destacado el ofrecido por Adobe: Adobe PhoneGap Build
Gratuito, limitado a una aplicación simultanea
Limitación en plugins
Firma digital
En ambos casos se requiere una firma digital para poder distribuir las aplicaciones (Android e iOS), que se pueden conseguir pagando las siguientes cantidades de dinero anualmente (que nos darán derecho a utilizar sus plataformas de distribución):