[{"data":1,"prerenderedAt":209},["ShallowReactive",2],{"work-en":3},[4,76,132],{"id":5,"title":6,"body":7,"client":59,"description":60,"draft":61,"extension":62,"featured":63,"image":64,"imageLabel":65,"meta":66,"navigation":63,"path":67,"seo":68,"services":69,"stem":73,"year":74,"__hash__":75},"work_en\u002Fwork\u002Fprojekt-beta.md","Operations web app",{"type":8,"value":9,"toc":52},"minimark",[10,15,19,22,26,45,49],[11,12,14],"h2",{"id":13},"context","Context",[16,17,18],"p",{},"The operations team ran work across spreadsheets, email and chat. Task status depended on who last updated a file. New people took a long time to learn the process, and errors surfaced only when something escalated.",[16,20,21],{},"They needed a web tool with roles, a clear task state and a change history — without building a heavy ERP.",[11,23,25],{"id":24},"scope","Scope",[27,28,29,33,36,39,42],"ul",{},[30,31,32],"li",{},"mapping roles, permissions and process exceptions",[30,34,35],{},"UX flows: list, task card, escalation, close-out",[30,37,38],{},"UI states: empty views, errors, permissions, load",[30,40,41],{},"TypeScript and Vue.js application: state, validation, API",[30,43,44],{},"staged rollout: one team first, then the rest of operations",[11,46,48],{"id":47},"outcome","Outcome",[16,50,51],{},"Each task has an owner, a visible status and an auditable history. Handling time drops when nobody is hunting for the “real” spreadsheet. The web app is a work tool, not another dashboard to look at.",{"title":53,"searchDepth":54,"depth":54,"links":55},"",2,[56,57,58],{"id":13,"depth":54,"text":14},{"id":24,"depth":54,"text":25},{"id":47,"depth":54,"text":48},"Logistics \u002F operations","A web application for an operations team: roles, statuses and flows in TypeScript and Vue.js instead of spreadsheets and chat.",false,"md",true,null,"Operations panel",{},"\u002Fwork\u002Fprojekt-beta",{"title":6,"description":60},[70,71,72],"TypeScript","Vue.js","UX Design","work\u002Fprojekt-beta","2026","ENjwmSZK2mbPfr9MQYRV6mKIAnzFjDmoyAcSO0jm1cc",{"id":77,"title":78,"body":79,"client":121,"description":122,"draft":61,"extension":62,"featured":63,"image":64,"imageLabel":123,"meta":124,"navigation":63,"path":125,"seo":126,"services":127,"stem":129,"year":130,"__hash__":131},"work_en\u002Fwork\u002Fprojekt-alpha.md","B2B manufacturer website",{"type":8,"value":80,"toc":116},[81,83,86,89,91,111,113],[11,82,14],{"id":13},[16,84,85],{},"The manufacturer had a website that described the company but did not help a buyer. The offer was scattered, the catalogue was hard to search, and the contact form sat behind extra clicks. Sales received few enquiries — and those that arrived needed a long follow-up.",[16,87,88],{},"The redesign had one job: shorten the path from visit to enquiry with a clear offer, readable products and a contact flow that can be completed in a single session.",[11,90,25],{"id":24},[27,92,93,96,99,102,105,108],{},[30,94,95],{},"discovery: sales goals, buyer persona, current site map",[30,97,98],{},"UX: information architecture, offer → product → contact path",[30,100,101],{},"UI and copy: first-screen hierarchy, CTAs, product descriptions",[30,103,104],{},"Vue.js front-end: fast pages, consistent layout, accessibility",[30,106,107],{},"on-page SEO: titles, headings, structured data, redirects",[30,109,110],{},"analytics: events on CTAs, the form and key pages",[11,112,48],{"id":47},[16,114,115],{},"The new website explains the offer on the first screen and points to a concrete next step. The catalogue can be filtered, and the form captures the context sales needs immediately. A typical webskilled project: UX, copy and front-end in one cycle — not a slide agency plus a separate build team.",{"title":53,"searchDepth":54,"depth":54,"links":117},[118,119,120],{"id":13,"depth":54,"text":14},{"id":24,"depth":54,"text":25},{"id":47,"depth":54,"text":48},"Industry \u002F B2B","A B2B manufacturer website redesign: offer, catalogue and contact path that shorten the journey from visit to enquiry.","B2B website",{},"\u002Fwork\u002Fprojekt-alpha",{"title":78,"description":122},[72,71,128],"SEO","work\u002Fprojekt-alpha","2025","C9bYqJXJF-jPSr01RlGCCTCzNUKj66kIZJulZqMk5lY",{"id":133,"title":134,"body":135,"client":198,"description":199,"draft":61,"extension":62,"featured":63,"image":200,"imageLabel":201,"meta":202,"navigation":63,"path":203,"seo":204,"services":205,"stem":207,"year":130,"__hash__":208},"work_en\u002Fwork\u002Fprojekt-nartomapa.md","Nartomapa",{"type":8,"value":136,"toc":193},[137,139,142,145,147,184,186],[11,138,14],{"id":13},[16,140,141],{},"Information about ski slopes in Poland was scattered: one site for the resort, another notice for opening hours, yet another map for directions. A skier or snowboarder planning a trip had to piece the picture together from several sources — or just go from memory.",[16,143,144],{},"What was needed was a single service: a map, a list and a short resort card with location and status (open \u002F closed). A planning tool, not another catalogue without context.",[11,146,25],{"id":24},[27,148,149,160,169,172,175,178,181],{},[30,150,151,152,159],{},"the ",[153,154,158],"a",{"href":155,"rel":156},"https:\u002F\u002Fnartomapa.pl\u002F",[157],"nofollow","nartomapa.pl"," site: WordPress, content, slope list, blog and contact",[30,161,162,163,168],{},"the map app at ",[153,164,167],{"href":165,"rel":166},"https:\u002F\u002Fmapa.nartomapa.pl\u002F#\u002F",[157],"mapa.nartomapa.pl",": Vue.js, Leaflet, OpenStreetMap",[30,170,171],{},"UX for two views: map + list, tied together by a shared search",[30,173,174],{},"search by name, voivodeship and town",[30,176,177],{},"filters (status, favourites), sorting and nearby slopes",[30,179,180],{},"resort card: address, season start, status at a glance",[30,182,183],{},"dark theme, weather layer and empty \u002F no-results states",[11,185,48],{"id":47},[16,187,188,189,192],{},"The user opens the map or the list and, in one session, finds a resort, checks whether it is open and where it is. The service is a product, not a landing page wrapped around a map: content and the app share the same slope catalogue. Live: ",[153,190,158],{"href":155,"rel":191},[157],".",{"title":53,"searchDepth":54,"depth":54,"links":194},[195,196,197],{"id":13,"depth":54,"text":14},{"id":24,"depth":54,"text":25},{"id":47,"depth":54,"text":48},"Tourism \u002F sport","An interactive map of ski resorts in Poland: location, slope status and nearby-resort search — a WordPress site and a Vue.js app.","\u002Fimages\u002Fnartomapa.png","Slope map",{},"\u002Fwork\u002Fprojekt-nartomapa",{"title":134,"description":199},[71,206,72],"WordPress","work\u002Fprojekt-nartomapa","EHaoqbsMQQbzS2noM-RjZrhHb1dgq_TQotTwnd9LQlo",1789584540875]