- Opté por usar java para el backend:
- Las dependencias se manejan en gradle, y se descargan automáticamente
- Se utilizó el micro framework pippo, que es un ruteador para endpoints, puede usarse para servicios REST y para servir páginas web; sólo utilicé servicios REST
- Para la base de datos se usa SQLite, que por ser simple, sirve para esta actividad. Además que las consultas vienen incluidas en la misma aplicación web
- Para la conexión a base de datos se usó JDBI, el cual permite crear ORMs con interfaces y anotaciones con consultas SQL; su uso es bastante parecido a retrofit.
- El front end es una aplicación android, se utilizó lo siguiente
- databinding
- retrofit
- gson
- rxjava
- Pudo haber quedado más sencillo, aún así quise dejar una base de datos un poco más sólida e íntegra (un par de catálogos en lugar de usar campos simples)
- La formula para calcular el interés no creo que sea exacta
- omití la opción para seleccionar tarjeta de crédito
Toda la solución funciona en AndroidStudio 3.1.3
- Seleccione la configuración de la aplicación movil ec-app y ejecute
- Buscar la clase
org.shujito.ec.Application
- Hacer click en la flecha para desplegar el menú, seleccionar Run 'Application.main()' (la aplicación fallará en este paso)
- Se generará una configuración de aplicación
- Edite las configuraciones
- Seleccione la configuración que se agregó
- Borre la instrucción Build
- Agregue una nueva instrucción de gradle
- Configure como en la imagen
- Deberá quedar como en la imagen siguiente
- Cambie también el directorio de trabajo a
$MODULE_DIR$
- Es opcional cambiar el nombre de la configuración
Los siguientes comandos deben ser ejecutados en la carpeta del proyecto
./gradlew clean run
./gradlew clean assembleDebug
se generará en ./ec-app/build/outputs/apk/debug/ec-app-debug.apk
./gradlew clean jar
java -jar ec-web/build/libs/ec-web-0.1.jar
Se ejecutan desde el IDE (Android Studio)
- Buscar la clase
org.shujito.ec.test.DatabaseTests
- Hacer click en el círculo para ejecutar las pruebas
- Configurar las pruebas unitarias tomó tiempo
- Removí algunos formularios que hice en la aplicación móvil
- Creo que debí haber comenzado por el backend, pudo haber quedado más simple la aplicación movil
Las especificaciones que vienen en el documento aparentan ser abrumadoras pero en realidad el proyecto está simple de entender, el que se permita especificar asunciones y requerimientos no implementados aligeró un poco la carga mental al momento de la entrega