Esta es una aplicación sencilla desarrollada en Vue 3 que permite a los usuarios ver una lista de Pokémons obtenida desde la PokeAPI, agregar sus favoritos a una lista y compartir sus datos al portapapeles.
- Tecnologías Utilizadas
- Características
- Estructura del Proyecto
- Instalación
- Uso
- Decisiones Técnicas
- Pruebas
- Mejoras Futuras
- Framework: Vue.js 3
- Lenguaje: TypeScript
- Administración del Estado: Pinia
- Estilos: SASS
- Peticiones HTTP: Axios
- Testing: Vitest, Testing library
-
Lista de Pokémons:
- Obtiene una lista de Pokémons de la PokeAPI.
- Permite agregar y quitar Pokémons favoritos.
-
Lista de Favoritos:
- Permite agregar y quitar Pokémons favoritos.
- Los favoritos se persisten en el estado global utilizando Pinia.
-
Compartir Pokémon:
- Copia los datos del Pokémon seleccionado (nombre y atributos) al portapapeles.
-
Pantalla de Carga:
- Una animación de pokebola aparece mientras se cargan los datos.
src/
├── App.vue
├── main.ts
├── vite-env.d.ts
├── assets/
│ ├── images/
│ │ ├── Background.svg
│ │ ├── Close.svg
│ │ ├── List.svg
│ │ ├── Loader.svg
│ │ ├── Pikachu.svg
│ │ ├── Search.svg
│ │ └── Star.svg
│ ├── scss/
│ ├── main.scss
│ └── _variables.scss
├── components/
│ ├── CardPokemon.vue
│ ├── FavoriteButton.vue
│ ├── FooterTab.vue
│ ├── LoadingSpinner.vue
│ ├── PokemonDetailModal.vue
│ └── PokemonList.vue
├── composables/
│ ├── useAxios.ts
│ └── usePokemonService.ts
├── constants/
│ └── tabs.ts
├── interfaces/
│ └── pokemon.interface.ts
├── router/
│ └── index.ts
├── store/
│ └── pokemonStore.ts
└── views/
├── HomeView.vue
└── PokemonView.vue
Sigue estos pasos para configurar y ejecutar el proyecto localmente:
-
Clona este repositorio:
git clone https://github.com/j17hernandez/pokeapi-global.git cd pokeapi-global -
Instala las dependencias:
npm install
-
Ejecuta el servidor de desarrollo:
npm run dev
-
Accede a la aplicación en tu navegador en:
http://localhost:5173
- Visualiza la lista de Pokémons: Navega por los Pokémons disponibles.
- Agrega Pokémons a favoritos: Haz clic en el icono de estrella en cualquier Pokémon.
- Ver el detalle de un pokemon: Haz clic en el nombre de cualquier Pokémon ya sea en la lista de "All" o "Favorites".
- Comparte un Pokémon: Estando en la vista del detalle haz clic en "Share to my friends" para copiar el nombre y atributos del Pokémon al portapapeles.
- Componentización:
- Los componentes están diseñados para ser reutilizables y mantener el principio de responsabilidad única.
- Composables:
usePokemonService.tspara manejar llamadas a la API.useAxios.tspara definir una instancia única de Axios.
- Utilicé Pinia para guardar el listado de Pokemons y retornar los Pokemons favoritos, ya que es más moderno y ligero que Vuex.
- La animación de carga usa CSS puro para simplicidad y compatibilidad.
- Se implementaron pruebas unitarias para:
- Validar las funciones de los composables.
- Verificar el comportamiento de los componentes principales.
- Paginación: Implementar paginación para manejar grandes volúmenes de datos.
- Internacionalización: Agregar soporte para múltiples idiomas.
Gracias por revisar esta aplicación. Si tienes algún comentario o sugerencia, no dudes en comunicarte. ¡Disfruta explorando Pokémons!