{"id":21906186,"url":"https://github.com/jkellerman/pokedex","last_synced_at":"2025-10-30T08:17:51.585Z","repository":{"id":230972816,"uuid":"780613856","full_name":"jkellerman/pokedex","owner":"jkellerman","description":"Nextjs 14 original 151 pokèmon","archived":false,"fork":false,"pushed_at":"2024-06-18T21:38:40.000Z","size":244,"stargazers_count":4,"open_issues_count":0,"forks_count":1,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-03-29T03:01:48.594Z","etag":null,"topics":["jest","nextjs","nextjs14","pokeapi","pokemon","radix-ui","react","react-testing-library","server-components","tailwindcss","tanstack-query","typescript","vercel"],"latest_commit_sha":null,"homepage":"https://pokedex-jkellerman.vercel.app","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/jkellerman.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-04-01T20:48:07.000Z","updated_at":"2024-09-26T16:21:40.000Z","dependencies_parsed_at":null,"dependency_job_id":"dd137602-a986-48f2-be43-4180f8e29623","html_url":"https://github.com/jkellerman/pokedex","commit_stats":null,"previous_names":["jkellerman/pokedex"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jkellerman%2Fpokedex","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jkellerman%2Fpokedex/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jkellerman%2Fpokedex/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jkellerman%2Fpokedex/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/jkellerman","download_url":"https://codeload.github.com/jkellerman/pokedex/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":249173061,"owners_count":21224481,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["jest","nextjs","nextjs14","pokeapi","pokemon","radix-ui","react","react-testing-library","server-components","tailwindcss","tanstack-query","typescript","vercel"],"created_at":"2024-11-28T16:42:19.354Z","updated_at":"2025-10-30T08:17:51.519Z","avatar_url":"https://github.com/jkellerman.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# PokeApi App\n\nTechnical assignment using the PokéApi \u0026 YodaAPI.\n\n## Table of contents\n\n- [How to run the app](#how-to-run-the-app)\n  - [Development](#development)\n  - [Testing](#testing)\n- [Overview](#overview)\n  - [Links](#links)\n  - [Built with](#built-with)\n  - [Process](#process)\n\n## 💭\u0026nbsp;How to run the app\n\nThis is a [Next.js](https://nextjs.org/) project bootstrapped with [create-next-app](https://github.com/vercel/next.js/tree/canary/packages/create-next-app).\n\n### Development\n\nTo run this project on your local machine, follow these steps:\n\n1. Clone this repository.\n2. Open your terminal and navigate to the project directory.\n3. Run the following commands:\n\n```sh\nnpm install\nnpm run dev\n```\n\nThis will start the application in development mode.\n\n### Testing\n\nTo run the tests:\n\n```sh\nnpm test\n```\n\n## Overview\n\nUsers should be able to:\n\n- View all 151 original Pokémon in searchable list\n- Paginate through list with load more button\n- Click on any Pokémon and view their stats \u0026 abilities\n- Navigate to previous and next Pokémon\n- Translate the ability effects into yoda language and receive an error message when hitting the rate limit.\n\n### 🔗\u0026nbsp;Links\n\n- Live Site: [Live](https://pokedex-jkellerman.vercel.app)\n\n### 🧰\u0026nbsp;Built with\n\n- TypeScript\n- Next.js 14\n- TailwindCSS\n- Radix UI\n- TanStack Query\n- Jest, React Testing Library\n- Vercel\n- [PokéAPI](https://pokeapi.co/docs/v2)\n- [YodaAPI](https://funtranslations.com/api/yoda)\n\n### Process\n\n#### Tanstack Query/React Query\n\n- Translating the effect from English to Yoda required fetching data on the client side. Despite the ability to use server actions in client components, I chose to use TanStack Query because it offers an excellent experience for data fetching and caching. Additionally, caching was crucial due to the rate limit of the Yoda API, which helps prevent unnecessary data requests.\n\n#### Improvements\n\n- One area I would like to explore is utilising TanStack Query for pagination with server components, as the initial Pokémon list data is rendered on the server. Currently, when users load more Pokémon, the data is not cached, meaning they would have to fetch those Pokémon again if they navigate away from the page and return.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjkellerman%2Fpokedex","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjkellerman%2Fpokedex","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjkellerman%2Fpokedex/lists"}