Create a web application witch ReactJS that allows users to search for Pokémon by name and see details about the Pokémon. The API used is called PokeAPI and the details that should be displayed here. For this project started in the Figma file to get the idea of a design.
🥳 App demo
- Create a good structured React App using Vite with TypeScript end config ESLint, Prettier, Husky and Lint Staged for code quality
- Ready for testing with Vitest and React Testing Library
- Setup Redux for state management and Redux Toolkit for better performance
- Themed application with
light
anddark
mode using And Design and Styled Components - Services and requests cached using Axios and React Query
- Fully responsive
- Documentation
- List of Pokémon
- Pagination
- Search for Pokémon by name or number
- Pokemon card with image, name and types
- Modal with Pokémon details
- Page with type of species detailed
- Deploy
This repository uses Conventional Commits to standardize the commit messages. The pattern used is:
<type>[optional scope]: <description>
The tools that help to follow this pattern are:
- Commitlint (to lint the commit messages)
- Husky (hook to run the git hooks)
- Lint Staged (to run the linters and formatters before the commit)
- Commitizen (cli to help with the commit messages)
This app already has some scripts configured:
dev
: run the application in development modebuild
: build the applicationpreview
: run the application in preview modetest
: run the teststest:watch
: run the tests in watch modetest:coverage
: run the tests and generate the coverage reportlint
: run the linterformat
: run the formatterprepare
: install the git hookscommit
: run the commitizen to help with the commit messages
📦
├─ .github
├─ .vscode
├─ .husky
│ ├─ commit-msg
│ └─ pre-commit
├─ public
│ ├─ assets
│ │ ├─ images
│ │ └─ svgs
├─ src
│ ├─ @types
│ ├─ assets
│ ├─ components
│ ├─ hooks
│ ├─ layout
│ ├─ main.tsx
│ ├─ pages
│ ├─ providers
│ ├─ queries
│ ├─ services
│ ├─ store
│ ├─ styles
│ ├─ tests
│ └─ utils
-
Clone the repository:
-
Install the dependencies:
npm install
-
Run the application in development mode:
npm run dev
- Make it responsive
- Develop unit, integration and e2e tests
- Add a favorite page to save the favorite Pokémon (local storage)