[{"data":1,"prerenderedAt":723},["ShallowReactive",2],{"project-\u002Fen\u002Fprojects\u002F2006-03-web2people":3,"hud-projects-en":143,"web2people-clients":653},{"id":4,"title":5,"body":6,"description":72,"extension":73,"meta":74,"navigation":138,"path":139,"seo":140,"stem":141,"__hash__":142},"content\u002Fen\u002Fprojects\u002F2006-03-web2people.md","Web2people: own web bureau",{"type":7,"value":8,"toc":68},"minimark",[9,40,46],[10,11,12,13,19,20,25,26,25,30,34,35,39],"p",{},"My own web bureau, 2006 to 2009. A team of three building websites, webshops, hosting and integrations for 34 Danish businesses, in ",[14,15,18],"span",{"className":16},[17],"color-light-blue","PHP"," and MySQL on ",[14,21,24],{"className":22},[23],"color-lavender","Joomla",", ",[14,27,29],{"className":28},[23],"WordPress",[14,31,33],{"className":32},[23],"Drupal"," and ",[14,36,38],{"className":37},[23],"Magento",".",[10,41,42],{},[43,44,45],"strong",{},"What we delivered:",[47,48,49,53,56,59,62,65],"ul",{},[50,51,52],"li",{},"Websites on Joomla, WordPress and Drupal",[50,54,55],{},"Webshops on Magento",[50,57,58],{},"Our own hosting service for clients",[50,60,61],{},"Social media marketing",[50,63,64],{},"Mobile apps alongside the web projects",[50,66,67],{},"Integrations with ERP and CRM systems",{"title":69,"searchDepth":70,"depth":70,"links":71},"",2,[],"My own web bureau, 2006 to 2009. A team of three building websites, webshops, hosting and integrations for 34 Danish businesses, in PHP and MySQL on Joomla, WordPress, Drupal and Magento.","md",{"shortTitle":5,"client":75,"dateFrom":76,"dateTo":77,"type":78,"role":79,"team":80,"cvr":81,"highlight":82,"skills":83,"images":103,"variant":104,"highlightNote":105,"services":106,"stackGroups":123},"Web2people","2006-03-01","2009-02-01","Own company","Founder & Web Developer",3,"29298866","HR Frugt became a Gazelle company after launching its new webshop.",[18,84,24,29,33,38,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,61,100,101,102],"MySQL","HTML","CSS","JavaScript","jQuery","AJAX","XML","SOAP","Apache","Linux","Photoshop","Flash","SEO","Google Analytics","E-commerce","Hosting","Mobile apps","ERP \u002F CRM integration","Leadership",[],"company","The shop was built by Web2people. Gazelles are Denmark’s fastest-growing businesses.",[107,110,113,115,118,120],{"title":108,"text":109},"Websites","Built on Joomla, WordPress and Drupal.",{"title":111,"text":112},"Webshops","E-commerce on Magento.",{"title":99,"text":114},"Our own hosting service for clients.",{"title":116,"text":117},"Social marketing","Social media marketing for clients.",{"title":100,"text":119},"Apps alongside the web projects.",{"title":121,"text":122},"Integrations","Connections to ERP and CRM systems.",[124,127,130,134],{"label":125,"skills":126},"Platforms",[24,29,33,38],{"label":128,"skills":129},"Code",[18,84,85,86,87,88,89,90,91],{"label":131,"skills":132},"Hosting & ops",[92,93,133],"Own hosting",{"label":135,"skills":136},"Design & marketing",[94,95,96,97,137],"Social media",true,"\u002Fen\u002Fprojects\u002F2006-03-web2people",{"title":5,"description":72},"en\u002Fprojects\u002F2006-03-web2people","iQGV_YxVDM4ZwAN8UCG-FHwWoM4WVIL6G-2WQJe6xI4",[144,164,184,198,210,223,236,249,262,275,292,304,318,328,350,370,383,392,403,417,427,442,455,469,486,500,510,519,528,544,558,579,609],{"path":139,"stem":141,"title":5,"description":72,"meta":145},{"shortTitle":5,"client":75,"dateFrom":76,"dateTo":77,"type":78,"role":79,"team":80,"cvr":81,"highlight":82,"skills":146,"images":147,"variant":104,"highlightNote":105,"services":148,"stackGroups":155},[18,84,24,29,33,38,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,61,100,101,102],[],[149,150,151,152,153,154],{"title":108,"text":109},{"title":111,"text":112},{"title":99,"text":114},{"title":116,"text":117},{"title":100,"text":119},{"title":121,"text":122},[156,158,160,162],{"label":125,"skills":157},[24,29,33,38],{"label":128,"skills":159},[18,84,85,86,87,88,89,90,91],{"label":131,"skills":161},[92,93,133],{"label":135,"skills":163},[94,95,96,97,137],{"path":165,"stem":166,"title":167,"description":168,"meta":169},"\u002Fen\u002Fprojects\u002F2009-03-clio-portals","en\u002Fprojects\u002F2009-03-clio-portals","Clio Online: Testing System and Portals","Worked on Clio Online’s interactive, self-correcting testing system spanning multiple products (exams, knowledge evaluation, and language training), and contributed to the broader Clio portál ecosystem.",{"shortTitle":170,"client":171,"dateFrom":172,"dateTo":173,"type":174,"skills":175,"role":181,"link":182,"images":183},"Testing System and Portals","Clio Online","2009-03-01","2014-06-01","Full-time",[85,86,176,88,177,178,179,87,180],"SCSS","Typo3","Bootstrap","UI","Jira","Frontend Developer","https:\u002F\u002Fwww.clio.me\u002F",[],{"path":185,"stem":186,"title":187,"description":188,"meta":189},"\u002Fen\u002Fprojects\u002F2014-06-adapt-atp","en\u002Fprojects\u002F2014-06-adapt-atp","Adapt: ATP.dk","Built a new Drupal setup and design for ATP, including workflow architecture and content automation.",{"shortTitle":190,"client":191,"dateFrom":173,"dateTo":192,"type":193,"skills":194,"role":195,"link":196,"images":197},"ATP.dk","Adapt \u002F ATP","2014-08-01","Freelance",[85,86,176,88,33,179,87,180],"Lead Frontend Developer","https:\u002F\u002Fwww.atp.dk\u002F",[],{"path":199,"stem":200,"title":201,"description":202,"meta":203},"\u002Fen\u002Fprojects\u002F2014-09-adapt-pensionforalle","en\u002Fprojects\u002F2014-09-adapt-pensionforalle","Adapt: Pensionforalle.dk","Delivered the core Drupal setup and design integration for Pensionforalle.dk, owned by ATP.",{"shortTitle":204,"client":205,"dateFrom":206,"dateTo":207,"type":193,"skills":208,"role":195,"link":196,"images":209},"Pensionforalle.dk","Adapt \u002F Pension for alle (ATP)","2014-09-01","2014-10-01",[85,86,176,88,33,179,87,180],[],{"path":211,"stem":212,"title":213,"description":214,"meta":215},"\u002Fen\u002Fprojects\u002F2014-11-adapt-vitus-rejser","en\u002Fprojects\u002F2014-11-adapt-vitus-rejser","Adapt: Vitus-rejser.dk","Delivered a complete new Drupal-based design for Vitus Rejser.",{"shortTitle":216,"client":217,"dateFrom":218,"dateTo":219,"type":193,"skills":220,"role":195,"link":221,"images":222},"Vitus-rejser.dk","Adapt \u002F Vitus Rejser","2014-11-01","2014-12-01",[85,86,176,88,33,179,87,180],"https:\u002F\u002Fvitus-rejser.dk\u002F",[],{"path":224,"stem":225,"title":226,"description":227,"meta":228},"\u002Fen\u002Fprojects\u002F2015-01-adapt-sportmaster","en\u002Fprojects\u002F2015-01-adapt-sportmaster","Adapt: Sportmaster.dk","Redesigned and migrated the existing CMS to Drupal, delivering new UI and interactions.",{"shortTitle":229,"client":230,"dateFrom":231,"dateTo":232,"type":193,"skills":233,"role":195,"link":234,"images":235},"Sportmaster.dk","Adapt \u002F Sportmaster.dk","2015-01-01","2015-02-01",[85,86,176,88,33,179,87,180],"https:\u002F\u002Fsportmaster.dk\u002F",[],{"path":237,"stem":238,"title":239,"description":240,"meta":241},"\u002Fen\u002Fprojects\u002F2015-03-adapt-ida","en\u002Fprojects\u002F2015-03-adapt-ida","Adapt: IDA (universe.ida.dk)","Delivered a full redesign on Bootstrap and integrated it into IDA’s custom system.",{"shortTitle":242,"client":243,"dateFrom":244,"dateTo":245,"type":193,"skills":246,"role":195,"link":247,"images":248},"universe.ida.dk","Adapt \u002F IDA","2015-03-01","2015-04-01",[85,86,176,88,178,179,87,180],"https:\u002F\u002Fwww.ida.dk\u002F",[],{"path":250,"stem":251,"title":252,"description":253,"meta":254},"\u002Fen\u002Fprojects\u002F2015-05-adapt-bjerregaard","en\u002Fprojects\u002F2015-05-adapt-bjerregaard","Adapt: Bjerregaard.dk","Created an advanced product filtering system for Bjerregaard.dk on Drupal.",{"shortTitle":255,"client":256,"dateFrom":257,"dateTo":258,"type":193,"skills":259,"role":195,"link":260,"images":261},"Bjerregaard.dk","Adapt \u002F Bjerregaard.dk","2015-05-01","2015-06-01",[85,86,176,88,33,179,87,180],"https:\u002F\u002Fwww.bjerregaard.dk\u002F",[],{"path":263,"stem":264,"title":265,"description":266,"meta":267},"\u002Fen\u002Fprojects\u002F2015-07-adapt-loberen","en\u002Fprojects\u002F2015-07-adapt-loberen","Adapt: Løberen.dk","Delivered a complete redesign for Løberen.dk with core frontend implementation on Drupal.",{"shortTitle":268,"client":269,"dateFrom":270,"dateTo":271,"type":193,"skills":272,"role":195,"link":273,"images":274},"Løberen.dk","Adapt \u002F Løberen.dk","2015-07-01","2015-08-01",[85,86,176,88,33,179,87,180],"https:\u002F\u002Floberen.dk\u002F",[],{"path":276,"stem":277,"title":278,"description":279,"meta":280},"\u002Fen\u002Fprojects\u002F2015-09-top-toy-br","en\u002Fprojects\u002F2015-09-top-toy-br","Top-Toy: Fætter BR Website","Maintained legacy code and built new omnichannel features for the Fætter BR website, including SAP Hybris widgets and UX testing.",{"shortTitle":281,"client":282,"dateFrom":283,"dateTo":284,"type":193,"skills":285,"role":181,"link":290,"images":291},"Fætter BR Website","Top Toy A\u002FS","2015-09-01","2017-01-01",[85,86,286,287,88,288,289,179,87,180],"LESS","RequireJS","REST API","GUI","https:\u002F\u002Fwww.br.dk\u002F",[],{"path":293,"stem":294,"title":295,"description":296,"meta":297},"\u002Fen\u002Fprojects\u002F2015-09-top-toy-click-and-collect","en\u002Fprojects\u002F2015-09-top-toy-click-and-collect","Top-Toy: Click & Collect Express","Led development of an express Click & Collect variant providing real-time store inventory and same-day pickup ordering.",{"shortTitle":298,"client":282,"dateFrom":283,"dateTo":284,"type":193,"skills":299,"role":181,"link":302,"images":303},"Click & Collect Express",[300,85,86,176,288,289,179,87,180,301],"AngularJS","UX Testing","https:\u002F\u002Ffætterbr.dk\u002F",[],{"path":305,"stem":306,"title":307,"description":308,"meta":309},"\u002Fen\u002Fprojects\u002F2015-09-top-toy-competition-system","en\u002Fprojects\u002F2015-09-top-toy-competition-system","Top-Toy: Competition System","Architected and developed a competition system used by partners like Lego and Disney, collaborating with an outsourcing team.",{"shortTitle":310,"client":282,"dateFrom":283,"dateTo":284,"type":193,"skills":311,"role":181,"link":316,"images":317},"Competition System",[300,85,86,176,312,313,314,315,87,180],"MongoDB","Illustrator","UX","Wireframing","https:\u002F\u002Fwww.top-toy.dk\u002F",[],{"path":319,"stem":320,"title":321,"description":322,"meta":323},"\u002Fen\u002Fprojects\u002F2015-09-top-toy-toysrus","en\u002Fprojects\u002F2015-09-top-toy-toysrus","Top-Toy: Toys'R'Us Website","Maintained legacy code base and delivered omnichannel features across the Toys'R'Us site, plus Hybris widget development and user testing.",{"shortTitle":324,"client":282,"dateFrom":283,"dateTo":284,"type":193,"skills":325,"role":181,"link":326,"images":327},"Toys’R’Us Website",[85,86,286,287,88,288,289,179,87,180],"https:\u002F\u002Fwww.toysrus.com\u002F",[],{"path":329,"stem":330,"title":331,"description":332,"meta":333},"\u002Fen\u002Fprojects\u002F2017-05-dsb-bill","en\u002Fprojects\u002F2017-05-dsb-bill","DSB: BILL Ticket System App","Frontend Developer, Designer, and UX’er on BILL, a mobile ticket system for conductors to validate tickets and create fees, built with Ionic and Angular.",{"shortTitle":334,"client":335,"dateFrom":336,"dateTo":337,"type":193,"skills":338,"role":347,"link":348,"images":349},"BILL Ticket System App","DSB","2017-05-01","2018-12-01",[339,340,341,87,85,86,176,314,179,315,342,343,180,344,345,346],"Angular","Ionic","TypeScript","Sketch","Adobe XD","Confluence","Bitbucket","CD","Lead Frontend Developer and UI\u002FUX Designer","https:\u002F\u002Fdsb.dk\u002F",[],{"path":351,"stem":352,"title":353,"description":354,"meta":355},"\u002Fen\u002Fprojects\u002F2018-04-webbud","en\u002Fprojects\u002F2018-04-webbud","Webbud.dk: Marketing Site","Built a flexible, SEO-friendly, and fast website using Nuxt with Vue\u002FVuex and a .NET backend via Contentful.",{"shortTitle":356,"client":357,"dateFrom":358,"dateTo":359,"type":193,"skills":360,"role":367,"link":368,"images":369},"Marketing Site","Webbud.dk","2018-04-01","2020-07-01",[361,362,87,85,86,288,363,364,96,365,366,315],"Vue","Vuex","Axios","Nuxt","Figma","Design","Lead Frontend Developer, UI\u002FUX Designer","https:\u002F\u002Fwebbud.dk\u002F",[],{"path":371,"stem":372,"title":373,"description":374,"meta":375},"\u002Fen\u002Fprojects\u002F2019-01-adapt-kvinfo","en\u002Fprojects\u002F2019-01-adapt-kvinfo","Adapt: KVINFO","Maintained and redesigned parts of KVINFO, the Danish center for gender, equality, and diversity, on Drupal.",{"shortTitle":376,"client":377,"dateFrom":378,"dateTo":379,"type":193,"skills":380,"role":195,"link":381,"images":382},"KVINFO","Adapt \u002F KVINFO","2019-01-01","2019-03-01",[85,86,176,88,33,179,87,180],"https:\u002F\u002Fkvinfo.dk\u002F",[],{"path":384,"stem":385,"title":386,"description":387,"meta":388},"\u002Fen\u002Fprojects\u002F2019-01-dsb-driftportal","en\u002Fprojects\u002F2019-01-dsb-driftportal","DSB: DriftPortal Mobile App","Modernized DriftPortal, a core workday management app for train personnel, by rewriting into Ionic + Angular and establishing a new build workflow.",{"shortTitle":389,"client":335,"dateFrom":378,"dateTo":379,"type":193,"skills":390,"role":195,"link":348,"images":391},"DriftPortal Mobile App",[339,340,341,87,85,86,176,314,179,315,342,343,180,344,345,346],[],{"path":393,"stem":394,"title":395,"description":396,"meta":397},"\u002Fen\u002Fprojects\u002F2019-04-dsb-ferieplan","en\u002Fprojects\u002F2019-04-dsb-ferieplan","DSB: Ferieplan Mobile App","Rebuilt Ferieplan, a vacation calendar app for train personnel, using Angular and Ionic, with a new build workflow.",{"shortTitle":398,"client":335,"dateFrom":399,"dateTo":400,"type":193,"skills":401,"role":195,"link":348,"images":402},"Ferieplan Mobile App","2019-04-01","2019-05-01",[339,340,341,87,85,86,176,314,179,315,342,343,180,344,345,346],[],{"path":404,"stem":405,"title":406,"description":407,"meta":408},"\u002Fen\u002Fprojects\u002F2019-05-dsb-react-upgrade","en\u002Fprojects\u002F2019-05-dsb-react-upgrade","DSB: React Upgrade Initiative","Supported the DSB.dk team in upgrading React to the latest version, modernizing patterns and ensuring maintainable code.",{"shortTitle":409,"client":335,"dateFrom":400,"dateTo":410,"type":193,"skills":411,"role":181,"link":348,"images":416},"React Upgrade Initiative","2019-06-01",[412,413,87,414,415,346,180],"React","Redux","Scrum","SAFe",[],{"path":418,"stem":419,"title":420,"description":421,"meta":422},"\u002Fen\u002Fprojects\u002F2019-06-dsb-ddi","en\u002Fprojects\u002F2019-06-dsb-ddi","DSB: Den Digitale Indberetning (DDI)","Rewrote an existing mobile app into Ionic + Angular, modernizing the build pipeline and improving stability and maintainability.",{"shortTitle":423,"client":335,"dateFrom":410,"dateTo":424,"type":193,"skills":425,"role":195,"link":348,"images":426},"Den Digitale Indberetning (DDI)","2019-08-01",[339,340,341,87,85,86,176,314,179,315,342,343,180,344,345,346],[],{"path":428,"stem":429,"title":430,"description":431,"meta":432},"\u002Fen\u002Fprojects\u002F2019-09-dsb-design-system","en\u002Fprojects\u002F2019-09-dsb-design-system","DSB: Design System & IA","Led the creation of a new design system for DSB, establishing information architecture and a single source of truth across teams using ZeroHeight and Storybook.",{"shortTitle":433,"client":335,"dateFrom":434,"dateTo":435,"type":193,"skills":436,"role":440,"link":348,"images":441},"Design System & IA","2019-09-01","2020-02-01",[365,437,438,314,439,179,87,85,86,414,415,346,180],"ZeroHeight","Storybook","IA","Lead UX Designer",[],{"path":443,"stem":444,"title":445,"description":446,"meta":447},"\u002Fen\u002Fprojects\u002F2020-03-dsb-triage-tool","en\u002Fprojects\u002F2020-03-dsb-triage-tool","DSB: Workshop Triage Tool","Designed a system to guide workshop personnel through structured triage when conductors report issues, enabling consistent data capture and resolution.",{"shortTitle":448,"client":335,"dateFrom":449,"dateTo":450,"type":193,"skills":451,"role":440,"link":348,"images":454},"Workshop Triage Tool","2020-03-01","2020-04-01",[365,339,314,452,179,453,87,85,86,414,415,346,180],"UX Research","UI Design",[],{"path":456,"stem":457,"title":458,"description":459,"meta":460},"\u002Fen\u002Fprojects\u002F2020-07-klassemappen","en\u002Fprojects\u002F2020-07-klassemappen","Klassemappen: Parent\u002FClass Management App","Designed and implemented Klassemappen, a system for parents to manage class information, playdates, groups, and a class money box. Built with Vue\u002FNuxt and Firebase for data handling.",{"shortTitle":461,"client":462,"dateFrom":359,"dateTo":463,"type":193,"skills":464,"role":367,"link":467,"images":468},"Parent \u002F Class Management App","klassemappen.dk","2020-10-01",[361,362,465,87,85,86,288,363,364,96,365,366,315,466],"Vue Router","Firebase","https:\u002F\u002Fklassemappen.dk\u002F",[],{"path":470,"stem":471,"title":472,"description":473,"meta":474},"\u002Fen\u002Fprojects\u002F2020-11-ufst-angivelse","en\u002Fprojects\u002F2020-11-ufst-angivelse","UFST: Angivelse","Developed the Angivelse reporting system enabling large businesses to report interests at scale, with a strong emphasis on security and robust testing.",{"shortTitle":475,"client":476,"dateFrom":477,"dateTo":478,"type":193,"skills":479,"role":181,"link":484,"images":485},"Angivelse","UFST","2020-11-01","2022-02-01",[480,341,362,465,288,363,178,481,482,180,344,483],"Vue 2","Cypress","Jenkins","GitHub","https:\u002F\u002Fufst.dk\u002F",[],{"path":487,"stem":488,"title":489,"description":490,"meta":491},"\u002Fen\u002Fprojects\u002F2020-11-ufst-component-library","en\u002Fprojects\u002F2020-11-ufst-component-library","UFST: Vue 3 Component Library","I built a custom Vue 3 component library aligned with the SKAT design system (Bootstrap), creating a consistent UI framework and a documentation site for developers to explore and test components interactively.",{"shortTitle":492,"client":476,"dateFrom":477,"dateTo":493,"type":193,"skills":494,"role":181,"link":484,"images":499},"Vue 3 Component Library","2024-11-01",[495,341,496,178,481,497,482,180,344,483,498],"Vue 3","Vite","Vitest","Documentation",[],{"path":501,"stem":502,"title":503,"description":504,"meta":505},"\u002Fen\u002Fprojects\u002F2020-11-ufst-micro-frontend","en\u002Fprojects\u002F2020-11-ufst-micro-frontend","UFST: Micro Frontend Platform (OSM2)","I initiated and implemented the micro frontend infrastructure for the OSM2 program, migrating legacy Vue 2 code into Vue 3 fragments to be reused across UFST solutions, while enforcing quality via Cypress and robust CI.",{"shortTitle":506,"client":476,"dateFrom":477,"dateTo":478,"type":193,"skills":507,"role":181,"link":484,"images":509},"Micro Frontend Platform (OSM2)",[508,495,341,480,362,465,288,363,178,481,482,180,344,483],"Micro Frontends",[],{"path":511,"stem":512,"title":513,"description":514,"meta":515},"\u002Fen\u002Fprojects\u002F2020-11-ufst-registrering","en\u002Fprojects\u002F2020-11-ufst-registrering","UFST: Registrering","Maintained the Registrering frontend used by national and international companies to register for the Danish VAT system. Ensured stability and compliance while iterating on features and tests.",{"shortTitle":516,"client":476,"dateFrom":477,"dateTo":478,"type":193,"skills":517,"role":181,"link":484,"images":518},"Registrering",[480,341,362,465,288,363,178,481,482,180,344,483],[],{"path":520,"stem":521,"title":522,"description":523,"meta":524},"\u002Fen\u002Fprojects\u002F2020-11-ufst-sagsbehandling","en\u002Fprojects\u002F2020-11-ufst-sagsbehandling","UFST: Sagsbehandling","Built and maintained the internal Sagsbehandling frontend used by employees to view and manage registrations, deploying through a rigorous pipeline with tests and linting.",{"shortTitle":525,"client":476,"dateFrom":477,"dateTo":478,"type":193,"skills":526,"role":181,"link":484,"images":527},"Sagsbehandling",[480,341,362,465,288,363,178,481,482,180,344,483],[],{"path":529,"stem":530,"title":531,"description":532,"meta":533},"\u002Fen\u002Fprojects\u002F2022-05-ufst-osm2","en\u002Fprojects\u002F2022-05-ufst-osm2","OSM2: Lead Frontend & Microfrontend Architecture","I served as the lead frontend developer on the OSM2 program at UFST, owning architecture and technical direction across multiple frontends. I implemented a micro frontend architecture, integrated the SKAT design system based on Bootstrap, and built features with Vue 3 + TypeScript, Pinia, and Vue Router. I established a strong testing culture using Cypress and Vitest, kept documentation current, and co-led the Frontend Community of Practice (FeCOP). Close collaboration with the PO and Scrum Master ensured clear acceptance criteria, quality, and security throughout delivery.",{"shortTitle":534,"client":476,"dateFrom":535,"dateTo":493,"type":193,"skills":536,"role":195,"link":484,"images":539,"featured":138,"featuredOrder":540,"featuredSkills":541,"teaser":542,"teaserShort":543},"OSM2: Lead Frontend & Micro Frontend Architecture","2022-05-01",[495,341,537,465,481,497,178,288,363,482,180,344,483,508,538,498],"Pinia","Mentoring",[],4,[495,341,508,481],"Owned architecture and technical direction across multiple frontends: \u003Cspan class=\"color-sun\">micro frontends\u003C\u002Fspan>, the SKAT design system, \u003Cspan class=\"color-zest\">Vue 3\u003C\u002Fspan> + Pinia, and a testing culture built on \u003Cspan class=\"color-turquoise\">Cypress\u003C\u002Fspan> and Vitest.","Micro frontend architecture, SKAT design system and a Cypress + Vitest testing culture.",{"path":545,"stem":546,"title":547,"description":548,"meta":549},"\u002Fen\u002Fprojects\u002F2024-10-ufst-scaffold-frontend","en\u002Fprojects\u002F2024-10-ufst-scaffold-frontend","UFST: Vue 3 Frontend Scaffold","I architected a comprehensive Vue 3 frontend scaffold at UFST, establishing a robust development ecosystem. The solution included modular architecture, CI\u002FCD with Jenkins, Docker containerization, state management via Pinia, advanced routing, authentication with Keycloak, i18n, and automated accessibility testing to meet WCAG 2.1.",{"shortTitle":550,"client":476,"dateFrom":551,"dateTo":493,"type":193,"skills":552,"role":181,"link":484,"images":557},"Vue 3 Frontend Scaffold","2024-10-01",[495,496,341,537,465,553,554,481,497,482,555,178,556,180,344,483],"Keycloak","i18n","Docker","WCAG 2.1",[],{"path":559,"stem":560,"title":561,"description":562,"meta":563},"\u002Fen\u002Fprojects\u002F2025-05-semler-porsche","en\u002Fprojects\u002F2025-05-semler-porsche","Porsche.dk: Design System Implementation","I led the setup and implementation of the new design system for porsche.dk, transforming Figma designs into reusable Vue 3 components focused on maintainability, performance, and scalability. Using GSAP, I implemented advanced animations and interactive features to enhance the user experience. I also mentored internal frontend developers, optimized workflows, and supported backend teams with seamless frontend integration.",{"shortTitle":561,"client":564,"dateFrom":565,"dateTo":566,"type":193,"skills":567,"role":181,"link":570,"images":571,"featured":138,"featuredOrder":80,"featuredSkills":575,"featuredTitle":576,"teaser":577,"teaserShort":578},"Semler Gruppen A\u002FS","2025-05-01","2025-09-01",[495,568,438,365,538,87,85,86,569],"GSAP","Azure","https:\u002F\u002Fwww.porsche.dk\u002F",[572,573,574],"images\u002Fprojects\u002Fsemler\u002Fporsche-designsystem-1.avif","images\u002Fprojects\u002Fsemler\u002Fporsche-designsystem-2.avif","images\u002Fprojects\u002Fsemler\u002Fporsche-designsystem-3.avif",[495,568,438,365],"Porsche.dk Design System","Set up the new design system for porsche.dk, turning Figma designs into reusable \u003Cspan class=\"color-zest\">Vue 3\u003C\u002Fspan> components with \u003Cspan class=\"color-zest\">GSAP\u003C\u002Fspan> animation, while mentoring the in-house frontend team.","Figma to reusable Vue 3 components with GSAP animation, plus mentoring the in-house team.",{"path":580,"stem":581,"title":582,"description":583,"meta":584},"\u002Fen\u002Fprojects\u002F2025-10-frederiksberg-kommune-een-indgang","en\u002Fprojects\u002F2025-10-frederiksberg-kommune-een-indgang","Frederiksberg Kommune: Een Indgang","I was hired by Frederiksberg Kommune to build the new Een Indgang platform: a modern, citizen‑facing service that streamlines access to municipal services and event permits. Built with Nuxt 4 and TypeScript, the solution delivers a robust full‑stack architecture with a type‑safe tRPC API, data modeling via Drizzle on PostgreSQL, and strict validation using Zod. The app provides secure OIDC authentication with MitID (via Nets eID Broker), state management through Pinia, and a visual, drag‑and‑drop planning experience for placing stages, booths, and facilities on location maps. Accessibility, localization, and reliability are first‑class through WCAG 2.1 patterns, i18n, end‑to‑end tests with Playwright, and CI\u002FCD on GitHub Actions with Docker.",{"shortTitle":585,"client":586,"dateFrom":587,"dateTo":588,"type":193,"skills":589,"role":597,"link":598,"images":599,"featured":138,"featuredOrder":70,"featuredSkills":606,"teaser":607,"teaserShort":608},"Een Indgang","Frederiksberg Kommune","2025-10-01","2025-12-01",[590,341,365,591,592,537,593,594,556,595,555,596,554],"Nuxt 4","Drizzle","Zod","trpc","Playwright","GitHub Actions","oidc","Full Stack Developer","https:\u002F\u002Fwww.frederiksberg.dk\u002F",[600,601,602,603,604,605],"images\u002Fprojects\u002Ffrederiksberg-kommune\u002Ffk-een-indgang-1.avif","images\u002Fprojects\u002Ffrederiksberg-kommune\u002Ffk-een-indgang-2.avif","images\u002Fprojects\u002Ffrederiksberg-kommune\u002Ffk-een-indgang-3.avif","images\u002Fprojects\u002Ffrederiksberg-kommune\u002Ffk-een-indgang-4.avif","images\u002Fprojects\u002Ffrederiksberg-kommune\u002Ffk-een-indgang-5.avif","images\u002Fprojects\u002Ffrederiksberg-kommune\u002Ffk-een-indgang-6.avif",[590,341,591,556],"A citizen-facing platform for municipal services and event permits, built full stack with \u003Cspan class=\"color-zest\">Nuxt 4\u003C\u002Fspan>, tRPC, Drizzle on PostgreSQL, Zod and \u003Cspan class=\"color-lavender\">MitID OIDC\u003C\u002Fspan>.","Citizen-facing municipal services and event permits, built full stack with Nuxt 4, tRPC and Drizzle.",{"path":610,"stem":611,"title":612,"description":613,"meta":614},"\u002Fen\u002Fprojects\u002F2026-01-erhvervshus-midtjylland-virksomhedsguiden","en\u002Fprojects\u002F2026-01-erhvervshus-midtjylland-virksomhedsguiden","Erhvervshus Midtjylland: Virksomhedsguiden Advisor Platform","I was hired by Erhvervshus Midtjylland to build a B2B advisor marketplace platform, a service connecting Danish SMEs with professional consultants across key business domains. Built with Vue 3 and TypeScript, the embedded SPA integrates into the Virksomhedsguiden portal with secure MitID OIDC authentication (private and business flows), multi-role access control, and a 3-level skills taxonomy spanning 9 business domains. The platform enables advisors to manage CVs with approval workflows, companies to publish tasks, and facilitates the complete offer-bidding lifecycle.",{"shortTitle":615,"client":616,"dateFrom":617,"dateTo":618,"type":193,"skills":619,"role":181,"link":621,"images":622,"featured":138,"featuredOrder":626,"featuredSkills":627,"teaser":628,"teaserShort":629,"lede":630,"imageCaptions":631,"imageAlts":635,"readouts":639,"similar":652},"Virksomheds­guiden Advisor Platform","Erhvervshus Midtjylland","2026-01-01","2026-04-01",[495,341,537,176,363,620,496,596,554],"OpenAPI","https:\u002F\u002Fvirksomhedsguiden.dk\u002F",[623,624,625],"images\u002Fprojects\u002Ferhvervshus-midtjylland\u002Ffind-raadgiver.avif","images\u002Fprojects\u002Ferhvervshus-midtjylland\u002Fmodal.avif","images\u002Fprojects\u002Ferhvervshus-midtjylland\u002Fvirksomhedsbeskrivelse.avif",1,[495,341,537,620,596],"A B2B advisor marketplace connecting Danish SMEs with consultants. An embedded \u003Cspan class=\"color-zest\">Vue 3\u003C\u002Fspan> SPA with \u003Cspan class=\"color-lavender\">MitID OIDC\u003C\u002Fspan> login, four user roles and a 3-level skills taxonomy across 9 business domains.","B2B advisor marketplace: an embedded Vue 3 SPA with MitID OIDC and four user roles.","A B2B marketplace that connects Danish SMEs with professional consultants, built for \u003Cspan class=\"color-light-blue\">Erhvervshus Midtjylland\u003C\u002Fspan> and embedded in the Virksomhedsguiden portal.",[632,633,634],"Find rådgiver · advisor search","Invitér rådgivere · invite flow","Advisor CV profile",[636,637,638],"Advisor search with filter tags and advisor cards","Modal for inviting advisors to a task","Advisor CV page with skills and experience",[640,643,646,649],{"value":641,"label":642},"4","user roles",{"value":644,"label":645},"2","MitID login flows",{"value":647,"label":648},"9","business domains",{"value":650,"label":651},"3","taxonomy levels","Marketplaces, MitID login and role-heavy public platforms are home turf.",[654,656,658,660,662,664,666,668,670,672,674,676,679,681,683,685,687,689,691,693,695,697,699,701,703,705,707,709,711,713,715,717,719,721],{"name":655},"Akuzomas",{"name":657},"Au2doc",{"name":659},"Back2Work",{"name":661},"Bager Diget",{"name":663},"Bella Italia Hornum",{"name":665},"Cafe Drop Inn",{"name":667},"Cafe Victoria",{"name":669},"Carpe Diem Roskilde",{"name":671},"Combo Green",{"name":673},"Egedal Pizza",{"name":675},"Fastbotton",{"name":677,"tag":678},"HR Frugt","Gazelle",{"name":680},"Hotel Skandia",{"name":682},"Il Gabbiano",{"name":684},"Interlux",{"name":686},"IsalenaSana",{"name":688},"Kebab Klubben",{"name":690},"Labogene",{"name":692},"LærTrafik",{"name":694},"Mikael B Design",{"name":696},"Mir-Byg",{"name":698},"Nord Trafik",{"name":700},"Otium Rejser",{"name":702},"Özmeram Rejser",{"name":704},"Pandrup Pizza",{"name":706},"Prinsen Hotel",{"name":708},"Realmæglerne",{"name":710},"ServiceSupply",{"name":712},"Sundkroen",{"name":714},"Tasci Autoservice",{"name":716},"Vest Møbler",{"name":718},"VJ Malerfirma",{"name":720},"VTR Gruppen",{"name":722},"what2do.nu",1794090305194]