El objetivo de este proyecto es desarrollar una aplicación web responsiva optimizada para ser accedida y ejecutada mediante cualquier tipo de dispositivo móvil 📱. La aplicación permite visualizar información sobre las banderas de los países del mundo utilizando datos obtenidos a través de una API pública.
La aplicación consume datos a través de la siguiente API:
- API: RestCountries
- Endpoint utilizado para obtener información de países por su código alfa (CCA3):
https://restcountries.com/v3.1/alpha?codes=DZA,MLI,SEN,ESH - Ejemplo de respuesta:
{ "DZA": { "name": "Algeria", "flag": "https://upload.wikimedia.org/wikipedia/commons/7/77/Flag_of_Algeria.svg", "capital": "Algiers", "region": "Africa", "population": 40400000, ... } ... }
- Endpoint utilizado para obtener información de países por su código alfa (CCA3):
-
🔍 Búsqueda y Filtros (3):
- Los usuarios pueden realizar búsquedas por país y aplicar filtros para refinar los resultados.
-
📑 Mostrar 10 Primeros Resultados:
- La aplicación debe mostrar los primeros 10 resultados y permitir al usuario acceder al resto de la información si es necesario.
-
📝 Información Principal:
- Cada resultado debe mostrar información principal como el nombre del país, la bandera, la capital, la región y la población.
-
⭐ Favoritos y Compartir:
- Los usuarios pueden agregar países a sus favoritos. También pueden compartir la información con un amigo, lo que abrirá un formulario para enviar los datos por correo electrónico.
-
🕒 Historial de Productos:
- Los usuarios pueden ver un historial de los países que han visualizado en un formato similar al de la búsqueda.
-
📍 Página de Contacto:
- Una página de contacto con los datos básicos del desarrollador y un mapa de la ubicación de la oficina (Catedral La Plata).
-
💻 Versión Web:
- La aplicación debe ser funcional en versiones de escritorio, tablet y móvil. En la versión de escritorio, se debe mostrar una sección publicitaria que no aparecerá en la versión móvil.
- ✅ Validación de Datos: Los formularios deben ser validados antes de ser enviados.
- 🌍 Geolocalización: La ubicación del usuario será utilizada para mostrar datos relevantes de su región.
- 💾 LocalStorage: La aplicación utilizará LocalStorage para guardar los favoritos del usuario.
La aplicación contará con las siguientes pantallas y características de navegación:
-
🏠 Pantalla Principal (Búsqueda y Resultados):
- Los usuarios pueden realizar una búsqueda de países.
- Se muestran los primeros 10 resultados y un enlace para cargar más.
-
📋 Página de Detalle:
- Al hacer clic en un país, se muestra la información detallada (bandera, capital, población, etc.).
- Los usuarios pueden agregar a favoritos y compartir.
-
📧 Formulario de Compartir:
- Los usuarios pueden compartir la información de un país a través de correo electrónico.
- Formulario con los campos: datos del país (autocompletados), correo emisor, correo destino y mensaje.
-
🕒 Historial de Productos:
- Página donde se muestra el historial de países que el usuario ha visitado.
-
📞 Página de Contacto:
- Información del desarrollador y ubicación en un mapa.
-
📱 Versión Mobile:
- La interfaz será optimizada para dispositivos móviles.
-
💾 LocalStorage:
- Se utilizará para almacenar los países favoritos del usuario, lo que permitirá que los favoritos se mantengan incluso al recargar la página.
-
📧 Envío de Mail:
- Se utilizará un formulario para enviar los datos por correo electrónico. El formulario se completará automáticamente con la información del país seleccionado.
-
🌍 Geolocalización:
- Se utilizará para determinar la ubicación del usuario y personalizar la experiencia de acuerdo con su región.
index.html: Página principal de la aplicación.app.js: Lógica de la aplicación, incluyendo llamadas a la API.styles.css: Estilos CSS para la interfaz.contact.html: Página de contacto.history.html: Página de historial de productos.favorites.html: Página de favoritos.
- Responsive Design: La aplicación debe ser completamente responsiva y funcionar en cualquier dispositivo móvil, tablet o escritorio.
- Accesibilidad: La aplicación debe ser accesible, considerando la usabilidad y la experiencia del usuario.