Survey Mate
Sistema para levantamiento de encuestas
Cliente: Inbox   |   Clientes Finales: NUPEC - SORIANA - gicsa
Motivación
Los principales problemas por los que surge el proyecto fueron: las herramientas anteriores para que utilizaba nuestro cliente no contemplan el uso offline e intermitente, se necesita visualizar el avance según metas establecidas, por el nivel de conocimiento de los encuestadores o promotores es necesario un soporte continuo.

Objetivos
- Levantamiento offline
- Validaciones de campos personalizadas basadas en información del estudio
- Tener un panel de avance del estudio
- Verificación de ubicación de los promotores 

Solución
Implementación de una aplicación móvil en Android para el levantamiento de encuestas y una aplicación web para la visualización del avance 
Descripción del Sistema

Aplicación Móvil
Aplicación para Android que permite el levantamiento de encuestas, identifica y en base a su ubicación manda la configuración de la encuesta a la que fue asignado, permite verificar la asistencia con evidencias fotográficas de una vitacora y de una zona aleatoria dentro del establecimiento, tiene indicadores de las encuestas realizadas y por sincronizar, la sincronizacion de los datos se realiza cada que detecta conexión, después del login puede funciona totalmente offline.


Dashboard de Avance
Aplicación web con identificación de usuarios para estructura de información de acuerdo a roles (personal de campo, administrativos y corporativo cliente), selección de proyectos y filtro por fecha para análisis de datos, resumen de acuerdo a metas con proyección según el avance obtenido, productividad por semana y promotores, levantamiento por hora del día para  analizar la productividad de los promotores y registro de asistencia de los promotores donde se puede visualizar las evidencias de asistencia.

Tecnología
Planeación y Diseño

El proyecto se gestiono con la plataforma de Atlassian permitiendo aplicar una metodología ágil para la gestión de las tareas, una documentación completa incluyendo artículos para puesta en producción, como agregar funcionalidades y crear el entorno de desarrollo todo esto a través de una base de conocimiento en Confluence , gracias a esto hay un seguimiento del desarrollo desde los Artículos de levantamiento de seguimiento (mediante Historias de usuario, con mockups y diseños en Adobe XD), generación de Sprints y tareas (con Jira) y un control de versiones (con Bitbucket)

Base de datos
Base de datos no relacional MongoDB, con estructura de indices para búsqueda, definición de usuarios según sus tareas (usuario especifico para API, Respaldo, Administrador, Soporte)

API
La plataforma ocupa una API REST echa en NodeJS con una base de Expressjs, cuenta con una estrategia de identificación de usuarios por Json Web Token (JWT) en coordinación con reglas de contenido de acuerdo a roles y jerarquía de usuarios, lo que permite restringir permisos y recursos por ruta de acuerdo al rol y en especifico al usuario, utiliza los modelos para administración de resultados y actualizaciones a la base de datos, tiene estrategias para la carga de archivos que maneja los tipos y limites de peso, según la ruta. Tiene una capa de validación de datos antes de la funcionalidad de la ruta lo que permite un mayor manejo de errores que se mandan a un canal de Slack y directamente a las aplicaciones para una identificación mas clara de lo que esta pasando.

Dashboard de Avance
En el caso de la aplicación web usamos ReactJS que nos permitió hacer una app polimorfica, pues su contenido cambia de acuerdo al rol del usuario.

Aplicación Móvil
Utiliza React Native para un desarrollo mas ágil y la facilidad de producir la aplicación para  iOS y Android al mismo tiempo, por los requerimientos del proyecto se implemento una validación por localización (GPS), se tiene manejo de la cámara para captura de evidencias, se descarga la configuración de el cuestionario desde el servidor con un cambio de sesión podría levantar una encuesta totalmente diferente, configuración para ambiente de prueba, tiene identificación y manejo de sesión por Json Web Token (JWT), para el monitoreo de la aplicación se uso Appcenter implementando Crash Reporting para el seguimiento de errores , Analytics para identificación de dispositivos y CodePush para actualizaciones delta.

Deploy
La plataforma se puso en producción mediante Amazon Web Services (AWS) con una instancia EC2, que permite un crecimiento constante de requerimientos, en esta instancia se uso Nginx como servidor HTTP para la aplicación web, para recursos estáticos y para publicar la API. Utilizamos PM2 para administrar procesos de la API y analizar su rendimiento. Se integraron notificaciones con un bot de Slack para el seguimiento de errores y procesos, permitiendo una mejor asistencia técnica a los promotores.
Survey Mate
Published:

Project Made For

Survey Mate

Published:

Tools

Creative Fields