Esta aplicación permite a los usuarios crear, editar y eliminar productos, facilitando la gestión de una lista de compra básica en CRUD, en JavaScript.
- Agile SCRUM utilizando Trello
- Técnologias utilizadas: HTML5, JavaScript
- GIT & Git Hub
- MOB Programming
- Mock Api + Postman
shopList/
│
├── index.html
│
├── README.md
│
├── styles.css
│
├── script.js
│
├── api/
│ └── api.service.js
│
└── assets/
- Crear, editar y eliminar productos
- Interfaz responsiva y amigable
Como usuario, quiero ver una lista de todos los ítems que he añadido, para poder visualizar los artículos pendientes de gestionar.
- La lista debe cargarse automáticamente cuando la aplicación se inicia.
- Cada ítem debe mostrarse en su propio elemento
<li>, con un botón de eliminar "x" a la derecha. - Si la lista está vacía, no se debe mostrar ningún ítem, pero el contenedor de la lista debe permanecer visible.
- Los ítems deben aparecer en el orden en el que fueron añadidos.
Como usuario, quiero poder añadir un nuevo ítem a la lista, para organizar y gestionar los artículos que necesito.
- El usuario debe poder escribir el nombre de un ítem en un campo de entrada y hacer clic en el botón "Añadir" para agregarlo a la lista.
- El ítem no debe añadirse si el campo de entrada está vacío o si solo contiene espaciones en blanco. En estos casos, se debe mostrar un mensaje de advertencia.
- Si el ítem ya existe en la lista, debe mostrarse un mensaje (alert o en pantalla) de advertencia indicando que el ítem ya está en la lista. (ej: "manzana" y "Manzana" deben considerarse iguales)
- El nombre del ítem no debe superar los 25 caracteres. Si se intenta ingresar un ítem más largo, se debe mostrar un mensaje de advertencia.
- El ítem añadido debe guardarse con la primera letra de cada palabra en mayúscula y el resto en minúsculas (sin importar lo que se ha introducido).
- Después de agregar el ítem, el campo de entrada debe vaciarse automáticamente.
Como usuario, quiero poder eliminar un ítem de la lista, para poder gestionar los artículos que ya no necesito.
- Cada ítem debe tener un botón de eliminar ("x") junto a él.
- Al hacer clic en el botón "x", el ítem debe eliminarse de la lista.
- Después de eliminar el ítem, la lista debe actualizarse automáticamente.
- No se debe pedir confirmación para eliminar el ítem; la eliminación es inmediata.
Como usuario, quiero poder marcar un ítem de la lista como "comprado", para poder llevar un control visual de los artículos que ya he adquirido.
- Cada ítem debe tener una casilla de verificación (checkbox) al lado que permita marcarlo como "comprado".
- Al marcar un ítem como comprado, el ítem debe cambiar de estilo visual (por ejemplo, tachado o con un color de fondo distinto).
- Los ítems comprados deben mantenerse en la lista, pero diferenciados visualmente de los que aún no se han comprado.
- El usuario debe poder desmarcar el ítem, quitando el estilo de "comprado".
Como usuario, quiero que mi lista de la compra se sincronice con una API externa, para gestionar los ítems de manera persistente y trabajar con un identificador único (ID) para cada ítem.
- La lista de ítems debe cargarse desde una API de MockAPI.io al iniciar la aplicación. Cada ítem tendrá un ID único proporcionado por la API.
- Cuando se añada un nuevo ítem, la aplicación debe hacer una solicitud POST a la API y recibir un ID generado automáticamente por el servidor.
- Este ID debe guardarse junto con el nombre del ítem en el array de la lista local.
- Al eliminar un ítem, la aplicación debe enviar una solicitud DELETE a la API, usando el ID del ítem para identificarlo.
- Los ítems deben poder marcarse como "comprados" y actualizarse en la API con una solicitud PUT, utilizando el ID del ítem.
- Los ítems que se muestran en la lista deben incluir su ID oculto en el DOM (aunque no visible al usuario) para poder manejar correctamente las operaciones de actualización y eliminación.
- Al recargar la página, los ítems deben cargarse de la API, y cada ítem debe aparecer con su nombre y estado de "comprado" o "no comprado".
- Repositorio de GitHub con el código del proyecto.
- Página web desplegada en GitHub Pages con la funcionalidad completa.
