[{"data":1,"prerenderedAt":1145},{"experiences":2,"projects-all-en":79,"skills":930,"other-projects":1096},[3,24,46,63],{"id":4,"company":5,"current":6,"description":7,"extension":16,"meta":17,"order":18,"period":19,"position":20,"stem":22,"__hash__":23},"experiences\u002Fexperiences\u002Fcruxo.yml","CRUXO",true,{"cs":8,"en":12},[9,10,11],"Full-stack vývoj webových aplikací v TypeScriptu","Frontend v Reactu a knihovna komponent ve Storybooku","Backend v NestJS s GraphQL API a PostgreSQL, Docker",[13,14,15],"Full-stack development of web applications in TypeScript","React frontend and a component library in Storybook","NestJS backend with a GraphQL API and PostgreSQL, Docker","yml",{},1,"2026 – ",{"cs":21,"en":21},"Full-Stack Developer","experiences\u002Fcruxo","YU6QlbBuqmUl7jmDe9drPKBtmcyWjHvBKzGxbrVlmtA",{"id":25,"company":26,"current":27,"description":28,"extension":16,"meta":39,"order":40,"period":41,"position":42,"stem":44,"__hash__":45},"experiences\u002Fexperiences\u002Fcode8.yml","Code 8",false,{"cs":29,"en":34},[30,31,32,33],"E-shop Koh-I-Noor Deutschland v Next.js: přechod na App Router, E2E testy v Cypressu","Mobilní aplikace Zoeto pro Zoetis v React Native (Expo, Firebase, push notifikace)","E-commerce řešení Shop8 a interní systémy (React, Next.js, Angular, Nx monorepo)","WordPress a WooCommerce: vlastní pluginy a napojení externích systémů",[35,36,37,38],"Koh-I-Noor Deutschland e-shop in Next.js: migration to the App Router, E2E tests in Cypress","Zoeto mobile app for Zoetis in React Native (Expo, Firebase, push notifications)","Shop8 e-commerce platform and internal systems (React, Next.js, Angular, Nx monorepo)","WordPress and WooCommerce: custom plugins and integrations with external systems",{},2,"2020 – 2025",{"cs":43,"en":43},"Frontend Developer","experiences\u002Fcode8","cL9p8WYCfa3NjgIGruRveQBliFfL7o_I7kGzkpbziLQ",{"id":47,"company":48,"current":27,"description":49,"extension":16,"meta":56,"order":57,"period":58,"position":59,"stem":61,"__hash__":62},"experiences\u002Fexperiences\u002Fmcled.yml","McLED",{"cs":50,"en":53},[51,52],"Vývoj a správa firemního e-shopu (HTML, CSS, JavaScript)","Optimalizace rychlosti a napojení na CRM a logistické systémy",[54,55],"Development and maintenance of the company e-shop (HTML, CSS, JavaScript)","Performance optimisation and integration with CRM and logistics systems",{},3,"2018 – 2020",{"cs":60,"en":60},"Webmaster \u002F Frontend Developer","experiences\u002Fmcled","EwANx1MJros6QDO7AQ3riRkttQMiHumHCtGSUW3xNcc",{"id":64,"company":65,"current":27,"description":66,"extension":16,"meta":71,"order":72,"period":73,"position":74,"stem":77,"__hash__":78},"experiences\u002Fexperiences\u002Fkristian.yml","Kristian",{"cs":67,"en":69},[68],"Návrh a kódování webů a microsites, práce s October CMS",[70],"Design and coding of websites and microsites, working with October CMS",{},4,"2016 – 2018",{"cs":75,"en":76},"Webdesigner \u002F Frontend kodér","Web Designer \u002F Frontend Coder","experiences\u002Fkristian","gEaFx5dffvYtboZ6FF6SDoa90LRzL4uxO9nfaWfwsf8",[80,225,356,512,617,710,799,863],{"id":81,"title":82,"body":83,"description":210,"extension":211,"image":212,"link":213,"links":214,"meta":215,"navigation":6,"path":216,"position":18,"role":217,"seo":218,"stem":219,"tags":220,"type":223,"__hash__":224},"projectsEn\u002Fen\u002Fprojects\u002Fkoh-i-noor.md","Koh-I-Noor Deutschland",{"type":84,"value":85,"toc":201},"minimark",[86,103,113,123,152,162],[87,88,91,96,100],"div",{"className":89},[90],"row",[92,93,95],"h2",{"id":94},"context","Context",[97,98,99],"p",{},"KOH-I-NOOR Deutschland GmbH is the German subsidiary of the renowned Czech company KOH-I-NOOR Hardtmuth, specializing in high-quality writing and art supplies.",[97,101,102],{},"For the German market it needed a modern e-shop with a range of products for artists, students and offices, including promotional offers and new arrivals.",[87,104,106,110],{"className":105},[90],[92,107,109],{"id":108},"my-role","My role",[97,111,112],{},"I worked on the project as a frontend developer and also led the communication with the client and the marketing agency.",[87,114,116,120],{"className":115},[90],[92,117,119],{"id":118},"challenge","Challenge",[97,121,122],{},"The client uses their own system, which synchronizes data with WordPress. The website had to be optimized for performance, yet the application increasingly had to be rebuilt because of data changes needed for marketing.",[87,124,126,130],{"className":125},[90],[92,127,129],{"id":128},"solution","Solution",[131,132,133,137,140,143,146,149],"ul",{},[134,135,136],"li",{},"I built the website in Next.js. In a prebuild step I fetched data from the API, adapted it for the application and saved it into JSON files.",[134,138,139],{},"To synchronize data with WordPress we used a custom plugin that better matched the e-shop logic.",[134,141,142],{},"In WordPress I prepared several custom sections and pages using ACF (Advanced Custom Fields).",[134,144,145],{},"The website uses marketing tools to support sales and analytics: Facebook Conversion API, Google Tag Manager, Ecomail and AI-powered search.",[134,147,148],{},"Later I rewrote the project to the new Next.js App Router and moved a significant part of the logic from the frontend to the backend.",[134,150,151],{},"E2E tests in Cypress cover most of the website's pages and e-shop features.",[87,153,155,159],{"className":154},[90],[92,156,158],{"id":157},"result","Result",[97,160,161],{},"Marketing data changes no longer require a new build of the application. The website keeps evolving with new redesigns, library updates and refactoring of older code.",[87,163,165,169],{"className":164},[90],[92,166,168],{"id":167},"technologies","Technologies",[131,170,171,174,177,180,183,186,189,192,195,198],{},[134,172,173],{},"Next.js",[134,175,176],{},"WordPress, ACF",[134,178,179],{},"Sass",[134,181,182],{},"Redux",[134,184,185],{},"Google Maps React Markers + Supercluster",[134,187,188],{},"React Player, Swiper",[134,190,191],{},"REST API",[134,193,194],{},"gtag, Facebook Pixel, Ecomail",[134,196,197],{},"ESLint, Prettier",[134,199,200],{},"Cypress",{"title":202,"searchDepth":40,"depth":40,"links":203},"",[204,205,206,207,208,209],{"id":94,"depth":40,"text":95},{"id":108,"depth":40,"text":109},{"id":118,"depth":40,"text":119},{"id":128,"depth":40,"text":129},{"id":157,"depth":40,"text":158},{"id":167,"depth":40,"text":168},"An e-shop for the German market connected to WordPress and the client's own system. I migrated it to the Next.js App Router and moved the data logic to the backend, so marketing changes no longer need a rebuild. E2E tests in Cypress cover the main e-shop features.","md","\u002Fimages\u002Fkin-logo.svg","https:\u002F\u002Fwww.kohinoordeutschland.de",null,{},"\u002Fen\u002Fprojects\u002Fkoh-i-noor","Frontend developer, communication with the client and the marketing agency",{"title":82,"description":210},"en\u002Fprojects\u002Fkoh-i-noor",[173,221,182,222,200],"TypeScript","WordPress\u002FACF","E-shop · Next.js","Xr6oZB3NQC4TeTlYe9Ym8vEmwEmUbbPrxR0OSBXW1KM",{"id":226,"title":227,"body":228,"description":337,"extension":211,"image":338,"link":214,"links":339,"meta":346,"navigation":6,"path":347,"position":40,"role":348,"seo":349,"stem":350,"tags":351,"type":354,"__hash__":355},"projectsEn\u002Fen\u002Fprojects\u002Fzoeto.md","Zoeto",{"type":84,"value":229,"toc":329},[230,241,252,263,293,301],[87,231,233,235,238],{"className":232},[90],[92,234,95],{"id":94},[97,236,237],{},"Zoeto is a mobile app that gives veterinarians easy access to the Zoetis product catalogue. It includes detailed information about medicines, including composition, indications, packaging and prices.",[97,239,240],{},"We developed the app for an external company that hired us to build it.",[87,242,244,246,249],{"className":243},[90],[92,245,109],{"id":108},[97,247,248],{},"I coded the app according to the graphic design prepared in-house. I was in contact with the external company and usually led the meetings for our side, together with a colleague responsible for the backend.",[97,250,251],{},"After the launch I regularly updated the libraries and React Native itself, uploaded new releases for internal testing on Google Play and generated APK files so developers could test the app.",[87,253,255,257,260],{"className":254},[90],[92,256,119],{"id":118},[97,258,259],{},"This was my first experience with native apps and with React Native. To get started I took the course React Native – The Practical Guide by Maximilian Schwarzmüller on Udemy.",[97,261,262],{},"While building the screens I met many new things: Xcode, Android Studio, simulators and native code. To build the app and submit it to TestFlight I signed it with the certificates and provisioning profiles I received from the Zoetis developers.",[87,264,266,268],{"className":265},[90],[92,267,129],{"id":128},[131,269,270,273,276,279,282,290],{},[134,271,272],{},"The project started on Expo and over time we moved to plain React Native.",[134,274,275],{},"React Navigation serves as the router and checks whether the user is logged in, unlocking the main app content.",[134,277,278],{},"Axios handles API communication and Redux handles the core app logic.",[134,280,281],{},"I built the animations in React Native Reanimated. The main one is the expanding catalogue, where users open nested categories and see products by specification.",[134,283,284,285,289],{},"The client later chose Gigya (SAP Customer Data Cloud) for registration and login. I integrated the ",[286,287,288],"code",{},"@sap_oss\u002Fgigya-react-native-plugin-for-sap-customer-data-cloud"," plugin and refactored part of the logic on the frontend and on the API side.",[134,291,292],{},"We chose Firebase for push notifications. The feature kept growing: besides the notification list, detail and settings screens it had to work correctly on both platforms, which led me to changes in the .NET API.",[87,294,296,298],{"className":295},[90],[92,297,158],{"id":157},[97,299,300],{},"The app is released on iOS and Android and helps veterinarians find their way around medicines and buy them.",[87,302,304,306],{"className":303},[90],[92,305,168],{"id":167},[131,307,308,311,314,317,320,323,326],{},[134,309,310],{},"React Native",[134,312,313],{},"SAP Gigya plugin for processing user data",[134,315,316],{},"Firebase (Messaging, Notifee)",[134,318,319],{},"React Native Reanimated",[134,321,322],{},"React Navigation",[134,324,325],{},"Redux.js",[134,327,328],{},"Axios (for REST APIs)",{"title":202,"searchDepth":40,"depth":40,"links":330},[331,332,333,334,335,336],{"id":94,"depth":40,"text":95},{"id":108,"depth":40,"text":109},{"id":118,"depth":40,"text":119},{"id":128,"depth":40,"text":129},{"id":157,"depth":40,"text":158},{"id":167,"depth":40,"text":168},"A product catalogue of Zoetis medicines for veterinarians, released on iOS and Android. I built the whole app in React Native, including SAP Gigya sign-in and Firebase push notifications.","\u002Fimages\u002Flogo_zoetis.svg",[340,343],{"url":341,"text":342},"https:\u002F\u002Fapps.apple.com\u002Fcz\u002Fapp\u002Fzoeto\u002Fid6447378302","iOS App",{"url":344,"text":345},"https:\u002F\u002Fplay.google.com\u002Fstore\u002Fapps\u002Fdetails?id=com.zoeto&hl=cs&pli=1","Android App",{},"\u002Fen\u002Fprojects\u002Fzoeto","Mobile developer, the whole app and client communication",{"title":227,"description":337},"en\u002Fprojects\u002Fzoeto",[310,352,353,221],"Expo","Firebase","Mobile app · React Native","rk7SP3xYABw4m26h3Ha22EbnRPNlXTPXgS6X9vaAbKc",{"id":357,"title":358,"body":359,"description":499,"extension":211,"image":500,"link":501,"links":214,"meta":502,"navigation":6,"path":503,"position":57,"role":504,"seo":505,"stem":506,"tags":507,"type":510,"__hash__":511},"projectsEn\u002Fen\u002Fprojects\u002Fshop8-cms.md","Shop8 CMS",{"type":84,"value":360,"toc":491},[361,369,377,388,422,430],[87,362,364,366],{"className":363},[90],[92,365,95],{"id":94},[97,367,368],{},"Shop8 is a custom e-commerce solution for mid-sized e-shops. The goal was to build a complete administration in which clients control every part of their e-shop the way they need.",[87,370,372,374],{"className":371},[90],[92,373,109],{"id":108},[97,375,376],{},"I worked with colleagues who taught me a lot about the overall system architecture, and I was part of both the backend and the frontend team.",[87,378,380,382,385],{"className":379},[90],[92,381,119],{"id":118},[97,383,384],{},"The administration includes many modules for running an e-shop: user accounts, shipping, payments, branches, discount coupons and more. The content section manages categories and custom events, but above all products – with version history, variants and language versions.",[97,386,387],{},"The same modules also had to serve multiple clients, each with their own configuration.",[87,389,391,393],{"className":390},[90],[92,392,129],{"id":128},[131,394,395,398,401,404,407,410,413,416,419],{},[134,396,397],{},"We moved the project into an Nx monorepo so it scales better and finished modules can be reused for multiple clients.",[134,399,400],{},"React Router handles navigation; native fetch with GraphQL and React Query handles communication with the API.",[134,402,403],{},"Data lists in each module are Material Table tables that support searching, filtering and sorting and automatically save their last state.",[134,405,406],{},"Detail screens for creating and managing content are built on forms with React Hook Form and the TinyMCE editor.",[134,408,409],{},"Core components and the admin layout use Material UI and custom SCSS styles.",[134,411,412],{},"Each app has its own configuration for the client's internal needs and styling, for example an admin in the client's brand colours.",[134,414,415],{},"The dashboard uses Chart.js to show order charts and an overview of CMS records.",[134,417,418],{},"I first wrote automated E2E tests in Jest and later moved to Cypress, which worked better for me.",[134,420,421],{},"The code is written in TypeScript, with ESLint for code quality and Prettier for formatting.",[87,423,425,427],{"className":424},[90],[92,426,158],{"id":157},[97,428,429],{},"A fully functional administration with an API that adapts to the needs of each project. The admin keeps evolving: we add new features, and I regularly update libraries and refactor older code.",[87,431,433,435],{"className":432},[90],[92,434,168],{"id":167},[131,436,437,440,443,446,449,452,455,458,461,464,467,470,473,476,479,482,485,488],{},[134,438,439],{},"React (TypeScript)",[134,441,442],{},"Nx monorepo – for scalable, consistent code across apps",[134,444,445],{},"React Router",[134,447,448],{},"React Query",[134,450,451],{},"React Hook Form",[134,453,454],{},"i18n (i18next)",[134,456,457],{},"React Hot Toast",[134,459,460],{},"React Player",[134,462,463],{},"Cypress (E2E)",[134,465,466],{},"ESLint + Prettier",[134,468,469],{},"Material UI (MUI)",[134,471,472],{},"Ant Design (antd) – especially Tree",[134,474,475],{},"Chonky (data grid)",[134,477,478],{},"React DnD",[134,480,481],{},"Chart.js",[134,483,484],{},"dayjs",[134,486,487],{},"GraphQL",[134,489,490],{},"Webpack",{"title":202,"searchDepth":40,"depth":40,"links":492},[493,494,495,496,497,498],{"id":94,"depth":40,"text":95},{"id":108,"depth":40,"text":109},{"id":118,"depth":40,"text":119},{"id":128,"depth":40,"text":129},{"id":157,"depth":40,"text":158},{"id":167,"depth":40,"text":168},"A custom platform powering e-shops for multiple clients. I built admin modules in React with GraphQL, moved the project into an Nx monorepo and wrote E2E tests in Cypress.","\u002Fimages\u002Flogo-code8.svg","https:\u002F\u002Fwww.shop8.cz",{},"\u002Fen\u002Fprojects\u002Fshop8-cms","Frontend developer in a team, contributions to the backend",{"title":358,"description":499},"en\u002Fprojects\u002Fshop8-cms",[508,221,487,509,200],"React","Nx","E-commerce platform · React","jp00N3bLczHQ7r5EcyMvRDFoad0nzcGCaoc7l8hkcio",{"id":513,"title":514,"body":515,"description":604,"extension":211,"image":605,"link":606,"links":214,"meta":607,"navigation":6,"path":608,"position":72,"role":609,"seo":610,"stem":611,"tags":612,"type":615,"__hash__":616},"projectsEn\u002Fen\u002Fprojects\u002Ffurnatura.md","Furnatura",{"type":84,"value":516,"toc":597},[517,528,536,544,569],[87,518,520,522,525],{"className":519},[90],[92,521,95],{"id":94},[97,523,524],{},"Furnatura is a Czech brand of natural dog cosmetics, specializing in gentle care for your dog's coat and skin.",[97,526,527],{},"The goal of the project was a new website to replace the e-shop running on WooCommerce and WordPress.",[87,529,531,533],{"className":530},[90],[92,532,109],{"id":108},[97,534,535],{},"I took care of the administration in Shop8 CMS and of the frontend. I worked with the marketing agency on search engine optimization.",[87,537,539,541],{"className":538},[90],[92,540,119],{"id":118},[97,542,543],{},"I took over an unfinished Angular frontend. Once the new design arrived, the website had to be coded and the e-shop logic added. The e-shop is available in Czech and English and accepts both Czech crowns and euros.",[87,545,547,549],{"className":546},[90],[92,548,129],{"id":128},[131,550,551,554,557,560,563,566],{},[134,552,553],{},"I adapted Shop8 CMS to the needs of the project.",[134,555,556],{},"I coded the new website from the design and added the e-shop logic.",[134,558,559],{},"I upgraded Angular to version 20, which meant refactoring older parts of the website, adopting Signals and adapting it for Server Side Rendering.",[134,561,562],{},"I set up custom Facebook Conversion API events, gtag events and Ecomail.",[134,564,565],{},"The website uses SSR, JSON-LD Schema, Google Customer Reviews and the Zásilkovna and PPL widgets.",[134,567,568],{},"I added a short game that I had earlier built for Furnatura as a native game for a trade fair. I wrote it in Ionic for hybrid apps, and it shows users suitable products for their four-legged friend.",[87,570,572,574],{"className":571},[90],[92,573,168],{"id":167},[131,575,576,579,582,585,588,590,592,594],{},[134,577,578],{},"Angular 20 (with SSR and i18n)",[134,580,581],{},"Apollo Angular + GraphQL",[134,583,584],{},"RxJS",[134,586,587],{},"Sass + PostCSS + Autoprefixer",[134,589,466],{},[134,591,221],{},[134,593,463],{},[134,595,596],{},"GTM Custom Events + Facebook Pixel",{"title":202,"searchDepth":40,"depth":40,"links":598},[599,600,601,602,603],{"id":94,"depth":40,"text":95},{"id":108,"depth":40,"text":109},{"id":118,"depth":40,"text":119},{"id":128,"depth":40,"text":129},{"id":167,"depth":40,"text":168},"A Czech and English e-shop for natural dog cosmetics. I finished the Angular frontend, upgraded it to version 20 with SSR and connected the marketing tools.","\u002Fimages\u002Ffurnatura-prague.svg","https:\u002F\u002Ffurnatura.com\u002Fen-US\u002F",{},"\u002Fen\u002Fprojects\u002Ffurnatura","Full-stack developer, admin in Shop8 CMS and frontend",{"title":514,"description":604},"en\u002Fprojects\u002Ffurnatura",[613,221,487,614,200],"Angular","SSR","E-shop · Angular","5wyLTrdbaqdHySVLc17DUvflcrSv74Vc2SnMkgkROTU",{"id":618,"title":619,"body":620,"description":698,"extension":211,"image":699,"link":700,"links":214,"meta":701,"navigation":6,"path":702,"position":703,"role":704,"seo":705,"stem":706,"tags":707,"type":708,"__hash__":709},"projectsEn\u002Fen\u002Fprojects\u002Fmobile-phone-museum.md","Mobile Phone Museum",{"type":84,"value":621,"toc":691},[622,630,638,646,665],[87,623,625,627],{"className":624},[90],[92,626,95],{"id":94},[97,628,629],{},"The Mobile Phone Museum is an online nonprofit museum dedicated to the history of mobile phones. Its collection holds more than 2,800 devices from more than 200 manufacturers.",[87,631,633,635],{"className":632},[90],[92,634,109],{"id":108},[97,636,637],{},"I mainly built the website's frontend, but I also helped create and manage content in the CMS.",[87,639,641,643],{"className":640},[90],[92,642,119],{"id":118},[97,644,645],{},"The pages were built from a design by a graphic studio, and the client cared a lot about pixel-perfect styling and interesting animations. As the project and its data grew, generating static pages in Gatsby.js became very time-consuming.",[87,647,649,651],{"className":648},[90],[92,650,129],{"id":128},[131,652,653,656,659,662],{},[134,654,655],{},"I built the original website in React with the Gatsby.js framework.",[134,657,658],{},"On the homepage intro slide, the screen of a Nokia 3310 shows an animated count of the devices in the museum's collection in a digital font.",[134,660,661],{},"We later rewrote the website in Next.js to work with data more easily and optimize images.",[134,663,664],{},"The website offers search and filtering, phone collections and generated articles. The phone detail page shows PDF files, plays videos from platforms such as YouTube or Vimeo and lets users zoom into images.",[87,666,668,670],{"className":667},[90],[92,669,168],{"id":167},[131,671,672,674,676,679,682,685,688],{},[134,673,173],{},[134,675,487],{},[134,677,678],{},"React PDF",[134,680,681],{},"Sass (SCSS)",[134,683,684],{},"video.js",[134,686,687],{},"Swiper",[134,689,690],{},"React Image Magnify",{"title":202,"searchDepth":40,"depth":40,"links":692},[693,694,695,696,697],{"id":94,"depth":40,"text":95},{"id":108,"depth":40,"text":109},{"id":118,"depth":40,"text":119},{"id":128,"depth":40,"text":129},{"id":167,"depth":40,"text":168},"An online museum of more than 2,800 phones. I built the frontend from a pixel-perfect design and moved the site from Gatsby to Next.js for faster builds.","\u002Fimages\u002Flogo-mpm.svg","https:\u002F\u002Fwww.mobilephonemuseum.com",{},"\u002Fen\u002Fprojects\u002Fmobile-phone-museum",5,"Frontend developer",{"title":619,"description":698},"en\u002Fprojects\u002Fmobile-phone-museum",[173,508,487,179],"Website · Next.js","zmqhTDK2Klyli-svv6YbP2EP5qm6_wY806ax2eWp68Y",{"id":711,"title":712,"body":713,"description":787,"extension":211,"image":788,"link":789,"links":214,"meta":790,"navigation":6,"path":791,"position":792,"role":793,"seo":794,"stem":795,"tags":796,"type":797,"__hash__":798},"projectsEn\u002Fen\u002Fprojects\u002Fnograys.md","NoGrays",{"type":84,"value":714,"toc":780},[715,723,731,739,758],[87,716,718,720],{"className":717},[90],[92,719,95],{"id":94},[97,721,722],{},"NoGrays is a WordPress and WooCommerce e-shop promoting a hair-care product.",[87,724,726,728],{"className":725},[90],[92,727,109],{"id":108},[97,729,730],{},"As a WordPress developer I built the whole NoGrays e-shop on WooCommerce.",[87,732,734,736],{"className":733},[90],[92,735,119],{"id":118},[97,737,738],{},"The biggest challenge for me was working with the WooCommerce API, customizing the cart template and debugging on the server side while preparing server-side events for the Facebook Conversion API.",[87,740,742,744],{"className":741},[90],[92,743,129],{"id":128},[131,745,746,749,752,755],{},[134,747,748],{},"The website is coded from a Figma design as a classic WordPress theme, with content management for pages, the blog, menus and separate sections that I prepared as PHP functions.",[134,750,751],{},"WooCommerce is connected to the WooPayments gateway, which supports card payments as well as Google Pay and Apple Pay.",[134,753,754],{},"I built a custom contact form for product returns that reuses the look of the WooCommerce email templates.",[134,756,757],{},"Customers can register and manage their orders and addresses in their account.",[87,759,761,763],{"className":760},[90],[92,762,168],{"id":167},[131,764,765,768,771,774,777],{},[134,766,767],{},"WordPress",[134,769,770],{},"WooCommerce",[134,772,773],{},"WooPayments",[134,775,776],{},"PHP",[134,778,779],{},"gtag, Facebook Pixel (FB CAPI)",{"title":202,"searchDepth":40,"depth":40,"links":781},[782,783,784,785,786],{"id":94,"depth":40,"text":95},{"id":108,"depth":40,"text":109},{"id":118,"depth":40,"text":119},{"id":128,"depth":40,"text":129},{"id":167,"depth":40,"text":168},"NoGrays is a WordPress and WooCommerce e-shop promoting a hair-care product. I built the theme from Figma designs, payments via WooPayments and server-side events for the Facebook Conversion API.","\u002Fimages\u002FWordpress-Logo.svg","https:\u002F\u002Fnograys.cz\u002F",{},"\u002Fen\u002Fprojects\u002Fnograys",6,"WordPress developer, the whole e-shop",{"title":712,"description":787},"en\u002Fprojects\u002Fnograys",[767,770,776,773],"E-shop · WooCommerce","fBIOmw3ZjwFhC4IskJpO0l2x_UxW0VHifE2eqUf3ow0",{"id":800,"title":48,"body":801,"description":852,"extension":211,"image":853,"link":854,"links":214,"meta":855,"navigation":6,"path":856,"position":857,"role":60,"seo":858,"stem":859,"tags":860,"type":861,"__hash__":862},"projectsEn\u002Fen\u002Fprojects\u002Fmcled.md",{"type":84,"value":802,"toc":847},[803,811,828],[87,804,806,808],{"className":805},[90],[92,807,95],{"id":94},[97,809,810],{},"McLED s.r.o. presents its own brand of professional LED lighting.",[87,812,814,816,819,822,825],{"className":813},[90],[92,815,109],{"id":108},[97,817,818],{},"As the webmaster I managed the company website and e-shop and helped customers as technical support.",[97,820,821],{},"I worked closely with the graphic department, which prepared graphic assets and product photos for catalogues and the web, and I partly contributed to them.",[97,823,824],{},"The website was managed by an external agency, with whom I regularly prepared new features and changes to key parts of the e-shop.",[97,826,827],{},"To rank better in search engines, the company started working with a marketing agency. With them I adjusted the website to follow SEO best practices and to generate XML feeds that share structured data automatically with other systems, such as Heureka.",[87,829,831,833],{"className":830},[90],[92,832,168],{"id":167},[131,834,835,838,841,844],{},[134,836,837],{},"HTML",[134,839,840],{},"CSS",[134,842,843],{},"JavaScript",[134,845,846],{},"Photoshop",{"title":202,"searchDepth":40,"depth":40,"links":848},[849,850,851],{"id":94,"depth":40,"text":95},{"id":108,"depth":40,"text":109},{"id":167,"depth":40,"text":168},"The company McLED s.r.o. represents its own brand of professional LED lighting.","\u002Fimages\u002Fmcled-logo.svg","https:\u002F\u002Fwww.mcled.cz\u002F",{},"\u002Fen\u002Fprojects\u002Fmcled",7,{"title":48,"description":852},"en\u002Fprojects\u002Fmcled",[837,840,843],"Company e-shop","rf2V9wuBriwzZ7gaaVYN2YMqW1wmtqAMID8gjCCKufo",{"id":864,"title":65,"body":865,"description":874,"extension":211,"image":919,"link":920,"links":214,"meta":921,"navigation":6,"path":922,"position":923,"role":76,"seo":924,"stem":925,"tags":926,"type":928,"__hash__":929},"projectsEn\u002Fen\u002Fprojects\u002Fkristian.md",{"type":84,"value":866,"toc":914},[867,875,895],[87,868,870,872],{"className":869},[90],[92,871,95],{"id":94},[97,873,874],{},"Kristian is an advertising agency offering a full service in media and creativity: strategic media planning and creative concepts (ideamaking), digital marketing, websites, PPC, social media, and event and conference production. It also works in graphic design, DTP, video, photography and audio.",[87,876,878,880,883,886,889,892],{"className":877},[90],[92,879,109],{"id":108},[97,881,882],{},"Kristian was my first job in the field: a coder with an overlap into web graphics.",[97,884,885],{},"In the digital department I prepared web graphics, such as banners, product photo masking and photo and image edits for websites. As the projects grew, I learned the basics of HTML and CSS and used Bootstrap to adjust templates and build new websites from the graphic department's designs.",[97,887,888],{},"The field caught my interest so much that, while working there, I started studying Web Development at the IT STEP Computer Academy to improve my qualifications. There I learned everything from the basics up to JavaScript, PHP and MySQL.",[97,890,891],{},"Later we started building and managing websites in October CMS, an open-source content management system built on Laravel. My favourite part was moving pages into it with the Twig templating language and setting them up so users could easily edit the content themselves.",[97,893,894],{},"It was a valuable experience with great colleagues who taught me a lot, and I still like to stop by for a coffee.",[87,896,898,900],{"className":897},[90],[92,899,168],{"id":167},[131,901,902,905,908,911],{},[134,903,904],{},"HTML, CSS, JavaScript, jQuery",[134,906,907],{},"October CMS (Laravel)",[134,909,910],{},"Adobe: Photoshop, Illustrator, InDesign",[134,912,913],{},"Google Web Designer",{"title":202,"searchDepth":40,"depth":40,"links":915},[916,917,918],{"id":94,"depth":40,"text":95},{"id":108,"depth":40,"text":109},{"id":167,"depth":40,"text":168},"\u002Fimages\u002Flogo-kristian.svg","https:\u002F\u002Fkristian.cz\u002F",{},"\u002Fen\u002Fprojects\u002Fkristian",8,{"title":65,"description":874},"en\u002Fprojects\u002Fkristian",[837,840,843,927],"October CMS","Websites and microsites · October CMS","TtOqZv3g5fn9Cf0ihE4gTVvx7lZUflwwZh88AMBxwBU",{"id":931,"extension":16,"groups":932,"meta":1093,"stem":1094,"__hash__":1095},"skills\u002Fskills.yml",[933,963,983,1018,1039,1056,1073],{"title":934,"items":936},{"cs":935,"en":935},"Frontend",[937,939,941,943,946,948,950,952,955,958,960],{"name":221,"icon":938},"typescript",{"name":508,"icon":940},"react",{"name":173,"icon":942},"nextdotjs",{"name":944,"icon":945},"Vue","vuedotjs",{"name":613,"icon":947},"angular",{"name":182,"icon":949},"redux",{"name":448,"icon":951},"reactquery",{"name":953,"icon":954},"Apollo Client","apollographql",{"name":956,"icon":957},"Storybook","storybook",{"name":179,"icon":959},"sass",{"name":961,"icon":962},"Material UI","mui",{"title":964,"items":967},{"cs":965,"en":966},"Mobil","Mobile",[968,969,971,973,978],{"name":310,"icon":940},{"name":352,"icon":970},"expo",{"name":353,"icon":972},"firebase",{"name":974,"icon":977},{"cs":975,"en":976},"Push notifikace","Push notifications","bell",{"name":979,"icon":982},{"cs":980,"en":981},"App Store a Google Play","App Store & Google Play","rocket",{"title":984,"items":986},{"cs":985,"en":985},"Backend",[987,990,993,995,997,1000,1003,1008,1011,1013],{"name":988,"icon":989},"Node.js","nodedotjs",{"name":991,"icon":992},"NestJS","nestjs",{"name":487,"icon":994},"graphql",{"name":191,"icon":996},"braces",{"name":998,"icon":999},"PostgreSQL","postgresql",{"name":1001,"icon":1002},"TypeORM","typeorm",{"name":1004,"icon":1007},{"cs":1005,"en":1006},"Autentizace","Authentication","shield-check",{"name":1009,"icon":1010},"Docker","docker",{"name":776,"icon":1012},"php",{"name":1014,"icon":1017},{"cs":1015,"en":1016},"Integrace","Integrations","arrow-left-right",{"title":1019,"items":1022},{"cs":1020,"en":1021},"Testy a nástroje","Testing & tools",[1023,1025,1028,1031,1034,1037],{"name":200,"icon":1024},"cypress",{"name":1026,"icon":1027},"Jest","jest",{"name":1029,"icon":1030},"Playwright","playwright",{"name":1032,"icon":1033},"Git","git",{"name":1035,"icon":1036},"CI\u002FCD","githubactions",{"name":509,"icon":1038},"nx",{"title":1040,"items":1043},{"cs":1041,"en":1042},"AI nástroje","AI tools",[1044,1047,1050,1053],{"name":1045,"icon":1046},"Claude","claude",{"name":1048,"icon":1049},"Codex","codex",{"name":1051,"icon":1052},"Cursor","cursor",{"name":1054,"icon":1055},"Grok","grok",{"title":1057,"items":1060},{"cs":1058,"en":1059},"Web a e-commerce","Web & e-commerce",[1061,1063,1068,1070],{"name":767,"icon":1062},"wordpress",{"name":1064,"icon":1067},{"cs":1065,"en":1066},"Pluginy","Plugins","plug",{"name":770,"icon":1069},"woocommerce",{"name":1071,"icon":1072},"Twig","code-xml",{"title":1074,"items":1076},{"cs":1075,"en":1075},"Design",[1077,1080,1083,1088],{"name":1078,"icon":1079},"Figma","figma",{"name":1081,"icon":1082},"UI design","layout-template",{"name":1084,"icon":1087},{"cs":1085,"en":1086},"Responzivní design","Responsive design","monitor-smartphone",{"name":1089,"icon":1092},{"cs":1090,"en":1091},"Spolupráce s designéry","Working with designers","pen-tool",{},"skills","cvty2uDtxi2vilv8mkxjlLLO76ArYAK8QBrC-eCCmMA",[1097,1105,1113,1121,1129,1137],{"id":1098,"extension":16,"logo":1099,"meta":1100,"name":1101,"order":18,"stem":1102,"url":1103,"__hash__":1104},"otherProjects\u002Fother-projects\u002Fbiocultus.yml","\u002Fimages\u002Fbiocultus-logo.svg",{},"Biocultus","other-projects\u002Fbiocultus","https:\u002F\u002Fwww.biocultus.com\u002Fcs","CMh-OPhFkWNNXuBbwaKvxDinvG3hgMi-VfwryZ4vUbM",{"id":1106,"extension":16,"logo":1107,"meta":1108,"name":1109,"order":40,"stem":1110,"url":1111,"__hash__":1112},"otherProjects\u002Fother-projects\u002Felements-lomnica.yml","\u002Fimages\u002Flogo-elements.svg",{},"Elements Lomnica","other-projects\u002Felements-lomnica","https:\u002F\u002Fwww.elementslomnica.sk\u002Fen","kevol9xzOJkQQ4hFdm6vlDM9BjnLxVnSVyy4xQpDw70",{"id":1114,"extension":16,"logo":1115,"meta":1116,"name":1117,"order":57,"stem":1118,"url":1119,"__hash__":1120},"otherProjects\u002Fother-projects\u002Fjoalis.yml","\u002Fimages\u002Flogo-joalis.png",{},"Joalis","other-projects\u002Fjoalis","https:\u002F\u002Fwww.joalis.cz","bnn5bTEHLf0kLcr8ctH3IIjSuas8hFQyl7LYcmK--Sk",{"id":1122,"extension":16,"logo":1123,"meta":1124,"name":1125,"order":72,"stem":1126,"url":1127,"__hash__":1128},"otherProjects\u002Fother-projects\u002Fmagnus-art.yml","\u002Fimages\u002FMA_logo.svg",{},"Magnus Art","other-projects\u002Fmagnus-art","https:\u002F\u002Fmagnusart.cz","o3Y06tYcN0dDT4Tsfv-5nmxSeTZ_0yhl1y6QBI8uLOY",{"id":1130,"extension":16,"logo":1131,"meta":1132,"name":1133,"order":703,"stem":1134,"url":1135,"__hash__":1136},"otherProjects\u002Fother-projects\u002Fmoonwood.yml","\u002Fimages\u002Flogo-moonwood.svg",{},"Moonwood","other-projects\u002Fmoonwood","https:\u002F\u002Fmoonwood.com","9bCO7vLI5n9R1J5vj8O49JmsuYd71q30UfHgsMsKDSk",{"id":1138,"extension":16,"logo":1139,"meta":1140,"name":1141,"order":792,"stem":1142,"url":1143,"__hash__":1144},"otherProjects\u002Fother-projects\u002Fyogarden.yml","\u002Fimages\u002Flogo-yogarden.svg",{},"Yogarden","other-projects\u002Fyogarden","https:\u002F\u002Fwww.yogarden.cz\u002Fcz","1Rj1mhckYau0OrvXDQId3BxdriXkjRLB_16FDcI3UpY",1792435547093]