Mikudex
It started with a dumb conversation.
Me and a friend were talking about Pokémon over chat, as adults do, and we slowly came to the realization that we could not remember most of them. That felt serious. We tried going in order, like the actual Pokédex, but we gave up around the first ten. After that we just started typing out whatever names came to mind. Charizard. Gengar. Mewtwo. The classics. Beyond that, it got fuzzy fast.
At some point we accepted defeat, and I closed the chat thinking there had to be a way to fix this. Or at least a fun excuse to build something.
So I made a Pokédex.

I already knew there were hundreds of Pokédex sites on the internet. That was not the point. I wanted to build one for myself, as a challenge, to try out some new stuff. I found out about PokeAPI, which was a lifesaver. It gave me everything I needed - names, stats, sprites, descriptions, the works.
The basic Pokédex came together pretty quickly. But once it was working, I looked at it and felt nothing.
It was just another Pokédex. Clean. Functional. Completely soulless.
Whenever I build something, I like to add a personal touch to it. Because at this point in time, every website looks the same. Same layouts. Same color palettes. Same components copy-pasted from the same libraries. It’s boring. I want my stuff to feel different. Quirky. A little raw. Like something a real person made, not a template.
So I started thinking about how to make this one mine.
Here is the part that I find a little embarrassing to admit, but it is what it is.
I am a fan of Hatsune Miku.
Yes. A grown adult. I know.
But the moment I accepted that, the direction became obvious. Why not Mikufy it?
So I started adding Miku elements here and there. The first thing I added was Miku’s Musical Insights - a small section inside each Pokémon’s detail modal where Miku herself pops up and gives her commentary. It checks which stat is the highest for that Pokémon and returns a fitting musical-themed quote for it. High speed? She talks about tempo. High attack? Power chords. It is silly and I love it.

But that felt like enough.
And then I thought, no. Let’s full send it.
So I added an easter egg.
If you type “miku”, “hatsune”, or “39” into the search bar, something happens. An intro video plays - like a proper entrance into the Miku-verse. Once it ends, the entire theme of the site transforms. The Pokédex red switches to Miku’s signature teal. The Poké Ball icon in the header is replaced by a Miku image. On desktop, the cursor changes into a leek. And hovering over any Pokémon card now floats little musical notes off of it.

The whole thing is a state toggle. Typing the right keywords triggers the video, the video ending triggers the flash and the theme switch, and everything downstream reads from that one isMikuMode boolean. The leek cursor is pure CSS with a custom .cur file. The floating notes are absolutely-positioned elements with a short animation that spawns on hover.
It is absolutely unhinged and I have no regrets.
On the more technical side, the app is built with Next.js and Material UI. Data fetching is handled using TanStack Query, which made infinite scroll and caching straightforward. The Pokémon grid loads 24 at a time and fetches the next batch as you scroll down. Search works by fetching all Pokémon names upfront and filtering client-side, which keeps it snappy.
Each card fetches its own data independently, which means they load progressively rather than waiting for the whole page. Clicking a card opens a detail modal with stats, description, height, weight, abilities, and of course, Miku’s insight.
Dark mode is supported and persists across sessions. The theme tokens were set up so switching between Pokémon mode and Miku mode is just a color swap at the top level, without touching individual components.
I did not need to build this. There are better Pokédexes out there with more features, better performance, and more complete data.
But none of them turn into a Hatsune Miku fan site if you know the right words to type.
And honestly? That is enough for me.
Sometimes a project does not need to solve a big problem. Sometimes you just want to make something that makes you smile when you open it. This one does that.
Ty for reading