[{"data":1,"prerenderedAt":83},["ShallowReactive",2],{"project-\u002Fprojects\u002F2024\u002Fpokedex":3,"project-posts-\u002Fprojects\u002F2024\u002Fpokedex":82},{"id":4,"title":5,"agency":6,"body":7,"date":67,"description":68,"draft":69,"extension":70,"featured":69,"image":6,"links":6,"meta":71,"navigation":72,"path":73,"seo":74,"stem":75,"tags":76,"__hash__":81},"projects\u002Fprojects\u002F2024\u002Fpokedex\u002Findex.md","Pokedex",null,{"type":8,"value":9,"toc":62},"minimark",[10,14,19],[11,12,13],"p",{},"Interaktywna encyklopedia pokemonów obsługująca ponad 1000 stworzeń — napisana w czystym JavaScript (ES6+, wzorce OOP), bez frameworków, w oparciu o publiczne PokéAPI.",[15,16,18],"h2",{"id":17},"najważniejsze-cechy","Najważniejsze cechy",[20,21,22,39,56,59],"ul",{},[23,24,25,26,30,31,34,35,38],"li",{},"Redukcja zapytań HTTP o ~93% dzięki ",[27,28,29],"code",{},"Promise.all"," i warstwowemu cache (",[27,32,33],{},"LocalStorage"," + ",[27,36,37],{},"SessionStorage",")",[23,40,41,42,45,46,45,49,45,52,55],{},"Modułowa architektura klas (",[27,43,44],{},"DataManager",", ",[27,47,48],{},"DataBuilder",[27,50,51],{},"StorageManager",[27,53,54],{},"PokemonDialog",") przygotowana pod migrację do Vue 3",[23,57,58],{},"Responsywna, dwukierunkowo synchronizowana paginacja z odwzorowaniem stanu w URL",[23,60,61],{},"Obsługa motywu jasnego\u002Fciemnego bez efektu FOUC",{"title":63,"searchDepth":64,"depth":64,"links":65},"",2,[66],{"id":17,"depth":64,"text":18},"2024-01-28","Interaktywny Pokedex na ponad 1000 pokemonów w czystym JavaScript (OOP), oparty o PokéAPI — z warstwowym cache i redukcją zapytań HTTP o 93%.",false,"md",{},true,"\u002Fprojects\u002F2024\u002Fpokedex",{"title":5,"description":68},"projects\u002F2024\u002Fpokedex\u002Findex",[77,78,79,80],"javascript","vanilla-js","oop","pokeapi","mBRR2_w03w5tuJMZQax1eCK8S1dSvmZURMDvN5TGbfc",[],1791755198098]