Repository of the technical test related to the creation of a ToDo List application
Este proyecto es una aplicación de lista de tareas (To-Do List) construida con Ionic, Angular y Firebase. Permite a los usuarios crear, gestionar y completar tareas, así como gestionar categorías. La aplicación también utiliza Firebase Remote Config para activar o desactivar funciones de la interfaz de usuario, como la visibilidad del logotipo.
git clone https://github.com/jcardonamde/To-Do-List_App.git
cd todo-app
npm install
export const environment = {
production: false,
firebaseConfig: {
apiKey: "TU_API_KEY",
authDomain: "TU_AUTH_DOMAIN",
projectId: "TU_PROJECT_ID",
storageBucket: "TU_STORAGE_BUCKET",
messagingSenderId: "TU_MESSAGING_SENDER_ID",
appId: "TU_APP_ID"
}
};
ionic serve
Video explicación de las funcionalidades de la App: https://www.youtube.com/watch?v=IgBDQb5Y-rQ
Deploy de la App en el Hosting de firebase: https://todo-list-app-4cd44.web.app/home
Instaladores: Google Drive
Agregar la Plataforma Android
ionic cordova platform add android
Compilar el APK
ionic cordova build android
Ubicación del APK El APK generado estará en la carpeta platforms/android/app/build/outputs/apk.
Agregar la Plataforma iOS
ionic cordova platform add ios
Abrir el Proyecto en Xcode
ionic cordova build ios
Luego abre el proyecto en Xcode:
open platforms/ios/YourAppName.xcworkspace
Compilar y Ejecutar
npm install -g firebase-tools
firebase login
firebase init
firebase deploy
Ejecutar Tests
npm run test
Ver Resultados de los Tests Los resultados de los tests se mostrarán en la consola o en el navegador si está configurado para ejecutar en un entorno gráfico.
Uno de los desafíos principales fue la integración de Firebase Remote Config. Asegurar que la configuración remota se activara y se aplicara correctamente en la aplicación fue un aspecto clave, especialmente al manejar la carga inicial de la configuración y asegurar que los valores se aplicaran sin causar retrasos en la interfaz de usuario.
Otro desafío fue la gestión de las dependencias y la compilación para plataformas móviles (Android e iOS). La migración entre Capacitor y Cordova también presentó desafíos técnicos que requirieron una reorganización del proyecto para cumplir con los requisitos de la prueba técnica.
Implementé Virtual Scrolling en la lista de tareas para manejar grandes volúmenes de datos sin afectar el rendimiento de la aplicación. Esta técnica mejora significativamente la fluidez de la interfaz cuando se manejan listas largas, asegurando que solo los elementos visibles se rendericen en el DOM en un momento dado.
También optimicé la carga de recursos y datos a través del uso de ChangeDetectorRef, lo que ayuda a reducir la carga innecesaria de la interfaz y permite un manejo más eficiente de los cambios en el estado de la aplicación.
Para asegurar la calidad y mantenibilidad del código, seguí buenas prácticas como la separación de responsabilidades, creando servicios específicos para la gestión de tareas y categorías. Utilicé el patrón de diseño Model-View-Service para mantener el código organizado y modular.
Además, implementé pruebas unitarias para validar las funciones clave de la aplicación, lo que ayuda a detectar problemas antes de que lleguen a producción.
La documentación y los comentarios en el código también se mantuvieron actualizados para facilitar el trabajo de futuros desarrolladores.