[{"data":1,"prerenderedAt":88},["ShallowReactive",2],{"post-en-US-todevelop-pl":3,"adjacent-posts-en-US-todevelop-pl":24,"related-posts-en-US-todevelop-pl":52},{"id":4,"slug":4,"publishDate":5,"updateDate":-1,"title":6,"excerpt":7,"image":8,"category":9,"tags":10,"author":-1,"draft":14,"metadata":15,"content":16,"featured":14,"lang":17,"renderedContent":18,"tocItems":19},"todevelop-pl",["Date","2024-06-01T00:00:00.000Z"],"From WordPress to Qwik","I rewrote my site from WordPress to Qwik – faster load, Lighthouse 100%.","\u002Fimages\u002Fblog\u002Ftodevelop-desktop.webp","projekty",[11,12,13],"qwik","wordpress","refaktoryzacja",false,{},"I rewrote my site from WordPress to Qwik. I wanted better performance and a modern stack.\n\n\u003Cimg src=\"\u002Fimages\u002Fblog\u002Fqwik.webp\" width=\"100%\" height=\"100%\" alt=\"Qwik logo\"\u002F>\n\nQwik is built around performance and a small payload. The main idea: the \"resumable\" mechanism. The page loads fast because you don’t hydrate the whole JS – only what’s needed for a given interaction loads. The rest of the code \"sleeps\" until the user triggers it. In frameworks like React\u002FVue you usually get HTML from the server first, then the client loads the full JavaScript to make the page interactive. That’s costly. Qwik loads only the fragments needed \"here and now\".\n\n\u003Cimg src=\"https:\u002F\u002Fcdn.builder.io\u002Fapi\u002Fv1\u002Fimage\u002Fassets%2FYJIGb4i01jvw0SRdL5Bt%2F04681212764f4025b2b5f5c6a258ad6e?format=webp&width=945\" alt=\"Qwik architecture diagram\" \u002F>\n\nOn the optimization side I did: lazy loading (what’s in the viewport), pre-fetching, code splitting, minification and compression. In Lighthouse the site scores 100%.\n\n\u003Cimg src=\"\u002Fimages\u002Fblog\u002Flighthouse.webp\" width=\"100%\" height=\"100%\" alt=\"Lighthouse score\"\u002F>\n\nMoving to Qwik gave me a faster site and better tooling results. If you’re building or rebuilding a project and care about performance, Qwik is worth a look.\n\n\u003Cimg src=\"\u002Fimages\u002Fblog\u002Fpreview.webp\" width=\"400\" height=\"300\" alt=\"Todevelop mobile\"\u002F>\n\n## Links\n\n- [Qwik.dev](https:\u002F\u002Fqwik.dev\u002F)\n- [Resumable mechanism](https:\u002F\u002Fqwik.dev\u002Fdocs\u002Fconcepts\u002Fresumable\u002F)\n- [Lighthouse](https:\u002F\u002Fdeveloper.chrome.com\u002Fdocs\u002Flighthouse\u002Foverview?hl=pl)","en-US","\u003Cp class=\"text-body-1 mb-6\">I rewrote my site from WordPress to Qwik. I wanted better performance and a modern stack.\u003C\u002Fp>\n\u003Cimg src=\"\u002Fimages\u002Fblog\u002Fqwik.webp\" width=\"100%\" height=\"100%\" alt=\"Qwik logo\"\u002F>\n\u003Cp class=\"text-body-1 mb-6\">Qwik is built around performance and a small payload. The main idea: the “resumable” mechanism. The page loads fast because you don’t hydrate the whole JS – only what’s needed for a given interaction loads. The rest of the code “sleeps” until the user triggers it. In frameworks like React\u002FVue you usually get HTML from the server first, then the client loads the full JavaScript to make the page interactive. That’s costly. Qwik loads only the fragments needed “here and now”.\u003C\u002Fp>\n\u003Cimg src=\"https:\u002F\u002Fcdn.builder.io\u002Fapi\u002Fv1\u002Fimage\u002Fassets%2FYJIGb4i01jvw0SRdL5Bt%2F04681212764f4025b2b5f5c6a258ad6e?format=webp&width=945\" alt=\"Qwik architecture diagram\" \u002F>\n\u003Cp class=\"text-body-1 mb-6\">On the optimization side I did: lazy loading (what’s in the viewport), pre-fetching, code splitting, minification and compression. In Lighthouse the site scores 100%.\u003C\u002Fp>\n\u003Cimg src=\"\u002Fimages\u002Fblog\u002Flighthouse.webp\" width=\"100%\" height=\"100%\" alt=\"Lighthouse score\"\u002F>\n\u003Cp class=\"text-body-1 mb-6\">Moving to Qwik gave me a faster site and better tooling results. If you’re building or rebuilding a project and care about performance, Qwik is worth a look.\u003C\u002Fp>\n\u003Cimg src=\"\u002Fimages\u002Fblog\u002Fpreview.webp\" width=\"400\" height=\"300\" alt=\"Todevelop mobile\"\u002F>\n\u003Ch2 class=\"text-h4 font-weight-black  text-primary mt-16 mb-6 border-s-lg border-primary ps-4\">Links\u003C\u002Fh2>\n\u003Cul class=\"pa-0 mb-6\">\n\u003Cli class=\"d-flex align-start mb-2\">\u003Cspan class=\"text-primary font-weight-bold me-2\">▹\u003C\u002Fspan>\u003Ca href=\"https:\u002F\u002Fqwik.dev\u002F\" class=\"text-primary font-weight-bold text-decoration-none\">Qwik.dev\u003C\u002Fa>\u003C\u002Fli>\n\u003Cli class=\"d-flex align-start mb-2\">\u003Cspan class=\"text-primary font-weight-bold me-2\">▹\u003C\u002Fspan>\u003Ca href=\"https:\u002F\u002Fqwik.dev\u002Fdocs\u002Fconcepts\u002Fresumable\u002F\" class=\"text-primary font-weight-bold text-decoration-none\">Resumable mechanism\u003C\u002Fa>\u003C\u002Fli>\n\u003Cli class=\"d-flex align-start mb-2\">\u003Cspan class=\"text-primary font-weight-bold me-2\">▹\u003C\u002Fspan>\u003Ca href=\"https:\u002F\u002Fdeveloper.chrome.com\u002Fdocs\u002Flighthouse\u002Foverview?hl=pl\" class=\"text-primary font-weight-bold text-decoration-none\">Lighthouse\u003C\u002Fa>\u003C\u002Fli>\n\u003C\u002Ful>\n",[20],{"id":21,"text":22,"level":23},"links","Links",2,{"prev":25,"next":37},{"id":26,"slug":26,"publishDate":27,"updateDate":-1,"title":28,"excerpt":29,"image":30,"category":9,"tags":31,"author":-1,"draft":14,"metadata":35,"content":36,"featured":14,"lang":17},"gramy-w-miescie",["Date","2024-09-15T00:00:00.000Z"],"Play in the City – urban and online game platform","Platform for games on the ground and online: puzzles, history and culture of the city. Two modes – ready-made routes or your own adventures.","\u002Fimages\u002Fprojects\u002Fgramywmiescie.webp",[32,33,34],"gry-miejskie","aplikacja-webowa","escape-room",{},"Play in the City (Gramy w Mieście) came from the fact that we often pass interesting places without knowing their history. I wanted to combine walking with puzzles and information – not just move through the city but discover it.\n\nThe idea: you choose an urban or online game, get the puzzle location, find the place, solve the task. After a correct answer the system shows facts and history. Each game is also a lesson about the place.\n\nThere are two modes. Urban games – you walk the city and solve puzzles on the spot. You can join ready-made routes (mine and partners’) or create your own adventure with puzzles in the area. Online games – puzzles you can solve from anywhere, e.g. with Google Street View and Wikipedia. For those who can’t be in the city in person.\n\nWatching users discover places they’d never heard of is satisfying. Locals discover corners of their neighbourhoods, tourists get local stories, teachers use the platform on school trips.\n\nWorking on the project confirmed that good projects come from passion and wanting to share it. I plan to develop it further: user-created puzzles, possible AR elements, a community around discovering cities. Try it – [Play in the City](https:\u002F\u002Fgramywmiescie.pl\u002F).\n\n## Links\n\n- [Play in the City – project site](https:\u002F\u002Fgramywmiescie.pl\u002F)",{"id":38,"slug":38,"publishDate":39,"updateDate":-1,"title":40,"excerpt":41,"image":42,"category":43,"tags":44,"author":-1,"draft":14,"metadata":50,"content":51,"featured":14,"lang":17},"projekt-innowacje-2023-zimowy",["Date","2024-02-10T00:00:00.000Z"],"Innovations Project 2023\u002F2024 – Winter edition with Nuxt and Firebase","Winter 2023\u002F2024 – Innovations Project at Lodz University of Technology. Nuxt 3, Firebase, Git Flow. Students from Vue basics to a full meta-framework.","\u002Fimages\u002Fblog\u002Fpl-innowacje4.webp","edukacja",[45,46,47,48,49],"nuxt","firebase","vue","mentoring","blog",{},"In winter semester 2023\u002F2024 I ran another edition of the Innovations Project at Lodz University of Technology. This time the stack was Nuxt 3 (Vue meta-framework), Firebase, Pinia, Vuetify, i18n and Git Flow. Watching students move from Vue basics to Nuxt with file-based routing and auto-imports was valuable for me.\n\nTech: Nuxt 3 (SPA, file-based routing, auto-imports), Firebase (Auth, Firestore, Storage, hosting), Pinia, Vuetify, i18n, Git Flow.\n\nWe started with the difference between SSR and CSR. In this project Nuxt in SPA mode – no render server, focus on the interface. Students had to get to grips with Nuxt structure: `\u002Fpages`, `\u002Fcomposables`, `\u002Fserver`. Git Flow: feature branches, release branches, hotfix branches, code review, conflicts. Working through the repo is basic in IT; watching students resolve conflicts and communicate showed me the value of sharing experience.\n\nFirebase was many people’s first \"backend as a service\". We worked on Auth (email\u002Fpassword, Google, password reset, roles), Firestore (collections, documents, real-time, Security Rules). Security Rules turned out to be one of the harder parts – thinking about security in a declarative way. Moving from \"my own server\" to cloud-first was an important shift for them.\n\nPinia for global state – when state is global, when local. i18n: lazy-loaded translations, locale routing, language switcher.\n\nFinal project: registration, login (email + Google), password reset, roles, full CRUD for two entity types (pagination, search, real-time), admin panel, at least two languages, responsiveness with Vuetify.\n\nChallenges: architectural complexity (moving from simple Vue to Nuxt), async and state sync, Firebase Security Rules, Git Flow in practice (conflicts = communication and compromise).\n\nThanks to the students for their commitment and to the university for the chance to share knowledge. Nuxt and Firebase are good tools for learning more advanced web apps.\n\n## Links\n\n- [Innovations Project – Lodz University of Technology](https:\u002F\u002Fwww.p.lodz.pl\u002F)\n- [Nuxt.js](https:\u002F\u002Fnuxt.com\u002F)\n- [Firebase](https:\u002F\u002Ffirebase.google.com\u002F)",[53,66,77],{"id":54,"slug":54,"publishDate":55,"updateDate":-1,"title":56,"excerpt":57,"image":58,"category":9,"tags":59,"author":-1,"draft":14,"metadata":63,"content":64,"featured":65,"lang":17},"freszkids-pl",["Date","2026-01-01T00:00:00.000Z"],"Freszkids.pl – ordering meals for schools","Platform streamlining meal ordering for schools from catering companies. For schools without their own kitchen.","\u002Fimages\u002Fblog\u002Ffreszkids.webp",[60,61,62],"platform","catering","school",{},"Freszkids.pl is a platform that streamlines ordering meals for schools from catering companies. It works where schools don't have their own kitchen and use external catering. The project has two main sections: for parents and for catering companies.\n\nThe parents section lets you order meals for children at school. A parent selects their child's school, browses the menu for a specific day or week, marks meals, and places an order. You can set dietary preferences, allergens, and special diets. The system reminds about orders and allows online payments.\n\nThe catering companies section enables managing offers, menus, orders, and deliveries. A company adds menus for specific days, sets prices, defines order and delivery deadlines. It sees all orders from a given school, can export lists for meal preparation, and track payments.\n\nThe process is simple: parent selects meals, pays, company delivers. The school doesn't need to coordinate orders or collect cash. Everything works through the platform. Parents have control over what their children eat, and catering companies have a clear order management system.\n\nThe site is responsive and fast. Most parents order meals on phones, so the mobile version was a priority. Page loading is optimized – images are compressed, code is minified. \n\nSEO matters. Pages have proper meta tags, structured data, sitemap. This helps the platform appear in search results when someone looks for school catering or ordering meals for children.\n\nWe plan to expand features: SMS notifications, integration with school systems, nutritional reports for parents, meal rating options. For now, we're focusing on making sure the basic process of ordering and delivering meals works smoothly.\n\n## Links\n\n- [Freszkids.pl](https:\u002F\u002Fwww.freszkids.pl\u002F)",true,{"id":67,"slug":67,"publishDate":68,"updateDate":-1,"title":69,"excerpt":70,"image":71,"category":9,"tags":72,"author":-1,"draft":14,"metadata":75,"content":76,"featured":14,"lang":17},"kolekcjoner-chwil",["Date","2026-01-01T00:00:00.000Z"],"Moment Collector – ideas for spending time","App with ideas for outings and activities. Filters (budget, time, category), modes for solo, couple and group.","\u002Fimages\u002Fprojects\u002Fkolekcjonerchwil.webp",[73,33,74],"inspiracje","pomysły",{},"How often have you been planning a weekend with friends and after an hour still had no idea? Or wanted to surprise someone close but ran out of inspiration? Moment Collector (Kolekcjoner Chwil) came from situations like that. I wanted a tool that not only suggests ideas but nudges you out of routine.\n\nI built the idea database over months – from conversations, my own trips and everyday observations. Each suggestion is meant to be doable and worth the time. I quickly saw that one set for everyone doesn’t work – hence personalisation. Three modes: for yourself (solo time), for a couple, for a group. Filters: budget, location, available time, categories. In a few seconds you can narrow down to what fits, instead of hours of browsing.\n\nCategories are varied – sport, culture, relaxation, fun. I tried to balance activities that need preparation with spontaneous ones. I get feedback from users who try something new: pottery workshops, night city tours, trips out of town. That’s the best reward.\n\nThe interface is card-based – quick browsing, saving favourites. The app should work on mobile and desktop; ideas often come on the go, so availability matters.\n\nShared, real-world experiences still build relationships. Moment Collector is meant to be a bridge between \"maybe we could do something\" and \"let’s do it\". Try it – [Moment Collector](https:\u002F\u002Fkolekcjonerchwil.pl\u002F).\n\n## Links\n\n- [Moment Collector](https:\u002F\u002Fkolekcjonerchwil.pl\u002F)",{"id":78,"slug":78,"publishDate":79,"updateDate":-1,"title":80,"excerpt":81,"image":82,"category":9,"tags":83,"author":-1,"draft":14,"metadata":86,"content":87,"featured":65,"lang":17},"my-gym-track",["Date","2025-09-15T00:00:00.000Z"],"Training Log – tracking strength workouts","App for logging strength workouts and analyzing progress. Exercise database and ready-made plans. Born because none of the existing apps gave me full control over my data.","\u002Fimages\u002Fprojects\u002Fmy-gym-track.webp",[84,33,85],"fitness","tracking",{},"Over years of training I tried different ways to log progress: notebook, spreadsheets, apps. None gave me full control – either too little analysis or ads or expensive subscriptions. I decided to build a tool for myself and others who want to track their development consciously. That’s how Training Log (Rejestr Formy \u002F My Gym Track) started.\n\nThe rule: the user should spend time training, not tapping. The interface should be fast – a few actions, enter weight and reps, done. The app logs time, calculates training volume and detects personal records. A \"you hit a PR\" notification gives concrete motivation.\n\nThe database has over 1,600 exercises with technique description and muscles involved. Plus over 600 ready-made plans for different goals (mass, cut, strength, endurance). I know from experience how overwhelming it can be to design a plan from scratch; ready plans let you start right away.\n\nCharts for each exercise show progress over time – not just peaks but trends and plateaus. Research I looked at for the project shows that logging workouts improves consistency: app users complete around 81% of planned workouts vs 52% without that support; in one study average squat increase +19 kg, bench +8 kg after 10 weeks. Consistency and data work.\n\nA priority was user control over data. Training Log has no ads and doesn’t sell data. Your workouts are yours. That limits the business model, but for me it’s more important that the tool actually helps. Messages from users about their first 100 kg squat or finally training regularly are the best feedback.\n\nI plan to develop it further: advanced analysis, sharing workouts with a coach or training partner, maybe wearable integrations. I want to keep the app simple and keep control with the user. Try it – [Training Log](https:\u002F\u002Fmy-gym-track.web.app\u002F).\n\n## Links\n\n- [Training Log](https:\u002F\u002Fmy-gym-track.web.app\u002F)",1790687720790]