Skip to main content

Welcome to Poke-Nex

A modern, blazing-fast Pokédex application that combines Next.js 16, TypeScript, and Clean Architecture to deliver an exceptional user experience. Built with performance and maintainability at its core, Poke-Nex pre-renders 1025+ Pokémon in under 12 seconds using Static Site Generation (SSG) and Incremental Static Regeneration (ISR).

What is Poke-Nex?

Poke-Nex is a production-ready Pokédex application that showcases best practices in modern web development. It implements a three-layer Clean Architecture (Fetchers, Adapters, and Services) combined with advanced state management using Zustand, providing instant page loads and a highly maintainable codebase.

Built with modern technologies

Key highlights

Lightning fast

Pre-renders 1030+ static pages in under 12 seconds using parallel build workers

SEO optimized

Server-side rendering with dynamic sitemap generation and JSON-LD structured data

Clean architecture

Three-layer separation: Fetchers → Adapters → Services for maintainable code

Smart persistence

Intelligent state management that preserves preferences while resetting volatile data

Performance metrics

  • Build Time: 1030+ pages in ~11.7 seconds
  • LCP: Instant Largest Contentful Paint with SSG
  • Hydration: Custom guard prevents UI flickering
  • Images: Optimized with Next.js Image component
Poke-Nex uses ISR with a weekly revalidation cycle to keep data fresh without sacrificing performance.

Explore the documentation

Quickstart

Get up and running with Poke-Nex in under 5 minutes

Features

Discover all 8 key features and implementation details

Architecture

Learn about the Clean Architecture implementation

Components

Explore the reusable component library

Quick example

Here’s how simple it is to fetch and display Pokémon data:
import { getPokemonListGQL } from '@/services/pokemon.service'
import { PokeGallery } from '@/components/pokemon'

export default async function Home() {
  const { data: pokemonList, error } = await getPokemonListGQL()
  if (error) throw new Error(JSON.stringify(error))

  return <PokeGallery content={pokemonList} />
}
The Clean Architecture pattern ensures your data flows through proper layers: API → Adapter → Service → Component.

Build docs developers (and LLMs) love