PageSourceSearch

https://nuxtnation.com/workshops

html nuxtnation.com collected 2026-10-03 23:24:28 UTC 148,010 bytes, 88 lines download raw bytes

1<!DOCTYPE html><html><head><meta charset="utf-8">
2<meta name="viewport" content="width=device-width, initial-scale=1">
3<link rel="preconnect" href="https://fonts.gstatic.com/" crossorigin="anonymous" data-hid="23dc7e4">
4<link rel="preconnect" href="https://fonts.googleapis.com/" data-hid="50e9084">
5<link rel="preconnect" href="https://assets.nuxtnation.com">
6<link rel="icon" type="image/png" href="/favicon.png">
7<link rel="dns-prefetch" href="https://fonts.gstatic.com/" data-hid="7475ad2">
8<link rel="preload" as="style" href="https://fonts.googleapis.com/css2?family=Inter:[email protected]&display=swap" data-hid="161791a">
9<script data-hid="60bf5ec">(function(){
10        var h=document.querySelector("head");
11        var m=h.querySelector('meta[name="head:count"]');
12        if(m){m.setAttribute('content',Number(m.getAttribute('content'))+1);}
13        else{m=document.createElement('meta');m.setAttribute('name','head:count');m.setAttribute('content','1');h.append(m);}
14        var l=document.createElement('link');l.rel='stylesheet';l.href='https://fonts.googleapis.com/css2?family=Inter:[email protected]&display=swap';h.appendChild(l);
15      })();</script>
vendor: 58 bytes, lines 15-16
15
16<script src="https://www.googletagmanager.com/gtag/js?id=
16G-2RRRPJF7HZ
vendor: 18 bytes, line 16
16" async></script>
17<script src="/gtag.js" async></script>
vendor: 1 bytes, line 17
17
18<script src="https://tag.getdrip.com/6232659.js" async></script>
vendor: 1 bytes, line 18
18
19<script src="/facebook-pixel.js"></script>
vendor: 1 bytes, line 19
19
20<script type="application/ld+json">{"@context":"https://schema.org","@graph":[{"@type":"Organization","@id":"https://nuxtnation.com/#organization","name":"Nuxt Nation","url":"https://nuxtnation.com/","slogan":"Join over 21,000 fellow Nuxt & Vue Developers to learn everything Nuxt has to offer in 2024! Get a chance to speak and interact with Nuxt Core team members, industry experts, and contributors during live Q&A sessions!","sameAs":["https://www.facebook.com/NuxtNation","https://twitter.com/NuxtNation"],"logo":{"@type":"ImageObject","@id":"https://nuxtnation.com/#logo","inLanguage":"en-US","url":"https://nuxtnation.com/images/logo-nuxtnation.svg","caption":"Nuxt Nation | Join over 21,000 fellow Nuxt & Vue Developers to learn everything Nuxt has to offer in 2024! Get a chance to speak and interact with Nuxt Core team members, industry experts, and contributors during live Q&A sessions!"},"image":{"@id":"https://nuxtnation.com/#logo"}},[{"@type":"WebSite","@id":"https://nuxtnation.com/#website","url":"https://nuxtnation.com/","name":"Nuxt Nation","description":"Join over 21,000 fellow Nuxt & Vue Developers to learn everything Nuxt has to offer in 2024! Get a chance to speak and interact with Nuxt Core team members, industry experts, and contributors during live Q&A sessions!","publisher":{"@id":"https://nuxtnation.com/#organization"}},{"@context":"http://schema.org","@type":"WebPage","name":"Nuxt Nation","description":"Join over 21,000 fellow Nuxt & Vue Developers to learn everything Nuxt has to offer in 2024! Get a chance to speak and interact with Nuxt Core team members, industry experts, and contributors during live Q&A sessions!","inLanguage":"en-US","mainEntityOfPage":{"@id":"https://nuxtnation.com/#website"},"isPartOf":{"@id":"https://bitterbrains.com/#website","@type":"WebSite","name":"Bitter Brains","url":"https://bitterbrains.com"}}]]}</script>
20
21<link rel="canonical" href="https://nuxtnation.com/workshops">
22<style>/*! tailwindcss v3.4.4 | MIT License | https://tailwindcss.com*/*,:after,:before{border:0 solid;box-sizing:border-box}:after,:before{--tw-content:""}:host,html{line-height:1.5;-webkit-text-size-adjust:100%;font-family:ui-sans-serif,system-ui,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;font-feature-settings:normal;font-variation-settings:normal;tab-size:4;-webkit-tap-highlight-color:transparent}body{line-height:inherit;margin:0}hr{border-top-width:1px;color:inherit;height:0}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,pre,samp{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-feature-settings:normal;font-size:1em;font-variation-settings:normal}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:initial}sub{bottom:-.25em}sup{top:-.5em}table{border-collapse:collapse;border-color:inherit;text-indent:0}button,input,optgroup,select,textarea{color:inherit;font-family:inherit;font-feature-settings:inherit;font-size:100%;font-variation-settings:inherit;font-weight:inherit;letter-spacing:inherit;line-height:inherit;margin:0;padding:0}button,select{text-transform:none}button,input:where([type=button]),input:where([type=reset]),input:where([type=submit]){-webkit-appearance:button;background-color:initial;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:initial}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dd,dl,figure,h1,h2,h3,h4,h5,h6,hr,p,pre{margin:0}fieldset{margin:0}fieldset,legend{padding:0}menu,ol,ul{list-style:none;margin:0;padding:0}dialog{padding:0}textarea{resize:vertical}input::placeholder,textarea::placeholder{color:#9ca3af;opacity:1}
22[role=button],button{cursor:pointer}:disabled{cursor:default}audio,canvas,embed,iframe,img,object,svg,video{display:block;vertical-align:middle}img,video{height:auto;max-width:100%}[hidden]{display:none}*,::backdrop,:after,:before{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:#3b82f680;--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }.sr-only{height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px;clip:rect(0,0,0,0);border-width:0;white-space:nowrap}.pointer-events-none{pointer-events:none}.fixed{position:fixed}.absolute{position:absolute}.relative{position:relative}.inset-0{inset:0}.inset-x-0{left:0;right:0}.inset-y-0{bottom:0;top:0}.inset-y-auto{bottom:auto;top:auto}.-bottom-0{bottom:0}.-bottom-40{bottom:-10rem}.-top-10{top:-2.5rem}.bottom-0{bottom:0}.bottom-4{bottom:1rem}.left-0{left:0}.left-1\/2{left:50%}.left-10{left:2.5rem}.left-\[-500px\]{left:-500px}.right-0{right:0}.right-10{right:2.5rem}.right-4{right:1rem}.right-6{right:1.5rem}.right-\[-500px\]{right:-500px}.top-0{top:0}.top-10{top:2.5rem}.top-20{top:5rem}.top-40{top:10rem}.top-6{top:1.5rem}.top-\[20\%\]{top:20%}.-z-0{z-index:0}.-z-10{z-index:-10}.z-0{z-index:0}.z-10{z-index:10}.z-40{z-index:40}.z-50{z-index:50}.z-\[1000\]{z-index:1000}.order-1{order:1}.order-2{order:2}.m-4{margin:1rem}.m-auto{margin:auto}.mx-4{margin-left:1rem;margin-right:1rem}.mx-auto{margin-left:auto;margin-right:auto}.my-10{margin-bottom:2.5rem;margin-top:2.5rem}.my-auto{margin-bottom:auto;margin-top:auto}.\!mt-0{margin-top:0!important}.-mr-4{margin-right:-1rem}.-mr-80{margin-right:-20rem}.mb-10{margin-bottom:2.5rem}.mb-20{margin-bottom:5rem}.mb-5{margin-bottom:1.25rem}.mb-8{margin-bottom:2rem}.mb-\[60px\]{margin-bottom:60px}.mr-1{margin-right:.25rem}.mr-2{margin-right:.5rem}.mr-6{margin-right:1.5rem}.mt-10{margin-top:2.5rem}.mt-12{margin-top:3rem}.mt-14{margin-top:3.5rem}.mt-16{margin-top:4rem}.mt-2{margin-top:.5rem}.mt-20{margin-top:5rem}.mt-3{margin-top:.75rem}.mt-4{margin-top:1rem}.mt-40{margin-top:10rem}.mt-5{margin-top:1.25rem}.mt-6{margin-top:1.5rem}.mt-8{margin-top:2rem}.mt-\[30px\]{margin-top:30px}.mt-\[50px\]{margin-top:50px}.mt-\[96px\]{margin-top:96px}.line-clamp-4{display:-webkit-box;overflow:hidden;-webkit-box-orient:vertical;-webkit-line-clamp:4}.block{display:block}.inline-block{display:inline-block}.inline{display:inline}.flex{display:flex}.inline-flex{display:inline-flex}.table{display:table}.grid{display:grid}.hidden{display:none}.aspect-video{aspect-ratio:16/9}.size-10{height:2.5rem;width:2.5rem}.size-100{height:25rem;width:25rem}.size-2{height:.5rem;width:.5rem}.size-3{height:.75rem;width:.75rem}.size-5{height:1.25rem;width:1.25rem}.size-6{height:1.5rem;width:1.5rem}.size-\[14px\]{height:14px;width:14px}.size-\[22px\]{height:22px;width:22px}.size-\[280px\]{height:280px;width:280px}.size-\[50px\]{height:50px;width:50px}.size-\[60px\]{height:60px;width:60px}.size-\[772px\]{height:772px;width:772px}.size-fit{height:fit-content;width:fit-content}.size-full{height:100%;width:100%}.\!h-auto{height:auto!important}.h-12{height:3rem}.h-120{height:30rem}.h-14{height:3.5rem}.h-2{height:.5rem}.h-20{height:5rem}.h-24{height:6rem}.h-4{height:1rem}.h-40{height:10rem}.h-5{height:1.25rem}.h-56{height:14rem}.h-6{height:1.5rem}.h-60{height:15rem}.h-64{height:16rem}.h-7{height:1.75rem}.h-72{height:18rem}.h-8{height:2rem}.h-80{height:20rem}.h-\[1200px\]{height:1200px}.h-\[156px\]{height:156px}.h-\[250px\]{height:250px}.h-\[28px\]{height:28px}.h-\[30px\]{height:30px}.h-\[37px\]{height:37px}.h-\[460px\]{height:460px}.h-\[48px\]{height:48px}.h-\[50px\]{height:50px}.h-\[56px\]{height:56px}.h-\[57px\]{height:57px}.h-auto{height:auto}.h-full{height:100%}.h-screen{height:100vh}.max-h-32{max-height:8rem}.min-h-6{min-height:1.5rem}.min-h-full{min-height:100%}.w-1\/3{width:33.333333%}.w-1\/4{width:25%}.w-10{width:2.5rem}.w-144{width:36rem}.w-3\/4{width:75%}.w-4{width:1rem}.w-4\/5{width:80%}.w-40{width:10rem}.w-48{width:12rem}.w-6{width:1.5rem}.w-60{width:15rem}.w-80{width:20rem}.w-\[1180px\]{width:1180px}.w-\[12px\]{width:12px}.w-\[174px\]{width:174px}.w-\[220px\]{width:220px}.w-\[30\%\]{width:30%}.w-\[310px\]{width:310px}.w-\[340px\]{width:340px}.w-\[50px\]{width:50px}.w-\[calc\(50\%-20px\)\]{width:calc(50% - 20px)}.w-\[calc\(70\%-20px\)\]{width:calc(70% - 20px)}.w-auto{width:auto}.w-fit{width:fit-content}.w-full{width:100%}.min-w-48{min-width:12rem}.min-w-6{min-width:1.5rem}.min-w-8{min-width:2rem}.max-w-144{max-width:36rem}.max-w-2xl{max-width:42rem}.max-w-4xl{max-width:56rem}.max-w-5xl{max-width:64rem}.max-w-\[280px\]{max-width:280px}.max-w-\[300px\]{max-width:300px}.max-w-\[60\%\]{max-width:60%}.max-w-\[847px\]{max-width:847px}.max-w-lg{max-width:32rem}.max-w-md{max-width:28rem}.max-w-screen-2xl{max-width:1536px}.max-w-screen-lg{max-width:1024px}.max-w-screen-md{max-width:768px}.max-w-screen-xl{max-width:1280px}.max-w-sm{max-width:24rem}.max-w-xl{max-width:36rem}.flex-1{flex:1 1 0%}.shrink-0{flex-shrink:0}.-translate-x-1\/2{--tw-translate-x:-50%}.-translate-x-10,.-translate-x-1\/2{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.-translate-x-10{--tw-translate-x:-2.5rem}.-translate-x-2\/3{--tw-translate-x:-66.666667%}.-translate-x-20,.-translate-x-2\/3{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.-translate-x-20{--tw-translate-x:-5rem}.-translate-x-full{--tw-translate-x:-100%}.-translate-x-full,.-translate-y-20{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.-translate-y-20{--tw-translate-y:-5rem}.translate-x-0{--tw-translate-x:0px}.translate-x-0,.translate-x-1\/2{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.translate-x-1\/2{--tw-translate-x:50%}.translate-x-2\/3{--tw-translate-x:66.666667%}.translate-x-2\/3,.translate-x-40{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.translate-x-40{--tw-translate-x:10rem}.translate-y-\[-2px\]{--tw-translate-y:-2px}.scale-100,.translate-y-\[-2px\]{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.scale-100{--tw-scale-x:1;--tw-scale-y:1}.scale-50{--tw-scale-x:.5;--tw-scale-y:.5}.scale-50,.scale-x-150{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.scale-x-150{--tw-scale-x:1.5}.transform{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.cursor-pointer{cursor:pointer}.grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.flex-row{flex-direction:row}.flex-col{flex-direction:column}.flex-col-reverse{flex-direction:column-reverse}.flex-wrap{flex-wrap:wrap}.flex-nowrap{flex-wrap:nowrap}.items-start{align-items:flex-start}.items-center{align-items:center}.justify-start{justify-content:flex-start}.justify-center{justify-content:center}.justify-between{justify-content:space-between}
22.gap-0{gap:0}.gap-0\.5{gap:.125rem}.gap-10{gap:2.5rem}.gap-12{gap:3rem}.gap-14{gap:3.5rem}.gap-16{gap:4rem}.gap-2{gap:.5rem}.gap-2\.5{gap:.625rem}.gap-20{gap:5rem}.gap-3{gap:.75rem}.gap-4{gap:1rem}.gap-5{gap:1.25rem}.gap-6{gap:1.5rem}.gap-8{gap:2rem}.gap-\[15px\]{gap:15px}.gap-\[30px\]{gap:30px}.gap-\[50px\]{gap:50px}.gap-\[60px\]{gap:60px}.gap-\[6px\]{gap:6px}.gap-px{gap:1px}.gap-x-20{column-gap:5rem}.gap-x-5{column-gap:1.25rem}.gap-x-\[54px\]{column-gap:54px}.gap-y-8{row-gap:2rem}.space-x-4>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-left:calc(1rem*(1 - var(--tw-space-x-reverse)));margin-right:calc(1rem*var(--tw-space-x-reverse))}.space-y-4>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-bottom:calc(1rem*var(--tw-space-y-reverse));margin-top:calc(1rem*(1 - var(--tw-space-y-reverse)))}.space-y-\[10px\]>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-bottom:calc(10px*var(--tw-space-y-reverse));margin-top:calc(10px*(1 - var(--tw-space-y-reverse)))}.\!divide-x-0>:not([hidden])~:not([hidden]){--tw-divide-x-reverse:0!important;border-left-width:calc(0px*(1 - var(--tw-divide-x-reverse)))!important;border-right-width:calc(0px*var(--tw-divide-x-reverse))!important}.divide-x-2>:not([hidden])~:not([hidden]){--tw-divide-x-reverse:0;border-left-width:calc(2px*(1 - var(--tw-divide-x-reverse)));border-right-width:calc(2px*var(--tw-divide-x-reverse))}.divide-y>:not([hidden])~:not([hidden]){--tw-divide-y-reverse:0;border-bottom-width:calc(1px*var(--tw-divide-y-reverse));border-top-width:calc(1px*(1 - var(--tw-divide-y-reverse)))}.divide-charcoal>:not([hidden])~:not([hidden]){--tw-divide-opacity:1;border-color:rgb(51 66 85/var(--tw-divide-opacity))}.divide-eerie-black>:not([hidden])~:not([hidden]){--tw-divide-opacity:1;border-color:rgb(12 17 43/var(--tw-divide-opacity))}.self-stretch{align-self:stretch}.overflow-auto{overflow:auto}.overflow-hidden{overflow:hidden}.overflow-x-auto{overflow-x:auto}.overflow-x-hidden{overflow-x:hidden}.overflow-x-clip{overflow-x:clip}.overflow-x-scroll{overflow-x:scroll}.text-clip{text-overflow:clip}.whitespace-normal{white-space:normal}.whitespace-nowrap{white-space:nowrap}.\!rounded-none{border-radius:0!important}.rounded-2xl{border-radius:1rem}.rounded-3xl{border-radius:1.5rem}.rounded-\[10px\]{border-radius:10px}.rounded-\[20px\]{border-radius:20px}.rounded-full{border-radius:9999px}
22.rounded-lg{border-radius:.5rem}.rounded-md{border-radius:.375rem}.rounded-sm{border-radius:.125rem}.rounded-xl{border-radius:.75rem}.rounded-b-md{border-bottom-left-radius:.375rem;border-bottom-right-radius:.375rem}.rounded-b-xl{border-bottom-left-radius:.75rem;border-bottom-right-radius:.75rem}.rounded-t-2xl{border-top-left-radius:1rem;border-top-right-radius:1rem}.rounded-t-md{border-top-left-radius:.375rem;border-top-right-radius:.375rem}.rounded-t-xl{border-top-left-radius:.75rem;border-top-right-radius:.75rem}.rounded-br-md{border-bottom-right-radius:.375rem}.rounded-tr-md{border-top-right-radius:.375rem}.border{border-width:1px}.border-2{border-width:2px}.border-x{border-left-width:1px;border-right-width:1px}.border-b{border-bottom-width:1px}.border-t{border-top-width:1px}.border-\[\#FA1740\]{--tw-border-opacity:1;border-color:rgb(250 23 64/var(--tw-border-opacity))}.border-charcoal{--tw-border-opacity:1;border-color:rgb(51 66 85/var(--tw-border-opacity))}.border-cool-green{--tw-border-opacity:1;border-color:rgb(0 220 130/var(--tw-border-opacity))}.border-cool-green\/80{border-color:#00dc82cc}.border-lime-green{--tw-border-opacity:1;border-color:rgb(6 186 138/var(--tw-border-opacity))}.border-transparent{border-color:#0000}.\!bg-cool-green{--tw-bg-opacity:1!important;background-color:rgb(0 220 130/var(--tw-bg-opacity))!important}.\!bg-cool-green\/20{background-color:#00dc8233!important}.\!bg-transparent{background-color:initial!important}.bg-\[\#340826\]{--tw-bg-opacity:1;background-color:rgb(52 8 38/var(--tw-bg-opacity))}.bg-\[\#5972FE\]{--tw-bg-opacity:1;background-color:rgb(89 114 254/var(--tw-bg-opacity))}.bg-\[\#FDB82F\]{--tw-bg-opacity:1;background-color:rgb(253 184 47/var(--tw-bg-opacity))}.bg-\[\#FF9120\]{--tw-bg-opacity:1;background-color:rgb(255 145 32/var(--tw-bg-opacity))}.bg-\[\#ff0056\]{--tw-bg-opacity:1;background-color:rgb(255 0 86/var(--tw-bg-opacity))}.bg-black\/10{background-color:#0000001a}.bg-black\/30{background-color:#0000004d}.bg-cool-green{--tw-bg-opacity:1;background-color:rgb(0 220 130/var(--tw-bg-opacity))}.bg-cool-green\/10{background-color:#00dc821a}.bg-cool-green\/20{background-color:#00dc8233}.bg-cool-green\/30{background-color:#00dc824d}.bg-cool-green\/50{background-color:#00dc8280}.bg-cool-green\/60{background-color:#00dc8299}.bg-dark-green{--tw-bg-opacity:1;background-color:rgb(15 23 42/var(--tw-bg-opacity))}.bg-eerie-black{--tw-bg-opacity:1;background-color:rgb(12 17 43/var(--tw-bg-opacity))}.bg-lime-green{--tw-bg-opacity:1;background-color:rgb(6 186 138/var(--tw-bg-opacity))}.bg-rich-black{--tw-bg-opacity:1;background-color:rgb(2 4 32/var(--tw-bg-opacity))}.bg-transparent{background-color:initial}.bg-white{--tw-bg-opacity:1;background-color:rgb(255 255 255/var(--tw-bg-opacity))}.bg-\[url\(\'\/images\/nn-ticket\.png\'\)\]{background-image:url(/images/nn-ticket.png)}.bg-gradient-to-b{background-image:linear-gradient(to bottom,var(--tw-gradient-stops))}.bg-gradient-to-br{background-image:linear-gradient(to bottom right,var(--tw-gradient-stops))}.bg-gradient-to-t{background-image:linear-gradient(to top,var(--tw-gradient-stops))}.\!from-transparent{--tw-gradient-from:#0000 var(--tw-gradient-from-position)!important;--tw-gradient-to:#0000 var(--tw-gradient-to-position)!important;--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)!important}.from-\[\#0C112B\]{--tw-gradient-from:#0c112b var(--tw-gradient-from-position);--tw-gradient-to:#0c112b00 var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}.from-\[\#1E293A\]{--tw-gradient-from:#1e293a var(--tw-gradient-from-position);--tw-gradient-to:#1e293a00 var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}.from-\[\#760FFF\]{--tw-gradient-from:#760fff var(--tw-gradient-from-position);--tw-gradient-to:#760fff00 var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}.from-cool-green{--tw-gradient-from:#00dc82 var(--tw-gradient-from-position);--tw-gradient-to:#00dc8200 var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}.from-cool-green\/20{--tw-gradient-from:#00dc8233 var(--tw-gradient-from-position);--tw-gradient-to:#00dc8200 var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}.from-eerie-black{--tw-gradient-from:#0c112b var(--tw-gradient-from-position);--tw-gradient-to:#0c112b00 var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}.from-rich-black{--tw-gradient-from:#020420 var(--tw-gradient-from-position);--tw-gradient-to:#02042000 var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}.\!to-transparent{--tw-gradient-to:#0000 var(--tw-gradient-to-position)!important}.to-\[\#080A24\]{--tw-gradient-to:#080a24 var(--tw-gradient-to-position)}.to-\[\#0E0021\]{--tw-gradient-to:#0e0021 var(--tw-gradient-to-position)}.to-\[\#0F172A\]{--tw-gradient-to:#0f172a var(--tw-gradient-to-position)}.to-cool-black{--tw-gradient-to:#080a24 var(--tw-gradient-to-position)}.to-cool-green{--tw-gradient-to:#00dc82 var(--tw-gradient-to-position)}.to-cool-green\/20{--tw-gradient-to:#00dc8233 var(--tw-gradient-to-position)}.bg-contain{background-size:contain}.bg-center{background-position:50%}.bg-no-repeat{background-repeat:no-repeat}.object-contain{object-fit:contain}.object-cover{object-fit:cover}.object-center{object-position:center}.object-top{object-position:top}.\!p-\[18px\]{padding:18px!important}.p-10{padding:2.5rem}.p-2{padding:.5rem}.p-2\.5{padding:.625rem}.p-4{padding:1rem}.p-5{padding:1.25rem}.p-6{padding:1.5rem}.p-8{padding:2rem}.p-\[30px\]{padding:30px}.px-10{padding-left:2.5rem;padding-right:2.5rem}.px-12{padding-left:3rem;padding-right:3rem}.px-2{padding-left:.5rem;padding-right:.5rem}.px-20{padding-left:5rem;padding-right:5rem}.px-28{padding-left:7rem;padding-right:7rem}.px-4{padding-left:1rem;padding-right:1rem}.px-5{padding-left:1.25rem;padding-right:1.25rem}.px-6{padding-left:1.5rem;padding-right:1.5rem}.px-8{padding-left:2rem;padding-right:2rem}.px-\[18px\]{padding-left:18px;padding-right:18px}.py-1{padding-bottom:.25rem;padding-top:.25rem}.py-10{padding-bottom:2.5rem;padding-top:2.5rem}.py-12{padding-bottom:3rem;padding-top:3rem}.py-16{padding-bottom:4rem;padding-top:4rem}.py-2{padding-bottom:.5rem;padding-top:.5rem}.py-2\.5{padding-bottom:.625rem;padding-top:.625rem}.py-3{padding-bottom:.75rem;padding-top:.75rem}.py-32{padding-bottom:8rem;padding-top:8rem}.py-4{padding-bottom:1rem;padding-top:1rem}.py-5{padding-bottom:1.25rem;padding-top:1.25rem}.py-6{padding-bottom:1.5rem;padding-top:1.5rem}.py-8{padding-bottom:2rem;padding-top:2rem}.py-\[14px\]{padding-bottom:14px;padding-top:14px}.py-\[22px\]{padding-bottom:22px;padding-top:22px}.\!pt-0{padding-top:0!important}.pb-0{padding-bottom:0}.pb-14{padding-bottom:3.5rem}.pb-16{padding-bottom:4rem}.pb-22{padding-bottom:5.5rem}.pb-24{padding-bottom:6rem}.pb-4{padding-bottom:1rem}.pb-48{padding-bottom:12rem}.pb-6{padding-bottom:1.5rem}.pb-8{padding-bottom:2rem}.pl-4{padding-left:1rem}.pl-6{padding-left:1.5rem}.pr-2{padding-right:.5rem}.pr-4{padding-right:1rem}.pt-1{padding-top:.25rem}.pt-10{padding-top:2.5rem}.pt-12{padding-top:3rem}.pt-14{padding-top:3.5rem}.pt-16{padding-top:4rem}.pt-20{padding-top:5rem}.pt-24{padding-top:6rem}.pt-32{padding-top:8rem}.pt-4{padding-top:1rem}.pt-44{padding-top:11rem}.pt-48{padding-top:12rem}.pt-60{padding-top:15rem}.pt-8{padding-top:2rem}.pt-\[96px\]{padding-top:96px}.text-left{text-align:left}.text-center{text-align:center}.font-inter{font-family:Inter,ui-sans-serif,system-ui,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji}.font-roboto{font-family:Roboto,system-ui}.\!text-base{font-size:1rem!important;line-height:1.5rem!important}.text-2xl{font-size:1.5rem;line-height:2rem}.text-3xl{font-size:1.875rem;line-height:2.25rem}.text-4xl{font-size:2.25rem;line-height:2.5rem}.text-\[0\.5rem\]{font-size:.5rem}.text-\[22px\]{font-size:22px}.text-\[26px\]{font-size:26px}.text-\[30px\]{font-size:30px}.text-\[38px\]{font-size:38px}.text-\[7\.5px\]{font-size:7.5px}.text-base{font-size:1rem;line-height:1.5rem}.text-lg{font-size:1.125rem;line-height:1.75rem}.text-sm{font-size:.875rem;line-height:1.25rem}.text-xl{font-size:1.25rem;line-height:1.75rem}.text-xs{font-size:.75rem;line-height:1rem}.font-black{font-weight:900}.font-bold{font-weight:700}.font-medium{font-weight:500}.font-normal{font-weight:400}.font-semibold{font-weight:600}.uppercase{text-transform:uppercase}.leading-loose{line-height:2}.leading-none{line-height:1}.leading-normal{line-height:1.5}.leading-relaxed{line-height:1.625}.leading-tight{line-height:1.25}.tracking-wider{letter-spacing:.05em}.\!text-cool-green{--tw-text-opacity:1!important;color:rgb(0 220 130/var(--tw-text-opacity))!important}.text-\[\#006AFF\]{--tw-text-opacity:1;color:rgb(0 106 255/var(--tw-text-opacity))}.text-\[\#D5D5D5\]{--tw-text-opacity:1;color:rgb(213 213 213/var(--tw-text-opacity))}.text-\[\#FDB82F\]{--tw-text-opacity:1;color:rgb(253 184 47/var(--tw-text-opacity))}.text-\[\#FF2C45\]{--tw-text-opacity:1;color:rgb(255 44 69/var(--tw-text-opacity))}.text-\[\#ff0056\]{--tw-text-opacity:1;color:rgb(255 0 86/var(--tw-text-opacity))}.text-black{--tw-text-opacity:1;color:rgb(0 0 0/var(--tw-text-opacity))}.text-cadet-gray{--tw-text-opacity:1;color:rgb(148 163 184/var(--tw-text-opacity))}.text-cool-black{--tw-text-opacity:1;color:rgb(8 10 36/var(--tw-text-opacity))}.text-cool-green{--tw-text-opacity:1;color:rgb(0 220 130/var(--tw-text-opacity))}.text-eerie-black{--tw-text-opacity:1;color:rgb(12 17 43/var(--tw-text-opacity))}.text-hit-gray{--tw-text-opacity:1;color:rgb(163 172 183/var(--tw-text-opacity))}.text-light-gray{--tw-text-opacity:1;color:rgb(240 245 249/var(--tw-text-opacity))}.text-rich-black{--tw-text-opacity:1;color:rgb(2 4 32/var(--tw-text-opacity))}.text-slate-gray{--tw-text-opacity:1;color:rgb(109 123 139/var(--tw-text-opacity))}.text-torch-red{--tw-text-opacity:1;color:rgb(255 28 76/var(--tw-text-opacity))}.text-white{--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity))}.underline{text-decoration-line:underline}.underline-offset-4{text-underline-offset:4px}.opacity-50{opacity:.5}.outline-none{outline:2px solid #0000;outline-offset:2px}.blur-3xl{--tw-blur:blur(64px)}.blur-3xl,.blur-\[2000px\]{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.blur-\[2000px\]{--tw-blur:blur(2000px)}.blur-\[500px\]{--tw-blur:blur(500px)}.blur-\[500px\],.blur-\[80px\]{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.blur-\[80px\]{--tw-blur:blur(80px)}.filter{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.backdrop-blur-3xl{--tw-backdrop-blur:blur(64px)}.backdrop-blur-3xl,.backdrop-blur-xl{-webkit-backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia)}.backdrop-blur-xl{--tw-backdrop-blur:blur(24px)}.transition{transition-duration:.15s;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,-webkit-backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter,-webkit-backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1)}.transition-all{transition-duration:.15s;transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1)}.transition-colors{transition-duration:.15s;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1)}.duration-100{transition-duration:.1s}.duration-500{transition-duration:.5s}.ease-linear{transition-timing-function:linear}.placeholder\:text-charcoal::placeholder{--tw-text-opacity:1;color:rgb(51 66 85/var(--tw-text-opacity))}.odd\:hidden:nth-child(odd){display:none}.odd\:divide-rich-black:nth-child(odd)>:not([hidden])~:not([hidden]){--tw-divide-opacity:1;border-color:rgb(2 4 32/var(--tw-divide-opacity))}.even\:divide-eerie-black:nth-child(2n)>:not([hidden])~:not([hidden]){--tw-divide-opacity:1;border-color:rgb(12 17 43/var(--tw-divide-opacity))}.even\:bg-rich-black:nth-child(2n){--tw-bg-opacity:1;background-color:rgb(2 4 32/var(--tw-bg-opacity))}.hover\:h-auto:hover{height:auto}.hover\:\!border-2:hover{border-width:2px!important}.hover\:border:hover{border-width:1px}.hover\:\!border-cool-green:hover{--tw-border-opacity:1!important;border-color:rgb(0 220 130/var(--tw-border-opacity))!important}.hover\:border-cool-green:hover{--tw-border-opacity:1;border-color:rgb(0 220 130/var(--tw-border-opacity))}.hover\:bg-white:hover{--tw-bg-opacity:1;background-color:rgb(255 255 255/var(--tw-bg-opacity))}.hover\:bg-gradient-to-b:hover{background-image:linear-gradient(to bottom,var(--tw-gradient-stops))}.hover\:from-cool-green\/30:hover{--tw-gradient-from:#00dc824d var(--tw-gradient-from-position);--tw-gradient-to:#00dc8200 var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}.hover\:to-cool-green\/30:hover{--tw-gradient-to:#00dc824d var(--tw-gradient-to-position)}.hover\:to-dark-green\/30:hover{--tw-gradient-to:#0f172a4d var(--tw-gradient-to-position)}.hover\:text-caribbean-green:hover{--tw-text-opacity:1;color:rgb(0 196 141/var(--tw-text-opacity))}.hover\:text-cool-green:hover{--tw-text-opacity:1;color:rgb(0 220 130/var(--tw-text-opacity))}.hover\:text-white:hover{--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity))}.hover\:underline:hover{text-decoration-line:underline}.hover\:opacity-75:hover{opacity:.75}.hover\:shadow-md:hover{--tw-shadow:0 4px 6px -1px #0000001a,0 2px 4px -2px #0000001a;
22--tw-shadow-colored:0 4px 6px -1px var(--tw-shadow-color),0 2px 4px -2px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.focus\:border-cool-green:focus{--tw-border-opacity:1;border-color:rgb(0 220 130/var(--tw-border-opacity))}.focus\:outline-none:focus{outline:2px solid #0000;outline-offset:2px}.focus\:ring-2:focus{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.focus\:ring-caribbean-green:focus{--tw-ring-opacity:1;--tw-ring-color:rgb(0 196 141/var(--tw-ring-opacity))}.focus\:ring-cool-green:focus{--tw-ring-opacity:1;--tw-ring-color:rgb(0 220 130/var(--tw-ring-opacity))}.disabled\:pointer-events-none:disabled{pointer-events:none}.disabled\:cursor-not-allowed:disabled{cursor:not-allowed}.disabled\:opacity-50:disabled{opacity:.5}.disabled\:opacity-75:disabled{opacity:.75}.group:hover .group-hover\:block{display:block}.group:hover .group-hover\:hidden{display:none}.group:hover .group-hover\:bg-cool-green\/70{background-color:#00dc82b3}.group:hover .group-hover\:text-white{--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity))}@media (min-width:640px){.sm\:w-\[calc\(25\%-20px\)\]{width:calc(25% - 20px)}}@media (min-width:768px){.md\:-bottom-16{bottom:-4rem}.md\:top-60{top:15rem}.md\:mx-0{margin-left:0;margin-right:0}.md\:mx-10{margin-left:2.5rem;margin-right:2.5rem}.md\:mx-auto{margin-left:auto;margin-right:auto}.md\:\!mt-0{margin-top:0!important}.md\:-mt-40{margin-top:-10rem}.md\:mr-0{margin-right:0}.md\:mr-10{margin-right:2.5rem}.md\:mr-2{margin-right:.5rem}.md\:mt-10{margin-top:2.5rem}.md\:mt-12{margin-top:3rem}.md\:mt-20{margin-top:5rem}.md\:mt-24{margin-top:6rem}.md\:mt-32{margin-top:8rem}.md\:mt-4{margin-top:1rem}.md\:mt-40{margin-top:10rem}.md\:mt-6{margin-top:1.5rem}.md\:mt-60{margin-top:15rem}.md\:mt-8{margin-top:2rem}.md\:mt-\[100px\]{margin-top:100px}.md\:mt-\[120px\]{margin-top:120px}.md\:mt-\[160px\]{margin-top:160px}.md\:mt-\[220px\]{margin-top:220px}.md\:mt-\[34px\]{margin-top:34px}.md\:mt-\[50px\]{margin-top:50px}.md\:mt-\[60px\]{margin-top:60px}.md\:block{display:block}.md\:inline-block{display:inline-block}.md\:flex{display:flex}.md\:inline-flex{display:inline-flex}.md\:hidden{display:none}.md\:size-10{height:2.5rem;width:2.5rem}.md\:size-12{height:3rem;width:3rem}.md\:size-16{height:4rem;width:4rem}.md\:size-5{height:1.25rem;width:1.25rem}.md\:size-\[37px\]{height:37px;width:37px}.md\:h-100{height:25rem}.md\:h-120{height:30rem}.md\:h-224{height:56rem}.md\:h-6{height:1.5rem}.md\:h-60{height:15rem}.md\:h-64{height:16rem}.md\:h-72{height:18rem}.md\:h-80{height:20rem}.md\:h-84{height:21rem}.md\:h-\[1000px\]{height:1000px}.md\:h-\[220px\]{height:220px}.md\:h-\[255px\]{height:255px}.md\:h-\[38px\]{height:38px}.md\:h-\[428px\]{height:428px}.md\:h-\[57px\]{height:57px}.md\:h-\[61px\]{height:61px}.md\:h-auto{height:auto}.md\:h-fit{height:fit-content}.md\:min-h-6{min-height:1.5rem}.md\:min-h-screen{min-height:100vh}.md\:w-1\/2{width:50%}.md\:w-1\/3{width:33.333333%}.md\:w-1\/4{width:25%}.md\:w-100{width:25rem}.md\:w-120{width:30rem}.md\:w-130{width:32.5rem}.md\:w-3\/5{width:60%}.md\:w-56{width:14rem}.md\:w-64{width:16rem}.md\:w-72{width:18rem}.md\:w-96{width:24rem}.md\:w-\[230px\]{width:230px}.md\:w-\[286px\]{width:286px}.md\:w-\[556px\]{width:556px}.md\:w-\[calc\(25\%-20px\)\]{width:calc(25% - 20px)}.md\:w-\[calc\(40\%-20px\)\]{width:calc(40% - 20px)}.md\:w-auto{width:auto}.md\:w-fit{width:fit-content}.md\:w-full{width:100%}.md\:min-w-8{min-width:2rem}.md\:min-w-\[380px\]{min-width:380px}.md\:max-w-2xl{max-width:42rem}.md\:max-w-\[262px\]{max-width:262px}.md\:max-w-\[277px\]{max-width:277px}.md\:max-w-\[400px\]{max-width:400px}.md\:max-w-\[80\%\]{max-width:80%}.md\:max-w-xl{max-width:36rem}.md\:shrink-0{flex-shrink:0}.md\:\!translate-x-32{--tw-translate-x:8rem!important;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))!important}.md\:-translate-x-0{--tw-translate-x:-0px}.md\:-translate-x-0,.md\:-translate-x-20{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.md\:-translate-x-20{--tw-translate-x:-5rem}.md\:translate-x-16{--tw-translate-x:4rem}.md\:translate-x-16,.md\:translate-x-40{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.md\:translate-x-40{--tw-translate-x:10rem}.md\:translate-y-0{--tw-translate-y:0px;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.md\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.md\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.md\:flex-row{flex-direction:row}.md\:flex-wrap{flex-wrap:wrap}.md\:items-start{align-items:flex-start}.md\:items-center{align-items:center}
22.md\:justify-start{justify-content:flex-start}.md\:justify-center{justify-content:center}.md\:gap-0{gap:0}.md\:gap-10{gap:2.5rem}.md\:gap-12{gap:3rem}.md\:gap-16{gap:4rem}.md\:gap-2{gap:.5rem}.md\:gap-2\.5{gap:.625rem}.md\:gap-20{gap:5rem}.md\:gap-24{gap:6rem}.md\:gap-4{gap:1rem}.md\:gap-5{gap:1.25rem}.md\:gap-6{gap:1.5rem}.md\:gap-8{gap:2rem}.md\:gap-\[10px\]{gap:10px}.md\:gap-\[120px\]{gap:120px}.md\:gap-\[30px\]{gap:30px}.md\:gap-\[50px\]{gap:50px}.md\:gap-\[60px\]{gap:60px}.md\:gap-y-10{row-gap:2.5rem}.md\:self-stretch{align-self:stretch}.md\:overflow-x-visible{overflow-x:visible}.md\:rounded-b-xl{border-bottom-left-radius:.75rem;border-bottom-right-radius:.75rem}.md\:rounded-t-xl{border-top-left-radius:.75rem;border-top-right-radius:.75rem}.md\:rounded-br-md{border-bottom-right-radius:.375rem}.md\:rounded-tr-md{border-top-right-radius:.375rem}.md\:border-r{border-right-width:1px}.md\:p-10{padding:2.5rem}.md\:p-12{padding:3rem}.md\:p-4{padding:1rem}.md\:p-6{padding:1.5rem}.md\:p-8{padding:2rem}.md\:p-\[30px\]{padding:30px}.md\:px-0{padding-left:0;padding-right:0}.md\:px-10{padding-left:2.5rem;padding-right:2.5rem}.md\:px-12{padding-left:3rem;padding-right:3rem}.md\:px-4{padding-left:1rem;padding-right:1rem}.md\:px-8{padding-left:2rem;padding-right:2rem}.md\:px-\[26px\]{padding-left:26px;padding-right:26px}.md\:py-10{padding-bottom:2.5rem;padding-top:2.5rem}.md\:py-12{padding-bottom:3rem;padding-top:3rem}.md\:py-20{padding-bottom:5rem;padding-top:5rem}.md\:py-8{padding-bottom:2rem;padding-top:2rem}.md\:py-\[120px\]{padding-bottom:120px;padding-top:120px}.md\:\!pt-52{padding-top:13rem!important}.md\:pb-0{padding-bottom:0}.md\:pb-18{padding-bottom:4.5rem}.md\:pb-24{padding-bottom:6rem}.md\:pb-28{padding-bottom:7rem}.md\:pb-6{padding-bottom:1.5rem}.md\:pl-10{padding-left:2.5rem}.md\:pl-12{padding-left:3rem}.md\:pl-\[120px\]{padding-left:120px}.md\:pr-0{padding-right:0}.md\:pr-\[23px\]{padding-right:23px}.md\:pt-10{padding-top:2.5rem}.md\:pt-20{padding-top:5rem}.md\:pt-24{padding-top:6rem}.md\:pt-60{padding-top:15rem}.md\:pt-\[100px\]{padding-top:100px}.md\:pt-\[160px\]{padding-top:160px}.md\:text-left{text-align:left}.md\:\!text-base{font-size:1rem!important;line-height:1.5rem!important}.md\:text-2xl{font-size:1.5rem;line-height:2rem}.md\:text-3xl{font-size:1.875rem;line-height:2.25rem}.md\:text-4xl{font-size:2.25rem;line-height:2.5rem}.md\:text-5xl{font-size:3rem;line-height:1}.md\:text-6xl{font-size:3.75rem;line-height:1}.md\:text-7xl{font-size:4.5rem;line-height:1}.md\:text-\[12\.5px\]{font-size:12.5px}.md\:text-\[21px\]{font-size:21px}.md\:text-\[24px\]{font-size:24px}.md\:text-\[26px\]{font-size:26px}.md\:text-\[38px\]{font-size:38px}.md\:text-base{font-size:1rem;line-height:1.5rem}.md\:text-lg{font-size:1.125rem;line-height:1.75rem}.md\:text-sm{font-size:.875rem;line-height:1.25rem}.md\:text-xl{font-size:1.25rem;line-height:1.75rem}.md\:text-xs{font-size:.75rem;line-height:1rem}.md\:leading-loose{line-height:2}.md\:leading-tight{line-height:1.25}}@media (min-width:1024px){.lg\:inset-y-0{bottom:0;top:0}.lg\:-left-40{left:-10rem}.lg\:-right-40{right:-10rem}.lg\:mx-auto{margin-left:auto;margin-right:auto}.lg\:mb-8{margin-bottom:2rem}.lg\:flex{display:flex}.lg\:size-\[54px\]{height:54px;width:54px}.lg\:h-\[373px\]{height:373px}.lg\:h-\[70px\]{height:70px}.lg\:w-\[532px\]{width:532px}.lg\:w-\[817px\]{width:817px}.lg\:w-\[calc\(30\%-32px\)\]{width:calc(30% - 32px)}.lg\:max-w-screen-xl{max-width:1280px}.lg\:translate-x-20{--tw-translate-x:5rem;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.lg\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.lg\:gap-4{gap:1rem}.lg\:gap-\[15px\]{gap:15px}.lg\:gap-\[90px\]{gap:90px}.lg\:p-48{padding:12rem}.lg\:p-8{padding:2rem}.lg\:py-\[35px\]{padding-bottom:35px;padding-top:35px}.lg\:pl-\[100px\]{padding-left:100px}.lg\:pr-\[54px\]{padding-right:54px}.lg\:text-base{font-size:1rem;line-height:1.5rem}.lg\:text-lg{font-size:1.125rem;line-height:1.75rem}.lg\:even\:hidden:nth-child(2n){display:none}}@media (min-width:1280px){.xl\:static{position:static}.xl\:absolute{position:absolute}.xl\:-top-5{top:-1.25rem}.xl\:right-0{right:0}.xl\:top-20{top:5rem}.xl\:order-1{order:1}.xl\:order-2{order:2}.xl\:mx-0{margin-left:0;margin-right:0}.xl\:mx-auto{margin-left:auto;margin-right:auto}.xl\:-mt-0{margin-top:0}.xl\:mr-8{margin-right:2rem}.xl\:mr-auto{margin-right:auto}.xl\:mt-0{margin-top:0}.xl\:mt-12{margin-top:3rem}.xl\:mt-16{margin-top:4rem}.xl\:mt-18{margin-top:4.5rem}.xl\:mt-\[156px\]{margin-top:156px}.xl\:mt-\[50px\]{margin-top:50px}.xl\:block{display:block}.xl\:inline-block{display:inline-block}.xl\:flex{display:flex}.xl\:hidden{display:none}.xl\:size-auto{height:auto;width:auto}.xl\:h-152{height:38rem}.xl\:h-156{height:39rem}.xl\:h-16{height:4rem}.xl\:h-224{height:56rem}.xl\:h-52{height:13rem}.xl\:h-80{height:20rem}.xl\:h-84{height:21rem}.xl\:h-\[920px\]{height:920px}.xl\:h-full{height:100%}.xl\:w-1\/2{width:50%}.xl\:w-100{width:25rem}.xl\:w-120{width:30rem}.xl\:w-130{width:32.5rem}.xl\:w-2\/5{width:40%}.xl\:w-200{width:50rem}.xl\:w-248{width:62rem}.xl\:w-300{width:75rem}.xl\:w-44{width:11rem}.xl\:w-48{width:12rem}.xl\:w-80{width:20rem}.xl\:w-96{width:24rem}.xl\:w-\[50\%\]{width:50%}.xl\:w-auto{width:auto}.xl\:w-fit{width:fit-content}.xl\:w-full{width:100%}.xl\:max-w-5xl{max-width:64rem}.xl\:max-w-7xl{max-width:80rem}.xl\:max-w-none{max-width:none}.xl\:max-w-screen-2xl{max-width:1536px}.xl\:max-w-screen-lg{max-width:1024px}.xl\:max-w-screen-xl{max-width:1280px}.xl\:translate-x-0{--tw-translate-x:0px;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.xl\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.xl\:flex-row{flex-direction:row}.xl\:flex-row-reverse{flex-direction:row-reverse}.xl\:items-start{align-items:flex-start}.xl\:items-center{align-items:center}.xl\:justify-start{justify-content:flex-start}.xl\:gap-0{gap:0}.xl\:gap-10{gap:2.5rem}.xl\:gap-14{gap:3.5rem}.xl\:gap-32{gap:8rem}.xl\:gap-8{gap:2rem}.xl\:gap-\[50px\]{gap:50px}.xl\:space-x-8>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-left:calc(2rem*(1 - var(--tw-space-x-reverse)));margin-right:calc(2rem*var(--tw-space-x-reverse))}.xl\:space-y-0>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-bottom:calc(0px*var(--tw-space-y-reverse));margin-top:calc(0px*(1 - var(--tw-space-y-reverse)))}.xl\:divide-y>:not([hidden])~:not([hidden]){--tw-divide-y-reverse:0;border-bottom-width:calc(1px*var(--tw-divide-y-reverse));border-top-width:calc(1px*(1 - var(--tw-divide-y-reverse)))}.xl\:divide-transparent>:not([hidden])~:not([hidden]){border-color:#0000}.xl\:self-stretch{align-self:stretch}.xl\:rounded-md{border-radius:.375rem}.xl\:border{border-width:1px}.xl\:border-0{border-width:0}.xl\:border-l{border-left-width:1px}.xl\:border-cadet-gray{--tw-border-opacity:1;border-color:rgb(148 163 184/var(--tw-border-opacity))}.xl\:bg-eerie-black{--tw-bg-opacity:1;background-color:rgb(12 17 43/var(--tw-bg-opacity))}.xl\:bg-transparent{background-color:initial}.xl\:object-contain{object-fit:contain}.xl\:p-0{padding:0}.xl\:px-0{padding-left:0;padding-right:0}.xl\:px-10{padding-left:2.5rem;padding-right:2.5rem}.xl\:px-4{padding-left:1rem;padding-right:1rem}.xl\:py-20{padding-bottom:5rem;padding-top:5rem}.xl\:py-24{padding-bottom:6rem;padding-top:6rem}.xl\:py-32{padding-bottom:8rem;padding-top:8rem}.xl\:pt-0{padding-top:0}.xl\:pt-10{padding-top:2.5rem}.xl\:pt-32{padding-top:8rem}.xl\:text-left{text-align:left}.xl\:text-start{text-align:start}.xl\:leading-tight{line-height:1.25}.xl\:text-cadet-gray{--tw-text-opacity:1;color:rgb(148 163 184/var(--tw-text-opacity))}.xl\:hover\:text-caribbean-green:hover{--tw-text-opacity:1;color:rgb(0 196 141/var(--tw-text-opacity))}.xl\:hover\:text-jade:hover{--tw-text-opacity:1;
22color:rgb(1 189 111/var(--tw-text-opacity))}}.\[\&\>em\]\:invisible>em{visibility:hidden}.\[\&\>p\]\:ml-4>p{margin-left:1rem}.\[\&\>span\]\:font-medium>span{font-weight:500}.\[\&\>span\]\:text-white>span{--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity))}.\[\&\>ul\]\:ml-7>ul{margin-left:1.75rem}.\[\&\>ul\]\:grid>ul{display:grid}.\[\&\>ul\]\:list-disc>ul{list-style-type:disc}.\[\&\>ul\]\:gap-4>ul{gap:1rem}</style>
23<style>html{scroll-behavior:smooth}body{background-color:#020420;-webkit-tap-highlight-color:transparent}.swag-item>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-bottom:calc(1rem*var(--tw-space-y-reverse));margin-top:calc(1rem*(1 - var(--tw-space-y-reverse)))}.swag-item a{--tw-text-opacity:1;color:rgb(0 220 130/var(--tw-text-opacity))}.swag-item ol{list-style-type:decimal}.swag-item ol,.swag-item ul{margin-left:1rem}.swag-item ul{list-style-type:disc}.markdown-html{margin-top:2.5rem}.markdown-html>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-bottom:calc(1.5rem*var(--tw-space-y-reverse));margin-top:calc(1.5rem*(1 - var(--tw-space-y-reverse)))}.markdown-html{line-height:2;--tw-text-opacity:1;color:rgb(148 163 184/var(--tw-text-opacity))}@media (min-width:768px){.markdown-html{margin-top:5rem}.markdown-html>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-bottom:calc(3rem*var(--tw-space-y-reverse));margin-top:calc(3rem*(1 - var(--tw-space-y-reverse)))}.markdown-html{font-size:1.25rem;line-height:1.75rem;line-height:2}}.markdown-html h1,.markdown-html h2,.markdown-html h3,.markdown-html h4,.markdown-html h5{font-weight:700;text-align:left;--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity))}.markdown-html h1>em{font-style:normal;--tw-text-opacity:1;color:rgb(0 220 130/var(--tw-text-opacity))}.markdown-html p>strong{--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity))}.markdown-html p>strong>a{--tw-text-opacity:1;color:rgb(0 220 130/var(--tw-text-opacity))}.markdown-html h1{font-size:2.25rem;line-height:2.5rem}@media (min-width:768px){.markdown-html h1{font-size:3.75rem;line-height:1}}.markdown-html h2{font-size:1.5rem;line-height:2rem}@media (min-width:768px){.markdown-html h2{font-size:1.875rem;line-height:2.25rem}}.markdown-html h3{font-size:1.25rem;line-height:1.75rem}@media (min-width:768px){.markdown-html h3{font-size:1.5rem;line-height:2rem}}.markdown-html ul{list-style-type:none;margin-left:0}.markdown-html li{align-items:center;display:flex;gap:1rem;margin-bottom:1rem}.markdown-html li:before{background-image:url(/images/bulletpoint.svg);background-position:50%;background-size:cover;content:"";flex-shrink:0;font-size:1.125rem;height:3rem;line-height:1.75rem;width:3rem}.box,.card{border-radius:1rem;border-width:0!important;position:relative;--tw-border-opacity:1;border-color:rgb(51 66 85/var(--tw-border-opacity))}.box:before,.card:before{border-color:transparent;border-radius:1rem;border-width:1.5px;inset:0;position:absolute}.box:hover:before,.card:hover:before{border-width:1px}.box:before,.card:before{background:linear-gradient(180deg,#334255,#0f172a) border-box;content:"";-webkit-mask:linear-gradient(#fff 0 0) padding-box,linear-gradient(#fff 0 0);-webkit-mask-composite:destination-out;mask-composite:exclude}.heading{font-weight:700;text-align:left;--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity))}.heading>em{font-style:normal;--tw-text-opacity:1;color:rgb(0 220 130/var(--tw-text-opacity))}.no-scrollbar::-webkit-scrollbar{display:none}.no-scrollbar{-ms-overflow-style:none;scrollbar-width:none}</style>
24<style>@media (min-width:1280px){.router-link-active[data-v-eb09009c]{--tw-text-opacity:1;color:rgb(0 196 141/var(--tw-text-opacity))}}</style>
25<script type="module" src="/_nuxt/CVdoiTTk.js" crossorigin></script>
25</head><body><noscript><link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Inter:[email protected]&display=swap"></noscript><div id="__nuxt"><div><!--[--><style data-bs-offset>@property --bs-banner-height{syntax:&quot;&lt;length&gt;&quot;;inherits:true;initial-value:0px}@keyframes bs-banner-ride{from{--bs-banner-height:0px}to{--bs-banner-height:0px}}:root{--bs-banner-height:0px}@supports (animation-timeline:scroll()){:root{animation:bs-banner-ride linear both;animation-timeline:scroll(root);animation-range:0 0px}}</style><style data-bs-anim>.bs-banner-box{transition:height .42s cubic-bezier(.22,1,.36,1)}.bs-banner-slide{transition:transform .42s cubic-bezier(.22,1,.36,1)}@media (prefers-reduced-motion:reduce){.bs-banner-box,.bs-banner-slide{transition:none}}</style><div class="bs-banner-box" style="height:0px;overflow:hidden;position:relative;z-index:2147483646;"><div class="bs-banner-slide" style="height:90px;transform:translateY(-100%);"></div></div><!--]--><!--[--><div><div class="fixed inset-x-0 z-40 backdrop-blur-xl" style="top:var(--bs-banner-height, 0px);" data-v-eb09009c><div id="bb-banner-container" data-v-eb09009c></div><div class="px-4 py-8 md:px-12" style="background-color:rgba(2, 4, 32, 0);" data-v-eb09009c><div class="flex items-center justify-between gap-8 xl:mx-auto xl:max-w-screen-2xl" data-v-eb09009c><div class="flex items-center gap-4" data-v-eb09009c><button class="scale-x-150 text-2xl font-black text-white xl:hidden" data-v-eb09009c> ☰ </button><a href="/" class="min-w-48" data-v-eb09009c><!----></a></div><div class="-translate-x-full  xl:translate-x-0 fixed inset-y-0 left-0 z-[1000] flex h-screen w-3/4 flex-col gap-8 bg-eerie-black p-10 transition-all md:w-1/3 xl:static xl:size-auto xl:flex-row xl:bg-transparent xl:p-0" data-v-eb09009c><button class="absolute right-6 top-6 text-white xl:hidden" data-v-eb09009c><span data-v-eb09009c><svg class="size-6" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 256 256" data-v-eb09009c><rect fill="none" data-v-eb09009c></rect><line x1="200" y1="56" x2="56" y2="200" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="20" data-v-eb09009c></line><line x1="200" y1="200" x2="56" y2="56" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="20" data-v-eb09009c></line></svg></span></button><a aria-current="page" href="/workshops" class="router-link-active router-link-exact-active font-bold text-cadet-gray xl:hover:text-caribbean-green" data-v-eb09009c> Workshops </a><a href="/swag" class="font-bold text-cadet-gray xl:hover:text-caribbean-green" data-v-eb09009c> Swag </a><a href="/offers" class="font-bold text-cadet-gray xl:hover:text-caribbean-green" data-v-eb09009c> Offers </a><div class="relative" data-v-eb09009c><div class="flex cursor-pointer items-center gap-2 font-bold text-cadet-gray xl:hover:text-caribbean-green" data-v-eb09009c><span data-v-eb09009c> Previous Events </span><span class="text-[0.5rem]" data-v-eb09009c> ▼ </span></div><!----></div><a href="/sponsor" rel="noopener noreferrer" target="_blank" class="font-bold text-cadet-gray xl:hover:text-caribbean-green" data-v-eb09009c> Become a Sponsor </a><!----><button class="whitespace-no-wrap inline-flex h-[48px] w-full cursor-pointer items-center justify-center rounded-lg border border-charcoal bg-gradient-to-b from-[#1E293A] to-[#0F172A] px-8 font-medium text-white transition-colors hover:border-cool-green hover:bg-gradient-to-b hover:from-cool-green/30 hover:to-dark-green/30 hover:text-cool-green md:hidden" data-v-eb09009c>Free Sign up</button></div><div class="flex" data-v-eb09009c><!----><button class="whitespace-no-wrap hidden h-[48px] w-full cursor-pointer items-center justify-center rounded-lg border border-charcoal bg-gradient-to-b from-[#1E293A] to-[#0F172A] px-8 font-medium text-white transition-colors hover:border-cool-green hover:bg-gradient-to-b hover:from-cool-green/30 hover:to-dark-green/30 hover:text-cool-green md:inline-flex md:w-fit" data-v-eb09009c>Free Sign up</button></div></div></div></div><div class="relative"><img onerror="this.setAttribute(&#39;data-error&#39;, 1)" loading="lazy" data-nuxt-img srcset="/.netlify/images?url=%2Fimages%2Fbg-page-mobile.svg 1x, /.netlify/images?url=%2Fimages%2Fbg-page-mobile.svg 2x" src="/.netlify/images?url=%2Fimages%2Fbg-page-mobile.svg" class="absolute -bottom-0 mx-auto h-auto w-full md:hidden xl:right-0 xl:object-contain"><img onerror="this.setAttribute(&#39;data-error&#39;, 1)" loading="lazy" data-nuxt-img srcset="/.netlify/images?url=%2Fimages%2Fbg-page.svg 1x, /.netlify/images?url=%2Fimages%2Fbg-page.svg 2x" src="/.netlify/images?url=%2Fimages%2Fbg-page.svg" class="absolute left-1/2 top-0 hidden xl:block"><div data-container class="relative mx-4 md:mx-10 xl:mx-auto xl:w-full xl:max-w-screen-xl xl:px-4"><!--[--><div class="mt-40 pb-14 md:mt-60 md:w-130"><img onerror="this.setAttribute(&#39;data-error&#39;, 1)" alt="workshops" loading="lazy" data-nuxt-img srcset="/.netlify/images?url=%2Fimages%2Fworkshops.svg 1x, /.netlify/images?url=%2Fimages%2Fworkshops.svg 2x" src="/.netlify/images?url=%2Fimages%2Fworkshops.svg" class="mx-auto h-auto w-[50px] md:mx-0"><h1 class="text-center mt-5 max-w-xl text-4xl font-bold text-white md:text-left md:text-6xl">Nuxt Nation <span class="text-cool-green">Workshops</span></h1><!--[--><!--]--><!----><div class="text-center mt-5 leading-normal text-cadet-gray md:mt-8 md:w-full md:text-left">Learn new Vue.js Nuxt.js and other Web Development skills. Get your career to the next level with online training.</div><!--[--><!--]--><!--[--><!--]--></div><!--]--></div></div><div data-container class="relative mx-4 md:mx-10 xl:mx-auto xl:w-full xl:max-w-screen-xl xl:px-4"><!--[--><!--[--><div class="grid gap-8 pt-16"><h2 class="relative text-center text-3xl font-bold text-white md:text-left">Past Workshops</h2><div class="grid w-full gap-5 md:grid-cols-2 xl:gap-14"><!--[--><div class="relative"><div class="absolute inset-0 z-0 my-10 hidden xl:block" style="box-shadow:0 9px 53px 0 rgba(0, 0, 0, 0.1);"></div><div class="relative z-10 hidden"><img onerror="this.setAttribute(&#39;data-error&#39;, 1)" loading="lazy" data-nuxt-img srcset="/.netlify/images?url=%2Fimages%2Fbg-ticket-desktop.svg 1x, /.netlify/images?url=%2Fimages%2Fbg-ticket-desktop.svg 2x" src="/.netlify/images?url=%2Fimages%2Fbg-ticket-desktop.svg" class="hidden xl:inline-block"><img onerror="this.setAttribute(&#39;data-error&#39;, 1)" loading="lazy" data-nuxt-img srcset="/.netlify/images?url=%2Fimages%2Fbg-ticket-tablet.svg 1x, /.netlify/images?url=%2Fimages%2Fbg-ticket-tablet.svg 2x" src="/.netlify/images?url=%2Fimages%2Fbg-ticket-tablet.svg" class="hidden md:inline-block xl:hidden"><img onerror="this.setAttribute(&#39;data-error&#39;, 1)" loading="lazy" data-nuxt-img srcset="/.netlify/images?url=%2Fimages%2Fbg-ticket-mobile.svg 1x, /.netlify/images?url=%2Fimages%2Fbg-ticket-mobile.svg 2x" src="/.netlify/images?url=%2Fimages%2Fbg-ticket-mobile.svg" class="md:hidden"></div><div class="box relative flex flex-col items-center justify-between gap-8 rounded-2xl bg-gradient-to-b from-eerie-black to-cool-black px-4 md:gap-16 md:px-8 xl:flex-row xl:gap-32"><div class="flex-1 py-5 md:py-8">
25<p class="w-fit rounded-full border border-cool-green bg-cool-green/30 px-2 py-1 text-xs font-medium uppercase text-cool-green"> Online Workshop </p><a href="/workshops/crafting-a-dynamic-feedback-app-with-deskree-nuxt-github" class="relative mt-5 block text-2xl font-bold leading-tight text-white hover:text-cool-green md:text-left md:text-3xl">Crafting a Dynamic Feedback App with Deskree + Nuxt &amp; Github</a><div class="mt-5 flex w-full flex-wrap items-center gap-8"><!--[--><div class="flex items-center gap-2 text-cadet-gray"><img onerror="this.setAttribute(&#39;data-error&#39;, 1)" loading="lazy" data-nuxt-img srcset="/.netlify/images?url=%2Fimages%2Fpill-person.svg 1x, /.netlify/images?url=%2Fimages%2Fpill-person.svg 2x" src="/.netlify/images?url=%2Fimages%2Fpill-person.svg" class="size-5"><span class="inline-flex text-sm font-bold md:text-base">Sold Out <!----></span></div><div class="flex items-center gap-2 text-cadet-gray"><img onerror="this.setAttribute(&#39;data-error&#39;, 1)" loading="lazy" data-nuxt-img srcset="/.netlify/images?url=%2Fimages%2Fpill-calendar.svg 1x, /.netlify/images?url=%2Fimages%2Fpill-calendar.svg 2x" src="/.netlify/images?url=%2Fimages%2Fpill-calendar.svg" class="size-5"><span class="inline-flex text-sm font-bold md:text-base">November 29 <!----></span></div><div class="flex items-center gap-2 text-cadet-gray"><img onerror="this.setAttribute(&#39;data-error&#39;, 1)" loading="lazy" data-nuxt-img srcset="/.netlify/images?url=%2Fimages%2Fpill-clock.svg 1x, /.netlify/images?url=%2Fimages%2Fpill-clock.svg 2x" src="/.netlify/images?url=%2Fimages%2Fpill-clock.svg" class="size-5"><span class="inline-flex text-sm font-bold md:text-base">2:00 PM UTC <span class="block text-cadet-gray"> (3 hours) </span></span></div><div class="flex items-center gap-2 text-cadet-gray"><img onerror="this.setAttribute(&#39;data-error&#39;, 1)" loading="lazy" data-nuxt-img srcset="/.netlify/images?url=%2Fimages%2Fpill-location.svg 1x, /.netlify/images?url=%2Fimages%2Fpill-location.svg 2x" src="/.netlify/images?url=%2Fimages%2Fpill-location.svg" class="size-5"><span class="inline-flex text-sm font-bold md:text-base">Airmeet <!----></span></div><div class="hidden flex items-center gap-2 text-cadet-gray"><img onerror="this.setAttribute(&#39;data-error&#39;, 1)" loading="lazy" data-nuxt-img srcset="/.netlify/images?url=%2Fimages%2Fpill-price.svg 1x, /.netlify/images?url=%2Fimages%2Fpill-price.svg 2x" src="/.netlify/images?url=%2Fimages%2Fpill-price.svg" class="size-5"><span class="inline-flex text-sm font-bold md:text-base">FREE <!----></span></div><!--]--></div><!----><p class="mt-6 line-clamp-4 text-left text-sm leading-normal text-cadet-gray">To create enjoyable, user-driven application experiences, feedback is ESSENTIAL - This workshop will allow you to create a tool to facilitate viewing and processing crucial user feedback. Join senior full stack engineer, Guilherme Crozariol, as he walks you through Deskree as a platform while you actively craft a dynamic feedback tool that allows users to share their thoughts through detailed reports and screenshots. Other tools being used for front-end are Nuxt and Github.</p><div class="mt-4 flex items-center justify-start gap-6 md:mt-10"><!--[--><div class="flex items-center gap-2 md:gap-4"><div class="size-6 md:size-10"><img onerror="this.setAttribute(&#39;data-error&#39;, 1)" alt="Guilherme Crozariol" loading="lazy" data-nuxt-img srcset="/.netlify/images?url=https:%2F%2Fconference.vueschool.io%2Fstorage%2Fvklrrv2dN7EWgsrtwHcPx2dFb7V3N8EPYToeREc5.jpg 1x, /.netlify/images?url=https:%2F%2Fconference.vueschool.io%2Fstorage%2Fvklrrv2dN7EWgsrtwHcPx2dFb7V3N8EPYToeREc5.jpg 2x" src="/.netlify/images?url=https:%2F%2Fconference.vueschool.io%2Fstorage%2Fvklrrv2dN7EWgsrtwHcPx2dFb7V3N8EPYToeREc5.jpg" class="rounded-full"></div><span class="font-medium text-white">Guilherme Crozariol</span></div><!--]--></div><div class="mt-5 text-4xl font-bold text-cool-green">FREE</div><div class="relative mt-5 w-full xl:w-fit"><button disabled class="relative mt-5 w-full xl:w-fit whitespace-no-wrap inline-flex cursor-pointer items-center justify-center rounded-lg border border-charcoal bg-gradient-to-b from-[#1E293A] to-[#0F172A] px-8 py-4 font-medium text-white transition-all hover:border-cool-green hover:bg-gradient-to-b hover:from-cool-green/30 hover:to-dark-green/30 hover:text-cool-green disabled:pointer-events-none disabled:opacity-50 pointer-events-none">Registration Closed</button><!----></div></div></div></div><div class="relative"><div class="absolute inset-0 z-0 my-10 hidden xl:block" style="box-shadow:0 9px 53px 0 rgba(0, 0, 0, 0.1);"></div><div class="relative z-10 hidden"><img onerror="this.setAttribute(&#39;data-error&#39;, 1)" loading="lazy" data-nuxt-img srcset="/.netlify/images?url=%2Fimages%2Fbg-ticket-desktop.svg 1x, /.netlify/images?url=%2Fimages%2Fbg-ticket-desktop.svg 2x" src="/.netlify/images?url=%2Fimages%2Fbg-ticket-desktop.svg" class="hidden xl:inline-block"><img onerror="this.setAttribute(&#39;data-error&#39;, 1)" loading="lazy" data-nuxt-img srcset="/.netlify/images?url=%2Fimages%2Fbg-ticket-tablet.svg 1x, /.netlify/images?url=%2Fimages%2Fbg-ticket-tablet.svg 2x" src="/.netlify/images?url=%2Fimages%2Fbg-ticket-tablet.svg" class="hidden md:inline-block xl:hidden"><img onerror="this.setAttribute(&#39;data-error&#39;, 1)" loading="lazy" data-nuxt-img srcset="/.netlify/images?url=%2Fimages%2Fbg-ticket-mobile.svg 1x, /.netlify/images?url=%2Fimages%2Fbg-ticket-mobile.svg 2x" src="/.netlify/images?url=%2Fimages%2Fbg-ticket-mobile.svg" class="md:hidden"></div><div class="box relative flex flex-col items-center justify-between gap-8 rounded-2xl bg-gradient-to-b from-eerie-black to-cool-black px-4 md:gap-16 md:px-8 xl:flex-row xl:gap-32"><div class="flex-1 py-5 md:py-8">
25<p class="w-fit rounded-full border border-cool-green bg-cool-green/30 px-2 py-1 text-xs font-medium uppercase text-cool-green"> Online Workshop </p><a href="/workshops/building-graphql-backends-with-sdl" class="relative mt-5 block text-2xl font-bold leading-tight text-white hover:text-cool-green md:text-left md:text-3xl">Building GraphQL backends with SDL</a><div class="mt-5 flex w-full flex-wrap items-center gap-8"><!--[--><div class="flex items-center gap-2 text-cadet-gray"><img onerror="this.setAttribute(&#39;data-error&#39;, 1)" loading="lazy" data-nuxt-img srcset="/.netlify/images?url=%2Fimages%2Fpill-person.svg 1x, /.netlify/images?url=%2Fimages%2Fpill-person.svg 2x" src="/.netlify/images?url=%2Fimages%2Fpill-person.svg" class="size-5"><span class="inline-flex text-sm font-bold md:text-base">Sold Out <!----></span></div><div class="flex items-center gap-2 text-cadet-gray"><img onerror="this.setAttribute(&#39;data-error&#39;, 1)" loading="lazy" data-nuxt-img srcset="/.netlify/images?url=%2Fimages%2Fpill-calendar.svg 1x, /.netlify/images?url=%2Fimages%2Fpill-calendar.svg 2x" src="/.netlify/images?url=%2Fimages%2Fpill-calendar.svg" class="size-5"><span class="inline-flex text-sm font-bold md:text-base">December 2 <!----></span></div><div class="flex items-center gap-2 text-cadet-gray"><img onerror="this.setAttribute(&#39;data-error&#39;, 1)" loading="lazy" data-nuxt-img srcset="/.netlify/images?url=%2Fimages%2Fpill-clock.svg 1x, /.netlify/images?url=%2Fimages%2Fpill-clock.svg 2x" src="/.netlify/images?url=%2Fimages%2Fpill-clock.svg" class="size-5"><span class="inline-flex text-sm font-bold md:text-base">2:00 PM UTC <span class="block text-cadet-gray"> (2 hrs) </span></span></div><div class="flex items-center gap-2 text-cadet-gray"><img onerror="this.setAttribute(&#39;data-error&#39;, 1)" loading="lazy" data-nuxt-img srcset="/.netlify/images?url=%2Fimages%2Fpill-location.svg 1x, /.netlify/images?url=%2Fimages%2Fpill-location.svg 2x" src="/.netlify/images?url=%2Fimages%2Fpill-location.svg" class="size-5"><span class="inline-flex text-sm font-bold md:text-base">Airmeet <!----></span></div><div class="hidden flex items-center gap-2 text-cadet-gray"><img onerror="this.setAttribute(&#39;data-error&#39;, 1)" loading="lazy" data-nuxt-img srcset="/.netlify/images?url=%2Fimages%2Fpill-price.svg 1x, /.netlify/images?url=%2Fimages%2Fpill-price.svg 2x" src="/.netlify/images?url=%2Fimages%2Fpill-price.svg" class="size-5"><span class="inline-flex text-sm font-bold md:text-base">FREE <!----></span></div><!--]--></div><!----><p class="mt-6 line-clamp-4 text-left text-sm leading-normal text-cadet-gray">In this workshop, we&#39;ll cover the basics of GraphQL, and then use that knowledge to build a backend using SDL. Once we&#39;ve created our schema, we&#39;ll run it locally, deploy it to production, and create deployment branches for any changes to our schema. We&#39;ll finish the workshop by fetching data from our backend from the frontend, as well as adding authentication to lock down data access!</p><div class="mt-4 flex items-center justify-start gap-6 md:mt-10"><!--[--><div class="flex items-center gap-2 md:gap-4"><div class="size-6 md:size-10"><img onerror="this.setAttribute(&#39;data-error&#39;, 1)" alt="Jamie Barton" loading="lazy" data-nuxt-img srcset="/.netlify/images?url=https:%2F%2Fconference.vueschool.io%2Fstorage%2Fl4C6ulRr5eLIUq2QmieGSjkJQpZ6kzLHDtCW97Xn.jpg 1x, /.netlify/images?url=https:%2F%2Fconference.vueschool.io%2Fstorage%2Fl4C6ulRr5eLIUq2QmieGSjkJQpZ6kzLHDtCW97Xn.jpg 2x" src="/.netlify/images?url=https:%2F%2Fconference.vueschool.io%2Fstorage%2Fl4C6ulRr5eLIUq2QmieGSjkJQpZ6kzLHDtCW97Xn.jpg" class="rounded-full"></div><span class="font-medium text-white">Jamie Barton</span></div><!--]--></div><div class="mt-5 text-4xl font-bold text-cool-green">FREE</div><div class="relative mt-5 w-full xl:w-fit"><button disabled class="relative mt-5 w-full xl:w-fit whitespace-no-wrap inline-flex cursor-pointer items-center justify-center rounded-lg border border-charcoal bg-gradient-to-b from-[#1E293A] to-[#0F172A] px-8 py-4 font-medium text-white transition-all hover:border-cool-green hover:bg-gradient-to-b hover:from-cool-green/30 hover:to-dark-green/30 hover:text-cool-green disabled:pointer-events-none disabled:opacity-50 pointer-events-none">Registration Closed</button><!----></div></div></div></div><div class="relative"><div class="absolute inset-0 z-0 my-10 hidden xl:block" style="box-shadow:0 9px 53px 0 rgba(0, 0, 0, 0.1);"></div><div class="relative z-10 hidden"><img onerror="this.setAttribute(&#39;data-error&#39;, 1)" loading="lazy" data-nuxt-img srcset="/.netlify/images?url=%2Fimages%2Fbg-ticket-desktop.svg 1x, /.netlify/images?url=%2Fimages%2Fbg-ticket-desktop.svg 2x" src="/.netlify/images?url=%2Fimages%2Fbg-ticket-desktop.svg" class="hidden xl:inline-block"><img onerror="this.setAttribute(&#39;data-error&#39;, 1)" loading="lazy" data-nuxt-img srcset="/.netlify/images?url=%2Fimages%2Fbg-ticket-tablet.svg 1x, /.netlify/images?url=%2Fimages%2Fbg-ticket-tablet.svg 2x" src="/.netlify/images?url=%2Fimages%2Fbg-ticket-tablet.svg" class="hidden md:inline-block xl:hidden"><img onerror="this.setAttribute(&#39;data-error&#39;, 1)" loading="lazy" data-nuxt-img srcset="/.netlify/images?url=%2Fimages%2Fbg-ticket-mobile.svg 1x, /.netlify/images?url=%2Fimages%2Fbg-ticket-mobile.svg 2x" src="/.netlify/images?url=%2Fimages%2Fbg-ticket-mobile.svg" class="md:hidden"></div><div class="box relative flex flex-col items-center justify-between gap-8 rounded-2xl bg-gradient-to-b from-eerie-black to-cool-black px-4 md:gap-16 md:px-8 xl:flex-row xl:gap-32"><div class="flex-1 py-5 md:py-8">
25<p class="w-fit rounded-full border border-cool-green bg-cool-green/30 px-2 py-1 text-xs font-medium uppercase text-cool-green"> Online Workshop </p><a href="/workshops/create-a-jamstack-site-using-nuxt-3-storyblok" class="relative mt-5 block text-2xl font-bold leading-tight text-white hover:text-cool-green md:text-left md:text-3xl">Create a Jamstack site using Nuxt 3 &amp; Storyblok</a><div class="mt-5 flex w-full flex-wrap items-center gap-8"><!--[--><div class="flex items-center gap-2 text-cadet-gray"><img onerror="this.setAttribute(&#39;data-error&#39;, 1)" loading="lazy" data-nuxt-img srcset="/.netlify/images?url=%2Fimages%2Fpill-person.svg 1x, /.netlify/images?url=%2Fimages%2Fpill-person.svg 2x" src="/.netlify/images?url=%2Fimages%2Fpill-person.svg" class="size-5"><span class="inline-flex text-sm font-bold md:text-base">Sold Out <!----></span></div><div class="flex items-center gap-2 text-cadet-gray"><img onerror="this.setAttribute(&#39;data-error&#39;, 1)" loading="lazy" data-nuxt-img srcset="/.netlify/images?url=%2Fimages%2Fpill-calendar.svg 1x, /.netlify/images?url=%2Fimages%2Fpill-calendar.svg 2x" src="/.netlify/images?url=%2Fimages%2Fpill-calendar.svg" class="size-5"><span class="inline-flex text-sm font-bold md:text-base">November 23 <!----></span></div><div class="flex items-center gap-2 text-cadet-gray"><img onerror="this.setAttribute(&#39;data-error&#39;, 1)" loading="lazy" data-nuxt-img srcset="/.netlify/images?url=%2Fimages%2Fpill-clock.svg 1x, /.netlify/images?url=%2Fimages%2Fpill-clock.svg 2x" src="/.netlify/images?url=%2Fimages%2Fpill-clock.svg" class="size-5"><span class="inline-flex text-sm font-bold md:text-base">11:00 AM UTC <span class="block text-cadet-gray"> (4 hours) </span></span></div><div class="flex items-center gap-2 text-cadet-gray"><img onerror="this.setAttribute(&#39;data-error&#39;, 1)" loading="lazy" data-nuxt-img srcset="/.netlify/images?url=%2Fimages%2Fpill-location.svg 1x, /.netlify/images?url=%2Fimages%2Fpill-location.svg 2x" src="/.netlify/images?url=%2Fimages%2Fpill-location.svg" class="size-5"><span class="inline-flex text-sm font-bold md:text-base">Airmeet <!----></span></div><div class="hidden flex items-center gap-2 text-cadet-gray"><img onerror="this.setAttribute(&#39;data-error&#39;, 1)" loading="lazy" data-nuxt-img srcset="/.netlify/images?url=%2Fimages%2Fpill-price.svg 1x, /.netlify/images?url=%2Fimages%2Fpill-price.svg 2x" src="/.netlify/images?url=%2Fimages%2Fpill-price.svg" class="size-5"><span class="inline-flex text-sm font-bold md:text-base">FREE <!----></span></div><!--]--></div><!----><p class="mt-6 line-clamp-4 text-left text-sm leading-normal text-cadet-gray">Do you want to discover how to build a fast, lightweight, SEO friendly and image optimized website? Then join this workshop, where we will use the latest features of Nuxt 3 to create a static website in combination with Storyblok v2, a headless CMS that will empower the content creation of your website.  During the workshop, you will do several exercises that will make you learn the latest Jamstack trends and leave with a functional website to add to your portfolio.</p><div class="mt-4 flex items-center justify-start gap-6 md:mt-10"><!--[--><div class="flex items-center gap-2 md:gap-4"><div class="size-6 md:size-10"><img onerror="this.setAttribute(&#39;data-error&#39;, 1)" alt="Alba Silvente" loading="lazy" data-nuxt-img srcset="/.netlify/images?url=https:%2F%2Fconference.vueschool.io%2Fstorage%2FvCuWvlpgB1hkixra0GcimewPGOvgN8SoVfe4NJcA.jpg 1x, /.netlify/images?url=https:%2F%2Fconference.vueschool.io%2Fstorage%2FvCuWvlpgB1hkixra0GcimewPGOvgN8SoVfe4NJcA.jpg 2x" src="/.netlify/images?url=https:%2F%2Fconference.vueschool.io%2Fstorage%2FvCuWvlpgB1hkixra0GcimewPGOvgN8SoVfe4NJcA.jpg" class="rounded-full"></div><span class="font-medium text-white">Alba Silvente</span></div><!--]--></div><div class="mt-5 text-4xl font-bold text-cool-green">FREE</div><div class="relative mt-5 w-full xl:w-fit"><button disabled class="relative mt-5 w-full xl:w-fit whitespace-no-wrap inline-flex cursor-pointer items-center justify-center rounded-lg border border-charcoal bg-gradient-to-b from-[#1E293A] to-[#0F172A] px-8 py-4 font-medium text-white transition-all hover:border-cool-green hover:bg-gradient-to-b hover:from-cool-green/30 hover:to-dark-green/30 hover:text-cool-green disabled:pointer-events-none disabled:opacity-50 pointer-events-none">Registration Closed</button><!----></div></div></div></div><div class="relative"><div class="absolute inset-0 z-0 my-10 hidden xl:block" style="box-shadow:0 9px 53px 0 rgba(0, 0, 0, 0.1);"></div><div class="relative z-10 hidden"><img onerror="this.setAttribute(&#39;data-error&#39;, 1)" loading="lazy" data-nuxt-img srcset="/.netlify/images?url=%2Fimages%2Fbg-ticket-desktop.svg 1x, /.netlify/images?url=%2Fimages%2Fbg-ticket-desktop.svg 2x" src="/.netlify/images?url=%2Fimages%2Fbg-ticket-desktop.svg" class="hidden xl:inline-block"><img onerror="this.setAttribute(&#39;data-error&#39;, 1)" loading="lazy" data-nuxt-img srcset="/.netlify/images?url=%2Fimages%2Fbg-ticket-tablet.svg 1x, /.netlify/images?url=%2Fimages%2Fbg-ticket-tablet.svg 2x" src="/.netlify/images?url=%2Fimages%2Fbg-ticket-tablet.svg" class="hidden md:inline-block xl:hidden"><img onerror="this.setAttribute(&#39;data-error&#39;, 1)" loading="lazy" data-nuxt-img srcset="/.netlify/images?url=%2Fimages%2Fbg-ticket-mobile.svg 1x, /.netlify/images?url=%2Fimages%2Fbg-ticket-mobile.svg 2x" src="/.netlify/images?url=%2Fimages%2Fbg-ticket-mobile.svg" class="md:hidden"></div><div class="box relative flex flex-col items-center justify-between gap-8 rounded-2xl bg-gradient-to-b from-eerie-black to-cool-black px-4 md:gap-16 md:px-8 xl:flex-row xl:gap-32"><div class="flex-1 py-5 md:py-8">
25<p class="w-fit rounded-full border border-cool-green bg-cool-green/30 px-2 py-1 text-xs font-medium uppercase text-cool-green"> Online Workshop </p><a href="/workshops/state-management-with-pinia-workshop" class="relative mt-5 block text-2xl font-bold leading-tight text-white hover:text-cool-green md:text-left md:text-3xl">State Management with Pinia Workshop</a><div class="mt-5 flex w-full flex-wrap items-center gap-8"><!--[--><div class="flex items-center gap-2 text-cadet-gray"><img onerror="this.setAttribute(&#39;data-error&#39;, 1)" loading="lazy" data-nuxt-img srcset="/.netlify/images?url=%2Fimages%2Fpill-person.svg 1x, /.netlify/images?url=%2Fimages%2Fpill-person.svg 2x" src="/.netlify/images?url=%2Fimages%2Fpill-person.svg" class="size-5"><span class="inline-flex text-sm font-bold md:text-base">Sold Out <!----></span></div><div class="flex items-center gap-2 text-cadet-gray"><img onerror="this.setAttribute(&#39;data-error&#39;, 1)" loading="lazy" data-nuxt-img srcset="/.netlify/images?url=%2Fimages%2Fpill-calendar.svg 1x, /.netlify/images?url=%2Fimages%2Fpill-calendar.svg 2x" src="/.netlify/images?url=%2Fimages%2Fpill-calendar.svg" class="size-5"><span class="inline-flex text-sm font-bold md:text-base">October 25 <!----></span></div><div class="flex items-center gap-2 text-cadet-gray"><img onerror="this.setAttribute(&#39;data-error&#39;, 1)" loading="lazy" data-nuxt-img srcset="/.netlify/images?url=%2Fimages%2Fpill-clock.svg 1x, /.netlify/images?url=%2Fimages%2Fpill-clock.svg 2x" src="/.netlify/images?url=%2Fimages%2Fpill-clock.svg" class="size-5"><span class="inline-flex text-sm font-bold md:text-base">12:00 PM UTC <span class="block text-cadet-gray"> (5 hours) </span></span></div><div class="flex items-center gap-2 text-cadet-gray"><img onerror="this.setAttribute(&#39;data-error&#39;, 1)" loading="lazy" data-nuxt-img srcset="/.netlify/images?url=%2Fimages%2Fpill-location.svg 1x, /.netlify/images?url=%2Fimages%2Fpill-location.svg 2x" src="/.netlify/images?url=%2Fimages%2Fpill-location.svg" class="size-5"><span class="inline-flex text-sm font-bold md:text-base">Airmeet <!----></span></div><div class="hidden flex items-center gap-2 text-cadet-gray"><img onerror="this.setAttribute(&#39;data-error&#39;, 1)" loading="lazy" data-nuxt-img srcset="/.netlify/images?url=%2Fimages%2Fpill-price.svg 1x, /.netlify/images?url=%2Fimages%2Fpill-price.svg 2x" src="/.netlify/images?url=%2Fimages%2Fpill-price.svg" class="size-5"><span class="inline-flex text-sm font-bold md:text-base">$ 499 <!----></span></div><!--]--></div><div class="mt-5 text-lg font-bold text-cool-green">Get this workshop for only $99.80 when you check out with the coupon code NUXTNATION23</div><p class="mt-6 line-clamp-4 text-left text-sm leading-normal text-cadet-gray">Pinia is a state management solution for Vue.js applications that’s easy and intuitive to use. It’s modular by default, extensible, and type-safe, making it a great choice for large scale apps.</p><div class="mt-4 flex items-center justify-start gap-6 md:mt-10"><!--[--><div class="flex items-center gap-2 md:gap-4"><div class="size-6 md:size-10"><img onerror="this.setAttribute(&#39;data-error&#39;, 1)" alt="Daniel Kelly" loading="lazy" data-nuxt-img srcset="/.netlify/images?url=https:%2F%2Fconference.vueschool.io%2Fstorage%2FeRawEczKosrW9OI6uAs6TqJmdS47qQn5PHEuhnTy.jpg 1x, /.netlify/images?url=https:%2F%2Fconference.vueschool.io%2Fstorage%2FeRawEczKosrW9OI6uAs6TqJmdS47qQn5PHEuhnTy.jpg 2x" src="/.netlify/images?url=https:%2F%2Fconference.vueschool.io%2Fstorage%2FeRawEczKosrW9OI6uAs6TqJmdS47qQn5PHEuhnTy.jpg" class="rounded-full"></div><span class="font-medium text-white">Daniel Kelly</span></div><!--]--></div><div class="mt-5 text-4xl font-bold text-cool-green">$ 499</div><div class="relative mt-5 w-full xl:w-fit"><button disabled class="relative mt-5 w-full xl:w-fit whitespace-no-wrap inline-flex cursor-pointer items-center justify-center rounded-lg border border-charcoal bg-gradient-to-b from-[#1E293A] to-[#0F172A] px-8 py-4 font-medium text-white transition-all hover:border-cool-green hover:bg-gradient-to-b hover:from-cool-green/30 hover:to-dark-green/30 hover:text-cool-green disabled:pointer-events-none disabled:opacity-50 pointer-events-none">Registration Closed</button><!----></div></div></div></div><div class="relative"><div class="absolute inset-0 z-0 my-10 hidden xl:block" style="box-shadow:0 9px 53px 0 rgba(0, 0, 0, 0.1);"></div><div class="relative z-10 hidden"><img onerror="this.setAttribute(&#39;data-error&#39;, 1)" loading="lazy" data-nuxt-img srcset="/.netlify/images?url=%2Fimages%2Fbg-ticket-desktop.svg 1x, /.netlify/images?url=%2Fimages%2Fbg-ticket-desktop.svg 2x" src="/.netlify/images?url=%2Fimages%2Fbg-ticket-desktop.svg" class="hidden xl:inline-block"><img onerror="this.setAttribute(&#39;data-error&#39;, 1)" loading="lazy" data-nuxt-img srcset="/.netlify/images?url=%2Fimages%2Fbg-ticket-tablet.svg 1x, /.netlify/images?url=%2Fimages%2Fbg-ticket-tablet.svg 2x" src="/.netlify/images?url=%2Fimages%2Fbg-ticket-tablet.svg" class="hidden md:inline-block xl:hidden"><img onerror="this.setAttribute(&#39;data-error&#39;, 1)" loading="lazy" data-nuxt-img srcset="/.netlify/images?url=%2Fimages%2Fbg-ticket-mobile.svg 1x, /.netlify/images?url=%2Fimages%2Fbg-ticket-mobile.svg 2x" src="/.netlify/images?url=%2Fimages%2Fbg-ticket-mobile.svg" class="md:hidden"></div><div class="box relative flex flex-col items-center justify-between gap-8 rounded-2xl bg-gradient-to-b from-eerie-black to-cool-black px-4 md:gap-16 md:px-8 xl:flex-row xl:gap-32"><div class="flex-1 py-5 md:py-8">
25<p class="w-fit rounded-full border border-cool-green bg-cool-green/30 px-2 py-1 text-xs font-medium uppercase text-cool-green"> Online Workshop </p><a href="/workshops/building-a-google-docs-clone-with-ckeditor-5-and-vuejs" class="relative mt-5 block text-2xl font-bold leading-tight text-white hover:text-cool-green md:text-left md:text-3xl">Building a Google Docs Clone with CKEditor 5 and Vue.js</a><div class="mt-5 flex w-full flex-wrap items-center gap-8"><!--[--><div class="flex items-center gap-2 text-cadet-gray"><img onerror="this.setAttribute(&#39;data-error&#39;, 1)" loading="lazy" data-nuxt-img srcset="/.netlify/images?url=%2Fimages%2Fpill-person.svg 1x, /.netlify/images?url=%2Fimages%2Fpill-person.svg 2x" src="/.netlify/images?url=%2Fimages%2Fpill-person.svg" class="size-5"><span class="inline-flex text-sm font-bold md:text-base">Sold Out <!----></span></div><div class="flex items-center gap-2 text-cadet-gray"><img onerror="this.setAttribute(&#39;data-error&#39;, 1)" loading="lazy" data-nuxt-img srcset="/.netlify/images?url=%2Fimages%2Fpill-calendar.svg 1x, /.netlify/images?url=%2Fimages%2Fpill-calendar.svg 2x" src="/.netlify/images?url=%2Fimages%2Fpill-calendar.svg" class="size-5"><span class="inline-flex text-sm font-bold md:text-base">December 2 <!----></span></div><div class="flex items-center gap-2 text-cadet-gray"><img onerror="this.setAttribute(&#39;data-error&#39;, 1)" loading="lazy" data-nuxt-img srcset="/.netlify/images?url=%2Fimages%2Fpill-clock.svg 1x, /.netlify/images?url=%2Fimages%2Fpill-clock.svg 2x" src="/.netlify/images?url=%2Fimages%2Fpill-clock.svg" class="size-5"><span class="inline-flex text-sm font-bold md:text-base">2:00 PM UTC <span class="block text-cadet-gray"> (2 hrs) </span></span></div><div class="flex items-center gap-2 text-cadet-gray"><img onerror="this.setAttribute(&#39;data-error&#39;, 1)" loading="lazy" data-nuxt-img srcset="/.netlify/images?url=%2Fimages%2Fpill-location.svg 1x, /.netlify/images?url=%2Fimages%2Fpill-location.svg 2x" src="/.netlify/images?url=%2Fimages%2Fpill-location.svg" class="size-5"><span class="inline-flex text-sm font-bold md:text-base">Airmeet <!----></span></div><div class="hidden flex items-center gap-2 text-cadet-gray"><img onerror="this.setAttribute(&#39;data-error&#39;, 1)" loading="lazy" data-nuxt-img srcset="/.netlify/images?url=%2Fimages%2Fpill-price.svg 1x, /.netlify/images?url=%2Fimages%2Fpill-price.svg 2x" src="/.netlify/images?url=%2Fimages%2Fpill-price.svg" class="size-5"><span class="inline-flex text-sm font-bold md:text-base">FREE <!----></span></div><!--]--></div><!----><p class="mt-6 line-clamp-4 text-left text-sm leading-normal text-cadet-gray">In this hands-on workshop, attendees will dive into creating a powerful, Google Docs-like collaborative editor using CKEditor 5 and Vue.js.</p><div class="mt-4 flex items-center justify-start gap-6 md:mt-10"><!--[--><div class="flex items-center gap-2 md:gap-4"><div class="size-6 md:size-10"><img onerror="this.setAttribute(&#39;data-error&#39;, 1)" alt="Vadim Smirnov" loading="lazy" data-nuxt-img srcset="/.netlify/images?url=https:%2F%2Fconference.vueschool.io%2Fstorage%2F5ZNA23FIESQx56K3YYU0eE6bwC28XXirv8VRNoTO.webp 1x, /.netlify/images?url=https:%2F%2Fconference.vueschool.io%2Fstorage%2F5ZNA23FIESQx56K3YYU0eE6bwC28XXirv8VRNoTO.webp 2x" src="/.netlify/images?url=https:%2F%2Fconference.vueschool.io%2Fstorage%2F5ZNA23FIESQx56K3YYU0eE6bwC28XXirv8VRNoTO.webp" class="rounded-full"></div><span class="font-medium text-white">Vadim Smirnov</span></div><!--]--></div><div class="mt-5 text-4xl font-bold text-cool-green">FREE</div><div class="relative mt-5 w-full xl:w-fit"><button disabled class="relative mt-5 w-full xl:w-fit whitespace-no-wrap inline-flex cursor-pointer items-center justify-center rounded-lg border border-charcoal bg-gradient-to-b from-[#1E293A] to-[#0F172A] px-8 py-4 font-medium text-white transition-all hover:border-cool-green hover:bg-gradient-to-b hover:from-cool-green/30 hover:to-dark-green/30 hover:text-cool-green disabled:pointer-events-none disabled:opacity-50 pointer-events-none">Registration Closed</button><!----></div></div></div></div><div class="relative"><div class="absolute inset-0 z-0 my-10 hidden xl:block" style="box-shadow:0 9px 53px 0 rgba(0, 0, 0, 0.1);"></div><div class="relative z-10 hidden"><img onerror="this.setAttribute(&#39;data-error&#39;, 1)" loading="lazy" data-nuxt-img srcset="/.netlify/images?url=%2Fimages%2Fbg-ticket-desktop.svg 1x, /.netlify/images?url=%2Fimages%2Fbg-ticket-desktop.svg 2x" src="/.netlify/images?url=%2Fimages%2Fbg-ticket-desktop.svg" class="hidden xl:inline-block"><img onerror="this.setAttribute(&#39;data-error&#39;, 1)" loading="lazy" data-nuxt-img srcset="/.netlify/images?url=%2Fimages%2Fbg-ticket-tablet.svg 1x, /.netlify/images?url=%2Fimages%2Fbg-ticket-tablet.svg 2x" src="/.netlify/images?url=%2Fimages%2Fbg-ticket-tablet.svg" class="hidden md:inline-block xl:hidden"><img onerror="this.setAttribute(&#39;data-error&#39;, 1)" loading="lazy" data-nuxt-img srcset="/.netlify/images?url=%2Fimages%2Fbg-ticket-mobile.svg 1x, /.netlify/images?url=%2Fimages%2Fbg-ticket-mobile.svg 2x" src="/.netlify/images?url=%2Fimages%2Fbg-ticket-mobile.svg" class="md:hidden"></div><div class="box relative flex flex-col items-center justify-between gap-8 rounded-2xl bg-gradient-to-b from-eerie-black to-cool-black px-4 md:gap-16 md:px-8 xl:flex-row xl:gap-32"><div class="flex-1 py-5 md:py-8">
25<p class="w-fit rounded-full border border-cool-green bg-cool-green/30 px-2 py-1 text-xs font-medium uppercase text-cool-green"> Online Workshop </p><a href="/workshops/nuxt-fundamentals-workshop" class="relative mt-5 block text-2xl font-bold leading-tight text-white hover:text-cool-green md:text-left md:text-3xl">Nuxt Fundamentals Workshop</a><div class="mt-5 flex w-full flex-wrap items-center gap-8"><!--[--><div class="flex items-center gap-2 text-cadet-gray"><img onerror="this.setAttribute(&#39;data-error&#39;, 1)" loading="lazy" data-nuxt-img srcset="/.netlify/images?url=%2Fimages%2Fpill-person.svg 1x, /.netlify/images?url=%2Fimages%2Fpill-person.svg 2x" src="/.netlify/images?url=%2Fimages%2Fpill-person.svg" class="size-5"><span class="inline-flex text-sm font-bold md:text-base">Sold Out <!----></span></div><div class="flex items-center gap-2 text-cadet-gray"><img onerror="this.setAttribute(&#39;data-error&#39;, 1)" loading="lazy" data-nuxt-img srcset="/.netlify/images?url=%2Fimages%2Fpill-calendar.svg 1x, /.netlify/images?url=%2Fimages%2Fpill-calendar.svg 2x" src="/.netlify/images?url=%2Fimages%2Fpill-calendar.svg" class="size-5"><span class="inline-flex text-sm font-bold md:text-base">December 5 <!----></span></div><div class="flex items-center gap-2 text-cadet-gray"><img onerror="this.setAttribute(&#39;data-error&#39;, 1)" loading="lazy" data-nuxt-img srcset="/.netlify/images?url=%2Fimages%2Fpill-clock.svg 1x, /.netlify/images?url=%2Fimages%2Fpill-clock.svg 2x" src="/.netlify/images?url=%2Fimages%2Fpill-clock.svg" class="size-5"><span class="inline-flex text-sm font-bold md:text-base">2:00 PM UTC <span class="block text-cadet-gray"> (5 hrs) </span></span></div><div class="flex items-center gap-2 text-cadet-gray"><img onerror="this.setAttribute(&#39;data-error&#39;, 1)" loading="lazy" data-nuxt-img srcset="/.netlify/images?url=%2Fimages%2Fpill-location.svg 1x, /.netlify/images?url=%2Fimages%2Fpill-location.svg 2x" src="/.netlify/images?url=%2Fimages%2Fpill-location.svg" class="size-5"><span class="inline-flex text-sm font-bold md:text-base">Airmeet <!----></span></div><div class="hidden flex items-center gap-2 text-cadet-gray"><img onerror="this.setAttribute(&#39;data-error&#39;, 1)" loading="lazy" data-nuxt-img srcset="/.netlify/images?url=%2Fimages%2Fpill-price.svg 1x, /.netlify/images?url=%2Fimages%2Fpill-price.svg 2x" src="/.netlify/images?url=%2Fimages%2Fpill-price.svg" class="size-5"><span class="inline-flex text-sm font-bold md:text-base">$ 299 <!----></span></div><!--]--></div><div class="mt-5 text-lg font-bold text-cool-green">Use Code NUXTNATION24 at checkout for an extra $50 OFF!</div><p class="mt-6 line-clamp-4 text-left text-sm leading-normal text-cadet-gray">Nuxt is a framework built on top of Vue.js and is based on a powerful modular architecture. You can choose from more than 50 modules to make your development faster and easier. You don&#39;t have to reinvent the wheel to get PWA benefits, add Google Analytics to your page or generate a sitemap.</p><div class="mt-4 flex items-center justify-start gap-6 md:mt-10"><!--[--><div class="flex items-center gap-2 md:gap-4"><div class="size-6 md:size-10"><img onerror="this.setAttribute(&#39;data-error&#39;, 1)" alt="Daniel Kelly" loading="lazy" data-nuxt-img srcset="/.netlify/images?url=https:%2F%2Fconference.vueschool.io%2Fstorage%2FeRawEczKosrW9OI6uAs6TqJmdS47qQn5PHEuhnTy.jpg 1x, /.netlify/images?url=https:%2F%2Fconference.vueschool.io%2Fstorage%2FeRawEczKosrW9OI6uAs6TqJmdS47qQn5PHEuhnTy.jpg 2x" src="/.netlify/images?url=https:%2F%2Fconference.vueschool.io%2Fstorage%2FeRawEczKosrW9OI6uAs6TqJmdS47qQn5PHEuhnTy.jpg" class="rounded-full"></div><span class="font-medium text-white">Daniel Kelly</span></div><!--]--></div><div class="mt-5 text-4xl font-bold text-cool-green">$ 299</div><div class="relative mt-5 w-full xl:w-fit"><button disabled class="relative mt-5 w-full xl:w-fit whitespace-no-wrap inline-flex cursor-pointer items-center justify-center rounded-lg border border-charcoal bg-gradient-to-b from-[#1E293A] to-[#0F172A] px-8 py-4 font-medium text-white transition-all hover:border-cool-green hover:bg-gradient-to-b hover:from-cool-green/30 hover:to-dark-green/30 hover:text-cool-green disabled:pointer-events-none disabled:opacity-50 pointer-events-none">Registration Closed</button><!----></div></div></div></div><div class="relative"><div class="absolute inset-0 z-0 my-10 hidden xl:block" style="box-shadow:0 9px 53px 0 rgba(0, 0, 0, 0.1);"></div><div class="relative z-10 hidden"><img onerror="this.setAttribute(&#39;data-error&#39;, 1)" loading="lazy" data-nuxt-img srcset="/.netlify/images?url=%2Fimages%2Fbg-ticket-desktop.svg 1x, /.netlify/images?url=%2Fimages%2Fbg-ticket-desktop.svg 2x" src="/.netlify/images?url=%2Fimages%2Fbg-ticket-desktop.svg" class="hidden xl:inline-block"><img onerror="this.setAttribute(&#39;data-error&#39;, 1)" loading="lazy" data-nuxt-img srcset="/.netlify/images?url=%2Fimages%2Fbg-ticket-tablet.svg 1x, /.netlify/images?url=%2Fimages%2Fbg-ticket-tablet.svg 2x" src="/.netlify/images?url=%2Fimages%2Fbg-ticket-tablet.svg" class="hidden md:inline-block xl:hidden"><img onerror="this.setAttribute(&#39;data-error&#39;, 1)" loading="lazy" data-nuxt-img srcset="/.netlify/images?url=%2Fimages%2Fbg-ticket-mobile.svg 1x, /.netlify/images?url=%2Fimages%2Fbg-ticket-mobile.svg 2x" src="/.netlify/images?url=%2Fimages%2Fbg-ticket-mobile.svg" class="md:hidden"></div><div class="box relative flex flex-col items-center justify-between gap-8 rounded-2xl bg-gradient-to-b from-eerie-black to-cool-black px-4 md:gap-16 md:px-8 xl:flex-row xl:gap-32"><div class="flex-1 py-5 md:py-8">
25<p class="w-fit rounded-full border border-cool-green bg-cool-green/30 px-2 py-1 text-xs font-medium uppercase text-cool-green"> Online Workshop </p><a href="/workshops/crash-course-into-the-jamstack-with-nuxt-and-storyblok" class="relative mt-5 block text-2xl font-bold leading-tight text-white hover:text-cool-green md:text-left md:text-3xl">Crash Course into the Jamstack with Nuxt &amp; Storyblok</a><div class="mt-5 flex w-full flex-wrap items-center gap-8"><!--[--><div class="flex items-center gap-2 text-cadet-gray"><img onerror="this.setAttribute(&#39;data-error&#39;, 1)" loading="lazy" data-nuxt-img srcset="/.netlify/images?url=%2Fimages%2Fpill-person.svg 1x, /.netlify/images?url=%2Fimages%2Fpill-person.svg 2x" src="/.netlify/images?url=%2Fimages%2Fpill-person.svg" class="size-5"><span class="inline-flex text-sm font-bold md:text-base">Sold Out <!----></span></div><div class="flex items-center gap-2 text-cadet-gray"><img onerror="this.setAttribute(&#39;data-error&#39;, 1)" loading="lazy" data-nuxt-img srcset="/.netlify/images?url=%2Fimages%2Fpill-calendar.svg 1x, /.netlify/images?url=%2Fimages%2Fpill-calendar.svg 2x" src="/.netlify/images?url=%2Fimages%2Fpill-calendar.svg" class="size-5"><span class="inline-flex text-sm font-bold md:text-base">September 29 <!----></span></div><div class="flex items-center gap-2 text-cadet-gray"><img onerror="this.setAttribute(&#39;data-error&#39;, 1)" loading="lazy" data-nuxt-img srcset="/.netlify/images?url=%2Fimages%2Fpill-clock.svg 1x, /.netlify/images?url=%2Fimages%2Fpill-clock.svg 2x" src="/.netlify/images?url=%2Fimages%2Fpill-clock.svg" class="size-5"><span class="inline-flex text-sm font-bold md:text-base">1:00 PM UTC <span class="block text-cadet-gray"> (3h) </span></span></div><div class="flex items-center gap-2 text-cadet-gray"><img onerror="this.setAttribute(&#39;data-error&#39;, 1)" loading="lazy" data-nuxt-img srcset="/.netlify/images?url=%2Fimages%2Fpill-location.svg 1x, /.netlify/images?url=%2Fimages%2Fpill-location.svg 2x" src="/.netlify/images?url=%2Fimages%2Fpill-location.svg" class="size-5"><span class="inline-flex text-sm font-bold md:text-base">Online <!----></span></div><div class="hidden flex items-center gap-2 text-cadet-gray"><img onerror="this.setAttribute(&#39;data-error&#39;, 1)" loading="lazy" data-nuxt-img srcset="/.netlify/images?url=%2Fimages%2Fpill-price.svg 1x, /.netlify/images?url=%2Fimages%2Fpill-price.svg 2x" src="/.netlify/images?url=%2Fimages%2Fpill-price.svg" class="size-5"><span class="inline-flex text-sm font-bold md:text-base">FREE <!----></span></div><!--]--></div><!----><p class="mt-6 line-clamp-4 text-left text-sm leading-normal text-cadet-gray">You may read already about the Jamstack. You probably already used Nuxt, and recently you may hear a lot about going headless. In this course, we will put all the pieces together, and I will show you why the Storyblok in combination with Nuxt is the best combo for your next project.</p><div class="mt-4 flex items-center justify-start gap-6 md:mt-10"><!--[--><div class="flex items-center gap-2 md:gap-4"><div class="size-6 md:size-10"><img onerror="this.setAttribute(&#39;data-error&#39;, 1)" alt="Samuel Snopko" loading="lazy" data-nuxt-img srcset="/.netlify/images?url=https:%2F%2Fconference.vueschool.io%2Fstorage%2FRKlP7HyaV98hUxZcI6XBRZ4GRrFGstGOpHefwsPG.jpg 1x, /.netlify/images?url=https:%2F%2Fconference.vueschool.io%2Fstorage%2FRKlP7HyaV98hUxZcI6XBRZ4GRrFGstGOpHefwsPG.jpg 2x" src="/.netlify/images?url=https:%2F%2Fconference.vueschool.io%2Fstorage%2FRKlP7HyaV98hUxZcI6XBRZ4GRrFGstGOpHefwsPG.jpg" class="rounded-full"></div><span class="font-medium text-white">Samuel Snopko</span></div><!--]--></div><div class="mt-5 text-4xl font-bold text-cool-green">FREE</div><div class="relative mt-5 w-full xl:w-fit"><button disabled class="relative mt-5 w-full xl:w-fit whitespace-no-wrap inline-flex cursor-pointer items-center justify-center rounded-lg border border-charcoal bg-gradient-to-b from-[#1E293A] to-[#0F172A] px-8 py-4 font-medium text-white transition-all hover:border-cool-green hover:bg-gradient-to-b hover:from-cool-green/30 hover:to-dark-green/30 hover:text-cool-green disabled:pointer-events-none disabled:opacity-50 pointer-events-none">Registration Closed</button><!----></div></div></div></div><div class="relative"><div class="absolute inset-0 z-0 my-10 hidden xl:block" style="box-shadow:0 9px 53px 0 rgba(0, 0, 0, 0.1);"></div><div class="relative z-10 hidden"><img onerror="this.setAttribute(&#39;data-error&#39;, 1)" loading="lazy" data-nuxt-img srcset="/.netlify/images?url=%2Fimages%2Fbg-ticket-desktop.svg 1x, /.netlify/images?url=%2Fimages%2Fbg-ticket-desktop.svg 2x" src="/.netlify/images?url=%2Fimages%2Fbg-ticket-desktop.svg" class="hidden xl:inline-block"><img onerror="this.setAttribute(&#39;data-error&#39;, 1)" loading="lazy" data-nuxt-img srcset="/.netlify/images?url=%2Fimages%2Fbg-ticket-tablet.svg 1x, /.netlify/images?url=%2Fimages%2Fbg-ticket-tablet.svg 2x" src="/.netlify/images?url=%2Fimages%2Fbg-ticket-tablet.svg" class="hidden md:inline-block xl:hidden"><img onerror="this.setAttribute(&#39;data-error&#39;, 1)" loading="lazy" data-nuxt-img srcset="/.netlify/images?url=%2Fimages%2Fbg-ticket-mobile.svg 1x, /.netlify/images?url=%2Fimages%2Fbg-ticket-mobile.svg 2x" src="/.netlify/images?url=%2Fimages%2Fbg-ticket-mobile.svg" class="md:hidden"></div><div class="box relative flex flex-col items-center justify-between gap-8 rounded-2xl bg-gradient-to-b from-eerie-black to-cool-black px-4 md:gap-16 md:px-8 xl:flex-row xl:gap-32"><div class="flex-1 py-5 md:py-8">
25<p class="w-fit rounded-full border border-cool-green bg-cool-green/30 px-2 py-1 text-xs font-medium uppercase text-cool-green"> Online Workshop </p><a href="/workshops/vuejs-fundamentals" class="relative mt-5 block text-2xl font-bold leading-tight text-white hover:text-cool-green md:text-left md:text-3xl">Vue.js Fundamentals</a><div class="mt-5 flex w-full flex-wrap items-center gap-8"><!--[--><div class="flex items-center gap-2 text-cadet-gray"><img onerror="this.setAttribute(&#39;data-error&#39;, 1)" loading="lazy" data-nuxt-img srcset="/.netlify/images?url=%2Fimages%2Fpill-person.svg 1x, /.netlify/images?url=%2Fimages%2Fpill-person.svg 2x" src="/.netlify/images?url=%2Fimages%2Fpill-person.svg" class="size-5"><span class="inline-flex text-sm font-bold md:text-base">Sold Out <!----></span></div><div class="flex items-center gap-2 text-cadet-gray"><img onerror="this.setAttribute(&#39;data-error&#39;, 1)" loading="lazy" data-nuxt-img srcset="/.netlify/images?url=%2Fimages%2Fpill-calendar.svg 1x, /.netlify/images?url=%2Fimages%2Fpill-calendar.svg 2x" src="/.netlify/images?url=%2Fimages%2Fpill-calendar.svg" class="size-5"><span class="inline-flex text-sm font-bold md:text-base">September 30 <!----></span></div><div class="flex items-center gap-2 text-cadet-gray"><img onerror="this.setAttribute(&#39;data-error&#39;, 1)" loading="lazy" data-nuxt-img srcset="/.netlify/images?url=%2Fimages%2Fpill-clock.svg 1x, /.netlify/images?url=%2Fimages%2Fpill-clock.svg 2x" src="/.netlify/images?url=%2Fimages%2Fpill-clock.svg" class="size-5"><span class="inline-flex text-sm font-bold md:text-base">1:00 PM UTC <span class="block text-cadet-gray"> (3h) </span></span></div><div class="flex items-center gap-2 text-cadet-gray"><img onerror="this.setAttribute(&#39;data-error&#39;, 1)" loading="lazy" data-nuxt-img srcset="/.netlify/images?url=%2Fimages%2Fpill-location.svg 1x, /.netlify/images?url=%2Fimages%2Fpill-location.svg 2x" src="/.netlify/images?url=%2Fimages%2Fpill-location.svg" class="size-5"><span class="inline-flex text-sm font-bold md:text-base">Online <!----></span></div><div class="hidden flex items-center gap-2 text-cadet-gray"><img onerror="this.setAttribute(&#39;data-error&#39;, 1)" loading="lazy" data-nuxt-img srcset="/.netlify/images?url=%2Fimages%2Fpill-price.svg 1x, /.netlify/images?url=%2Fimages%2Fpill-price.svg 2x" src="/.netlify/images?url=%2Fimages%2Fpill-price.svg" class="size-5"><span class="inline-flex text-sm font-bold md:text-base">FREE <!----></span></div><!--]--></div><!----><p class="mt-6 line-clamp-4 text-left text-sm leading-normal text-cadet-gray">In the Vue.js Fundamentals workshop, you will learn all the essential features of Vue.js and get a solid foundation of Vue skills by the end of the day. We will start from the very basics and teach you all there is to know about Vue.js. Throughout the day you will practice what you learn by working on a lot of hands-on assignments with live help from the trainers.</p><div class="mt-4 flex items-center justify-start gap-6 md:mt-10"><!--[--><div class="flex items-center gap-2 md:gap-4"><div class="size-6 md:size-10"><img onerror="this.setAttribute(&#39;data-error&#39;, 1)" alt="Alex Kyriakidis" loading="lazy" data-nuxt-img srcset="/.netlify/images?url=https:%2F%2Fconference.vueschool.io%2Fstorage%2F4rJ4EbfxpYhETYCrVeCAXmPd41XKd0uRqmZwY3cP.jpg 1x, /.netlify/images?url=https:%2F%2Fconference.vueschool.io%2Fstorage%2F4rJ4EbfxpYhETYCrVeCAXmPd41XKd0uRqmZwY3cP.jpg 2x" src="/.netlify/images?url=https:%2F%2Fconference.vueschool.io%2Fstorage%2F4rJ4EbfxpYhETYCrVeCAXmPd41XKd0uRqmZwY3cP.jpg" class="rounded-full"></div><span class="font-medium text-white">Alex Kyriakidis</span></div><div class="flex items-center gap-2 md:gap-4"><div class="size-6 md:size-10"><img onerror="this.setAttribute(&#39;data-error&#39;, 1)" alt="Daniel Kelly" loading="lazy" data-nuxt-img srcset="/.netlify/images?url=https:%2F%2Fconference.vueschool.io%2Fstorage%2FeRawEczKosrW9OI6uAs6TqJmdS47qQn5PHEuhnTy.jpg 1x, /.netlify/images?url=https:%2F%2Fconference.vueschool.io%2Fstorage%2FeRawEczKosrW9OI6uAs6TqJmdS47qQn5PHEuhnTy.jpg 2x" src="/.netlify/images?url=https:%2F%2Fconference.vueschool.io%2Fstorage%2FeRawEczKosrW9OI6uAs6TqJmdS47qQn5PHEuhnTy.jpg" class="rounded-full"></div><span class="font-medium text-white">Daniel Kelly</span></div><!--]--></div><div class="mt-5 text-4xl font-bold text-cool-green">FREE</div><div class="relative mt-5 w-full xl:w-fit"><button disabled class="relative mt-5 w-full xl:w-fit whitespace-no-wrap inline-flex cursor-pointer items-center justify-center rounded-lg border border-charcoal bg-gradient-to-b from-[#1E293A] to-[#0F172A] px-8 py-4 font-medium text-white transition-all hover:border-cool-green hover:bg-gradient-to-b hover:from-cool-green/30 hover:to-dark-green/30 hover:text-cool-green disabled:pointer-events-none disabled:opacity-50 pointer-events-none">Registration Closed</button><!----></div></div></div></div><!--]--></div></div><!--]--><!--]--></div><div class=""><div class="mx-4 md:mx-10 xl:mx-auto xl:max-w-screen-xl"><div class="flex flex-col divide-y py-10 md:pt-20"><div class="grid gap-16 pb-14 md:grid-cols-4 md:gap-4"><div class="flex w-full flex-col items-center md:items-center"><a href="/" class=""><img onerror="this.setAttribute(&#39;data-error&#39;, 1)" alt="Nuxt Nation Logo" loading="lazy" data-nuxt-img srcset="/.netlify/images?url=%2Fimages%2Flogo-nuxtnation.svg 1x, /.netlify/images?url=%2Fimages%2Flogo-nuxtnation.svg 2x" class="" src="/.netlify/images?url=%2Fimages%2Flogo-nuxtnation.svg"></a></div><!--[--><div class="flex flex-col items-center space-y-4 md:items-start"><div class="text-sm font-bold text-white">QUICK LINKS</div><div class="item flex flex-col gap-2 md:items-start"><!--[--><a target="_blank" href="https://forms.gle/87zg7rQ6iQUVWUAx5" class="mx-auto block w-fit text-cadet-gray hover:text-caribbean-green md:mx-0"><span>
25Sponsorship Opportunities</span></a><a target="_blank" href="/legal/code-of-conduct" class="mx-auto block w-fit text-cadet-gray hover:text-caribbean-green md:mx-0"><span>Code of Conduct</span></a><a target="_blank" href="/legal/terms-and-conditions" class="mx-auto block w-fit text-cadet-gray hover:text-caribbean-green md:mx-0"><span>Terms and Conditions</span></a><a target="_blank" href="/legal/data-policy" class="mx-auto block w-fit text-cadet-gray hover:text-caribbean-green md:mx-0"><span>Data Policy</span></a><!--]--></div></div><div class="flex flex-col items-center space-y-4 md:items-start"><div class="text-sm font-bold text-white">PREVIOUS EVENTS</div><div class="item flex flex-col gap-2 md:items-start"><!--[--><a target="_blank" href="https://vuejsnation.com" class="mx-auto block w-fit text-cadet-gray hover:text-caribbean-green md:mx-0"><img onerror="this.setAttribute(&#39;data-error&#39;, 1)" alt="Vue.js Nation" loading="lazy" data-nuxt-img srcset="/.netlify/images?url=%2Fimages%2Flogo-vuejs-nation.svg 1x, /.netlify/images?url=%2Fimages%2Flogo-vuejs-nation.svg 2x" class="" src="/.netlify/images?url=%2Fimages%2Flogo-vuejs-nation.svg"></a><a target="_blank" href="https://vuejsforge.com" class="mx-auto block w-fit text-cadet-gray hover:text-caribbean-green md:mx-0"><img onerror="this.setAttribute(&#39;data-error&#39;, 1)" alt="Vue.js Forge" loading="lazy" data-nuxt-img srcset="/.netlify/images?url=%2Fimages%2Flogo-vuejs-forge.svg 1x, /.netlify/images?url=%2Fimages%2Flogo-vuejs-forge.svg 2x" class="" src="/.netlify/images?url=%2Fimages%2Flogo-vuejs-forge.svg"></a><a target="_blank" href="https://frontendnation.com" class="mx-auto block w-fit text-cadet-gray hover:text-caribbean-green md:mx-0"><img onerror="this.setAttribute(&#39;data-error&#39;, 1)" alt="Frontend Nation" loading="lazy" data-nuxt-img srcset="/.netlify/images?url=%2Fimages%2Flogo-frontend-nation.svg 1x, /.netlify/images?url=%2Fimages%2Flogo-frontend-nation.svg 2x" class="" src="/.netlify/images?url=%2Fimages%2Flogo-frontend-nation.svg"></a><!--]--></div></div><div class="flex flex-col items-center space-y-4 md:items-start"><div class="text-sm font-bold text-white">PREVIOUS EDITIONS</div><div class="item flex flex-col gap-2 md:items-start"><!--[--><a target="_blank" href="/2021" class="mx-auto block w-fit text-cadet-gray hover:text-caribbean-green md:mx-0"><span>Nuxt Nation 2021</span></a><a target="_blank" href="/2022" class="mx-auto block w-fit text-cadet-gray hover:text-caribbean-green md:mx-0"><span>Nuxt Nation 2022</span></a><a target="_blank" href="/2023" class="mx-auto block w-fit text-cadet-gray hover:text-caribbean-green md:mx-0"><span>Nuxt Nation 2023</span></a><a target="_blank" href="/2024" class="mx-auto block w-fit text-cadet-gray hover:text-caribbean-green md:mx-0"><span>Nuxt Nation 2024</span></a><!--]--></div></div><!--]--></div></div></div><div class="bg-cool-green py-4 text-center text-sm text-rich-black"> © All rights reserved. Made with ❤️ by <a href="https://bitterbrains.com" target="_blank" class="hover:opacity-75">BitterBrains, Inc.</a></div></div></div><!--]--><!----></div></div><div id="teleports"></div>
25<script type="application/json" id="__NUXT_DATA__" data-ssr="true">[["Reactive",1],{"data":2,"state":4,"once":6,"_errors":7,"serverRendered":9,"path":10,"pinia":11},{"e0iCBNQUE6":3},[],{"$snuxt-delay-hydration-mode":5},"mount",["Set"],{"e0iCBNQUE6":8},null,true,"/workshops",{"conferences":12,"workshops":89},{"isLoading":13,"list":15,"editions":70,"showRegistrationModal":86,"registrationEmail":87},["EmptyRef",14],"false",["Ref",16],["Reactive",17],[18],{"id":19,"name":20,"slug":21,"ticket_enabled":22,"badge_url":8,"drip_conference_title":20,"starts_at":23,"ends_at":24,"registration_starts_at":8,"registration_ends_at":8,"dates_for_humans":8,"edition_name":25,"edition_slug":26,"website_url":27,"website_success_url":28,"is_mentorship_open":22,"is_papers_open":22,"is_profiling_required":22,"is_sponsorship_open":9,"is_streaming_open":22,"is_support_package_available":22,"is_call_booking_enabled":22,"is_calendar_enabled":22,"is_community_partners_form_enabled":29,"is_main_sponsor_offer_available":22,"has_speakers_to_be_announced":22,"links_mentorship":8,"links_papers":30,"links_profiling":8,"links_sponsorship":31,"links_streaming":8,"links_support_package":8,"links_call_booking":8,"links_calendar":8,"links_replay_day_1":8,"links_replay_day_2":8,"links_replay_day_3":8,"links_replay_day_4":8,"recordings":32,"videos":33,"links_live_qa":8,"links_community_partners":8,"github_client_id":34,"discord_client_id":8,"is_volunteer_form_enabled":22,"links_volunteer":8,"share_twitter_text":35,"share_email_subject":36,"faq":8,"shares":37,"has_ended":9,"teaming_mode":54,"attendees_per_team":8,"speakers":55,"past_speakers":56,"sponsors_list":57,"past_sponsors":58,"schedule":59,"tags":60,"forge_categories":61,"title_sponsor":8,"copy":62,"isLive":22},19,"Nuxt Nation 2025","nuxt-nation-2025",false,"2025-11-12T14:00:00.000000Z","2025-11-13T21:00:00.000000Z","Episode 5","2025","https://nuxtnation.com","https://nuxtnation.com/registration/success",1,"https://forms.gle/nzB8sL3U5kmAWrBR7","https://forms.gle/87zg7rQ6iQUVWUAx5",[],[],"Ov23li8diNuoHAUmOoHK","I am going to watch the Nuxt experts sharing their knowledge at the biggest Nuxt online conference @NuxtNation for FREE.\r\n\r\nClaim your own ticket now👇🏻\r\nnuxtnation.com \r\n\r\n#NuxtNation25 #NN25Ticket","Join Nuxt Nation 2025",[38,42,46,50],{"id":39,"label":40,"link":41},"twitter","Share on Twitter","https://twitter.com/intent/tweet?text=I+am+going+to+watch+the+Nuxt+experts+sharing+their+knowledge+at+the+biggest+Nuxt+online+conference+%40NuxtNation+for+FREE.%0D%0A%0D%0AClaim+your+own+ticket+now%F0%9F%91%87%F0%9F%8F%BB%0D%0Anuxtnation.com+%0D%0A%0D%0A%23NuxtNation25+%23NN25Ticket",{"id":43,"label":44,"link":45},"linkedin","Share on LinkedIn","http://www.linkedin.com/shareArticle?mini=true&url=https://nuxtnation.com",{"id":47,"label":48,"link":49},"email","Share via Email","mailto:?subject=Join Nuxt Nation 2025&body=https://nuxtnation.com",{"id":51,"label":52,"link":53},"facebook","Share via Facebook","https://www.facebook.com/sharer/sharer.php?u=https://nuxtnation.com","VIA_ACTION",[],[],[],[],[],[],[],{"hero_tag":63,"hero_text":64,"hero_title":65,"speakers_title":66,"show_title_sponsor":67,"previous_sponsors_title":68,"community_partners_title":69},"Free Online Live Event","Join over 21,000 fellow Nuxt & Vue.js Developers to learn everything Nuxt has to offer in 2025! Get a chance to speak and interact with Nuxt Core team members, industry experts, and contributors during live Q&A sessions!","The Largest Nuxt Conference","Nuxt creators and community experts are joining forces in Nuxt Nation","1","Our Previous Sponsors From Last Year","Our Community Partners",["Ref",71],["Reactive",72],[73,76,79,82,85],{"id":74,"slug":75,"isDefault":22,"canRegister":22},"2021","nuxt-nation",{"id":77,"slug":78,"isDefault":22,"canRegister":22},"2022","nuxt-nation-2022",{"id":80,"slug":81,"isDefault":22,"canRegister":22},"2023","nuxt-nation-2023",{"id":83,"slug":84,"isDefault":22,"canRegister":22},"2024","nuxt-nation-2024",{"id":26,"slug":21,"isDefault":9,"canRegister":22},["EmptyRef",14],["EmptyRef",88],"null",{"isLoading":90,"list":91},["EmptyRef",14],["Ref",92],["Reactive",93],[94,136,190,235,276,317,352,387],{"id":29,"slug":95,"name":96,"image":8,"description":97,"tagline":8,"content":98,"platform":99,"schedule":100,"seats":101,"duration":102,"taken":103,"remaining":29,"is_sold_out":104,"speakers":105,"sorting_order":8,"is_past":9,"conference_id":29,"topics":107,"target":108,"instructors":109,"is_raffle":104,"price":104,"purchase_link_team":8,"purchase_link_single":8,"external_link":8,"html":120,"pills":121,"date":127,"time":130,"isPast":9,"isAvailable":22},"crash-course-into-the-jamstack-with-nuxt-and-storyblok","Crash Course into the Jamstack with Nuxt & Storyblok","You may read already about the Jamstack. You probably already used Nuxt, and recently you may hear a lot about going headless. In this course, we will put all the pieces together, and I will show you why the Storyblok in combination with Nuxt is the best combo for your next project.","You may read already about the Jamstack. You probably already used Nuxt, and recently you may hear a lot about the headless CMSs. In this quick course, we will put all the pieces together, and I will show you why the Storyblok in combination with Nuxt is the best combo for your next project. Stop by and try it yourself!\r\n\r\n---\r\n\r\n## Agenda\r\n\r\n- Introduction into the Jamstack & headless world\r\n- Understand the power of the atomic design\r\n- Environment setup\r\n- Creating the first page\r\n- Creating article pages & understand how the dynamic routing works\r\n- Deployment to Live\r\n- Future tips and Q&A\r\n\r\n---\r\n\r\n## What will the attendees learn?\r\n\r\nGraduates of this course will learn to look differently on the project from the whole start and will be able to build their first Jamstack website with Nuxt at the end.","Online","2021-09-29T13:00:00.000000Z",400,"3h",399,0,[106],"samuel_snopko",[],"This course is made for all developers who wants to learn build the websites/apps in the world of Jamstack and Headless CMS. Only the basic experience are required, but also the experts may learn new approaches to build/designing the future with headless CMS and Nuxt.",[110],{"id":106,"name":111,"role":112,"image":114,"company_image":115,"image_pop_art":8,"twitter":116,"github":117,"bluesky":8,"youtube":8,"linkedin":8,"bio":118,"bio_html":119},"Samuel Snopko",[113],"Head of Product at Storyblok","https://conference.vueschool.io/storage/RKlP7HyaV98hUxZcI6XBRZ4GRrFGstGOpHefwsPG.jpg","https://conference.vueschool.io/storage/rIdWZLmqz5MPFLRBDnt85JcXOYlNI6ZNp3UPcvoV.svg","https://twitter.com/samuelsnopko","https://github.com/samuells","Creative FrontEnd Knight & DesignOps & Speaker with a passion for the JAM Stack and the beautiful web. Co-creator of the DX Meetup Basel and co-organizer of the Frontend Meetup Freiburg. During days & nights works as a freelancer on various commercial & community projects and talks. Excited about Design Systems, Animations, Workflows.","\u003Cp>Creative FrontEnd Knight &amp; DesignOps &amp; Speaker with a passion for the JAM Stack and the beautiful web. Co-creator of the DX Meetup Basel and co-organizer of the Frontend Meetup Freiburg. During days &amp; nights works as a freelancer on various commercial &amp; community projects and talks. Excited about Design Systems, Animations, Workflows.\u003C/p>\n","\u003Cp>You may read already about the Jamstack. You probably already used Nuxt, and recently you may hear a lot about the headless CMSs. In this quick course, we will put all the pieces together, and I will show you why the Storyblok in combination with Nuxt is the best combo for your next project. Stop by and try it yourself!\u003C/p>\n\u003Chr>\n\u003Ch2>Agenda\u003C/h2>\n\u003Cul>\n\u003Cli>Introduction into the Jamstack &amp; headless world\u003C/li>\n\u003Cli>Understand the power of the atomic design\u003C/li>\n\u003Cli>Environment setup\u003C/li>\n\u003Cli>Creating the first page\u003C/li>\n\u003Cli>Creating article pages &amp; understand how the dynamic routing works\u003C/li>\n\u003Cli>Deployment to Live\u003C/li>\n\u003Cli>Future tips and Q&amp;A\u003C/li>\n\u003C/ul>\n\u003Chr>\n\u003Ch2>What will the attendees learn?\u003C/h2>\n\u003Cp>Graduates of this course will learn to look differently on the project from the whole start and will be able to build their first Jamstack website with Nuxt at the end.\u003C/p>\n",[122,125,128,131,133],{"id":123,"text":124},"person","Sold Out",{"id":126,"text":127},"calendar","September 29",{"id":129,"text":130,"subtext":102},"clock","1:00 PM UTC",{"id":132,"text":99},"location",{"id":134,"text":135},"price","FREE",{"id":137,"slug":138,"name":139,"image":8,"description":140,"tagline":8,"content":141,"platform":99,"schedule":142,"seats":101,"duration":102,"taken":101,"remaining":104,"is_sold_out":104,"speakers":143,"sorting_order":8,"is_past":9,"conference_id":29,"topics":146,"target":156,"instructors":157,"is_raffle":104,"price":104,"purchase_link_team":8,"purchase_link_single":8,"external_link":8,"html":182,"pills":183,"date":186,"time":130,"isPast":9,"isAvailable":22},2,"vuejs-fundamentals","Vue.js Fundamentals","In the Vue.js Fundamentals workshop, you will learn all the essential features of Vue.js and get a solid foundation of Vue skills by the end of the day. We will start from the very basics and teach you all there is to know about Vue.js. Throughout the day you will practice what you learn by working on a lot of hands-on assignments with live help from the trainers.","One of the biggest challenges in learning Vue.js is figuring out where to start and writing real-world Vue code in order to get a deep understanding.\r\n\r\nIn the Vue.js Fundamentals workshop, you will learn all the essential features of Vue.js and get a solid foundation of Vue skills by the end of the day. We will start from the very basics and teach you all there is to know about Vue.js.\r\n\r\nThroughout the day you will practice what you learn by working on a lot of hands-on assignments with live help from the trainers. When you are finished, you will be ready to develop Vue.js applications and increase the performance and developer experience in your existing projects.\r\n\r\n---\r\n\r\n## Pre-requisites\r\n\r\n- Basic understanding of HTML and JavaScript","2021-09-30T13:00:00.000000Z",[144,145],"alex_kyriakidis","daniel_kelly",[147,148,149,150,151,152,153,154,155],"The Vue instance","Introduction to two-way data binding","Interactivity with computed properties and methods","Vue template syntax","Directives and conditional rendering","Event Handling","Creating reusable Vue Components","Using the Vue DevTools plugin","Briefing into the Vue.js ecosystem: Single File Components, Vue Router, vue-cli","This workshop is ideal for web developers of any level that are looking to learn Vue.js from scratch or are already using Vue and want to get a deeper understanding and start implementing the best practices.",[158,170],{"id":144,"name":159,"role":160,"image":163,"company_image":164,"image_pop_art":8,"twitter":165,"github":166,"bluesky":167,"youtube":8,"linkedin":8,"bio":168,"bio_html":169},"Alex Kyriakidis",[161,162],"Founder & CEO Vue School","Author of the first Vue.js book","https://conference.vueschool.io/storage/4rJ4EbfxpYhETYCrVeCAXmPd41XKd0uRqmZwY3cP.jpg","https://conference.vueschool.io/storage/7zQtkiSiPQ9FXhXgNJTlLwi90kpL8e5oSlXerXcA.png","https://twitter.com/hootlex","https://github.com/hootlex","https://bsky.app/profile/hootlex.bsky.social","Alex Kyriakidis is the founder and CEO of Bitterbrains, the company behind Vue School and Certificates.dev. Since launching Vue School in 2016, he has built the world’s largest Vue.js video and tutorial library, that has empowered over 2,000,000 developers globally. A Vue.js community partner, Alex also authored the best-selling The Majesty of Vue.js, the first book on Vue.js","\u003Cp>Alex Kyriakidis is the founder and CEO of Bitterbrains, the company behind Vue School and Certificates.dev. Since launching Vue School in 2016, he has built the world’s largest Vue.js video and tutorial library, that has empowered over 2,000,000 developers globally. A Vue.js community partner, Alex also authored the best-selling The Majesty of Vue.js, the first book on Vue.js\u003C/p>
25\n",{"id":145,"name":171,"role":172,"image":175,"company_image":176,"image_pop_art":8,"twitter":177,"github":178,"bluesky":179,"youtube":8,"linkedin":8,"bio":180,"bio_html":181},"Daniel Kelly",[173,174],"Lead Vue School Instructor","Vue.js Forge Master of Code","https://conference.vueschool.io/storage/eRawEczKosrW9OI6uAs6TqJmdS47qQn5PHEuhnTy.jpg","https://conference.vueschool.io/storage/O1S7PqbuBWw0wyEAwTmPYd5ywHh8sVr9xs47Rlht.png","https://twitter.com/danielkelly_io","https://github.com/danielkellyio","https://bsky.app/profile/danielkelly.io","Daniel is the lead instructor and content creator at Vue School and enjoys helping other developers reach their full potential. With over 10 years of development experience on both the frontend and the backend, he's worked with technologies like Vue.js, Nuxt.js, Laravel and more, to create projects ranging from simple websites to enterprise-level applications.","\u003Cp>Daniel is the lead instructor and content creator at Vue School and enjoys helping other developers reach their full potential. With over 10 years of development experience on both the frontend and the backend, he's worked with technologies like Vue.js, Nuxt.js, Laravel and more, to create projects ranging from simple websites to enterprise-level applications.\u003C/p>\n","\u003Cp>One of the biggest challenges in learning Vue.js is figuring out where to start and writing real-world Vue code in order to get a deep understanding.\u003C/p>\n\u003Cp>In the Vue.js Fundamentals workshop, you will learn all the essential features of Vue.js and get a solid foundation of Vue skills by the end of the day. We will start from the very basics and teach you all there is to know about Vue.js.\u003C/p>\n\u003Cp>Throughout the day you will practice what you learn by working on a lot of hands-on assignments with live help from the trainers. When you are finished, you will be ready to develop Vue.js applications and increase the performance and developer experience in your existing projects.\u003C/p>\n\u003Chr>\n\u003Ch2>Pre-requisites\u003C/h2>\n\u003Cul>\n\u003Cli>Basic understanding of HTML and JavaScript\u003C/li>\n\u003C/ul>\n",[184,185,187,188,189],{"id":123,"text":124},{"id":126,"text":186},"September 30",{"id":129,"text":130,"subtext":102},{"id":132,"text":99},{"id":134,"text":135},{"id":191,"slug":192,"name":193,"image":8,"description":194,"tagline":8,"content":195,"platform":196,"schedule":197,"seats":198,"duration":199,"taken":198,"remaining":104,"is_sold_out":29,"speakers":8,"sorting_order":200,"is_past":9,"conference_id":201,"topics":202,"target":211,"instructors":212,"is_raffle":104,"price":104,"purchase_link_team":8,"purchase_link_single":8,"external_link":8,"html":226,"pills":227,"date":230,"time":232,"isPast":9,"isAvailable":22},18,"create-a-jamstack-site-using-nuxt-3-storyblok","Create a Jamstack site using Nuxt 3 & Storyblok","Do you want to discover how to build a fast, lightweight, SEO friendly and image optimized website? Then join this workshop, where we will use the latest features of Nuxt 3 to create a static website in combination with Storyblok v2, a headless CMS that will empower the content creation of your website.  During the workshop, you will do several exercises that will make you learn the latest Jamstack trends and leave with a functional website to add to your portfolio.","**What will the attendees learn?**\r\n\r\nDuring the workshop, you will do several exercises that will make you learn the latest Jamstack trends and leave with a functional website to add to your portfolio.\r\n\r\nYou will learn the basics of atomic design, how to create dynamic menus in Vue with data from Storyblok, how to render dynamic pages and deploy a static Nuxt 3 site, how to use a CDN image service, among many other things.","Airmeet","2022-11-23T11:00:00.000000Z",100,"4 hours",22,6,[203,204,205,206,207,208,209,210],"Intro about Jamstack and Atomic design","Create a project from scratch with Nuxt 3","Connect Storyblok with the frontend project","Render Storyblok stories dynamically in your application","Create dynamic menus and the layout of your website","Create custom components and use the Image Service CDN provided by Storyblok","Create and render blog articles","Publish our Jamstack site on a static site host","Beginners / Intermediate",[213],{"id":214,"name":215,"role":216,"image":219,"company_image":220,"image_pop_art":8,"twitter":221,"github":222,"bluesky":223,"youtube":8,"linkedin":8,"bio":224,"bio_html":225},"alba_silvente_fuentes","Alba Silvente",[217,218],"Nuxt Ambassador","FullStack Engineer II at Storyblok","https://conference.vueschool.io/storage/vCuWvlpgB1hkixra0GcimewPGOvgN8SoVfe4NJcA.jpg","https://conference.vueschool.io/storage/jlj60BJPeof8Ge8ZOKDQnQlVqHBPkJgZCj6c6aOQ.svg","https://twitter.com/dawntraoz","https://github.com/Dawntraoz","https://bsky.app/profile/dawntraoz.bsky.social","Alba Silvente is a Senior Frontend Developer working as a FullStack Engineer II | Plugins team at Storyblok. Alba is also a GDE in Web Technologies and NuxtJS Ambassador. Alba writes about Frontend development and works hard on open-source projects to create more value for the web community. Alba loves Vue, Jamstack, Web Performance, UX, accessibility & CSS.","\u003Cp>Alba Silvente is a Senior Frontend Developer working as a FullStack Engineer II | Plugins team at Storyblok. Alba is also a GDE in Web Technologies and NuxtJS Ambassador. Alba writes about Frontend development and works hard on open-source projects to create more value for the web community. Alba loves Vue, Jamstack, Web Performance, UX, accessibility &amp; CSS.\u003C/p>\n","\u003Cp>\u003Cstrong>What will the attendees learn?\u003C/strong>\u003C/p>\n\u003Cp>During the workshop, you will do several exercises that will make you learn the latest Jamstack trends and leave with a functional website to add to your portfolio.\u003C/p>\n\u003Cp>You will learn the basics of atomic design, how to create dynamic menus in Vue with data from Storyblok, how to render dynamic pages and deploy a static Nuxt 3 site, how to use a CDN image service, among many other things.\u003C/p>\n",[228,229,231,233,234],{"id":123,"text":124},{"id":126,"text":230},"November 23",{"id":129,"text":232,"subtext":199},"11:00 AM UTC",{"id":132,"text":196},{"id":134,"text":135},{"id":236,"slug":237,"name":238,"image":8,"description":239,"tagline":8,"content":240,"platform":196,"schedule":241,"seats":242,"duration":243,"taken":244,"remaining":245,"is_sold_out":104,"speakers":8,"sorting_order":191,"is_past":9,"conference_id":201,"topics":246,"target":8,"instructors":255,"is_raffle":104,"price":104,"purchase_link_team":8,"purchase_link_single":8,"external_link":8,"html":267,"pills":268,"date":271,"time":273,"isPast":9,"isAvailable":22},17,"crafting-a-dynamic-feedback-app-with-deskree-nuxt-github","Crafting a Dynamic Feedback App with Deskree + Nuxt & Github","To create enjoyable, user-driven application experiences, feedback is ESSENTIAL - This workshop will allow you to create a tool to facilitate viewing and processing crucial user feedback. Join senior full stack engineer, Guilherme Crozariol, as he walks y
25ou through Deskree as a platform while you actively craft a dynamic feedback tool that allows users to share their thoughts through detailed reports and screenshots. Other tools being used for front-end are Nuxt and Github.","To create enjoyable, user-driven application experiences, feedback is ESSENTIAL - This workshop will allow you to create a tool to facilitate viewing and processing crucial user feedback. Join senior full stack engineer, Guilherme Crozariol, as he walks you through Deskree as a platform while you actively craft a dynamic feedback tool that allows users to share their thoughts through detailed reports and screenshots. Other tools being used for front-end are Nuxt and Github.\r\n\r\n**Who is this event for?**\r\n\r\nThis is a workshop for developers across experience-levels interested in exploring more efficient and cost-friendly methods of crafting back-end infrastructure with minimal effort on their part. Front-end experience is required to be comfortable with certain aspects of this workshop pertaining to Nuxt. Attendees must have an understanding of how to incorporate Github into their development workflow.\r\n\r\n**What will the attendees learn?**\r\n\r\nParticipants will have a better understanding of how to implement our no-code tool into their development processes while working on and deploying a minimalistic feedback tool to facilitate detailed user feedback. Users can utilize Deskree (in addition to front-end tools such as Nuxt) as a way to create an entire full stack development cycle through the addition of our platform to their technology stack.","2022-11-29T14:00:00.000000Z",600,"3 hours",258,342,[247,248,249,250,251,252,253,254],"What is Deskree and what it is capable of","How to setup your project on Deskree","How to setup your database and use automatically generated REST API","How to create a Nuxt application powered by Deskree","How to configure our integration with Github","Using the generated APIs to create a feedback app where users can share their app experience through detailed feedback, reports, and screenshots.","Viewing and managing user feedback through the Deskree platform","Wrap up + Q&A",[256],{"id":257,"name":258,"role":259,"image":261,"company_image":262,"image_pop_art":8,"twitter":263,"github":264,"bluesky":8,"youtube":8,"linkedin":8,"bio":265,"bio_html":266},"guilherme_crozariol","Guilherme Crozariol",[260],"Full Stack Developer","https://conference.vueschool.io/storage/vklrrv2dN7EWgsrtwHcPx2dFb7V3N8EPYToeREc5.jpg","https://conference.vueschool.io/storage/","https://twitter.com/gcrozariol","https://github.com/gcrozariol","Result-driven Senior Full Stack Developer who possesses 6+ years of experience working on projects with clients from various industries such as business services, infrastructure, creative services, and gaming.","\u003Cp>Result-driven Senior Full Stack Developer who possesses 6+ years of experience working on projects with clients from various industries such as business services, infrastructure, creative services, and gaming.\u003C/p>\n","\u003Cp>To create enjoyable, user-driven application experiences, feedback is ESSENTIAL - This workshop will allow you to create a tool to facilitate viewing and processing crucial user feedback. Join senior full stack engineer, Guilherme Crozariol, as he walks you through Deskree as a platform while you actively craft a dynamic feedback tool that allows users to share their thoughts through detailed reports and screenshots. Other tools being used for front-end are Nuxt and Github.\u003C/p>\n\u003Cp>\u003Cstrong>Who is this event for?\u003C/strong>\u003C/p>\n\u003Cp>This is a workshop for developers across experience-levels interested in exploring more efficient and cost-friendly methods of crafting back-end infrastructure with minimal effort on their part. Front-end experience is required to be comfortable with certain aspects of this workshop pertaining to Nuxt. Attendees must have an understanding of how to incorporate Github into their development workflow.\u003C/p>\n\u003Cp>\u003Cstrong>What will the attendees learn?\u003C/strong>\u003C/p>\n\u003Cp>Participants will have a better understanding of how to implement our no-code tool into their development processes while working on and deploying a minimalistic feedback tool to facilitate detailed user feedback. Users can utilize Deskree (in addition to front-end tools such as Nuxt) as a way to create an entire full stack development cycle through the addition of our platform to their technology stack.\u
25003C/p>\n",[269,270,272,274,275],{"id":123,"text":124},{"id":126,"text":271},"November 29",{"id":129,"text":273,"subtext":243},"2:00 PM UTC",{"id":132,"text":196},{"id":134,"text":135},{"id":19,"slug":277,"name":278,"image":8,"description":279,"tagline":8,"content":280,"platform":196,"schedule":281,"seats":282,"duration":283,"taken":284,"remaining":285,"is_sold_out":104,"speakers":8,"sorting_order":286,"is_past":9,"conference_id":201,"topics":287,"target":295,"instructors":296,"is_raffle":104,"price":104,"purchase_link_team":8,"purchase_link_single":8,"external_link":8,"html":309,"pills":310,"date":313,"time":273,"isPast":9,"isAvailable":22},"building-graphql-backends-with-sdl","Building GraphQL backends with SDL","In this workshop, we'll cover the basics of GraphQL, and then use that knowledge to build a backend using SDL. Once we've created our schema, we'll run it locally, deploy it to production, and create deployment branches for any changes to our schema. We'll finish the workshop by fetching data from our backend from the frontend, as well as adding authentication to lock down data access!","In this workshop, we'll cover the basics of GraphQL, and then use that knowledge to build a backend using SDL. Once we've created our schema, we'll run it locally, deploy it to production, and create deployment branches for any changes to our schema. We'll finish the workshop by fetching data from our backend from the frontend, as well as adding authentication to lock down data access!\r\n\r\n**AGENDA**\r\n\r\n- Intro to GraphQL\r\n- Backend as a Service\r\n- Create a local GraphQL backend\r\n- Deploy to production\r\n- Make changes using branches\r\n- Adding auth to the backend with Clerk\r\n- Protect requests with user groups/roles","2022-12-02T14:00:00.000000Z",300,"2 hrs",226,74,20,[288,289,290,291,292,293,294],"Intro to GraphQL","Backend as a Service","Create a local GraphQL backend","Deploy to production","Make changes using branches","Adding auth to the backend with Clerk","Protect requests with user groups/roles","New to GraphQL",[297],{"id":298,"name":299,"role":300,"image":302,"company_image":303,"image_pop_art":8,"twitter":304,"github":305,"bluesky":306,"youtube":8,"linkedin":8,"bio":307,"bio_html":308},"jamie_barton","Jamie Barton",[301],"Engineer at tursodatabase","https://conference.vueschool.io/storage/l4C6ulRr5eLIUq2QmieGSjkJQpZ6kzLHDtCW97Xn.jpg","https://conference.vueschool.io/storage/Z9pSsGXBNlJvUJ0heCNK5iAY1cgOxU7AzIqGA9Pq.svg","https://twitter.com/notrab","https://github.com/notrab","https://bsky.app/profile/notrab.dev","Jamie is a versatile software engineer at Tursodatabase with extensive experience as a full-stack developer. Passionate about community engagement, Jamie actively contributes to educational efforts through workshops, technical writing, and speaking at industry events, all while maintaining a strong focus on progressive technologies.","\u003Cp>Jamie is a versatile software engineer at Tursodatabase with extensive experience as a full-stack developer. Passionate about community engagement, Jamie actively contributes to educational efforts through workshops, technical writing, and speaking at industry events, all while maintaining a strong focus on progressive technologies.\u003C/p>\n","\u003Cp>In this workshop, we&#39;ll cover the basics of GraphQL, and then use that knowledge to build a backend using SDL. Once we&#39;ve created our schema, we&#39;ll run it locally, deploy it to production, and create deployment branches for any changes to our schema. We&#39;ll finish the workshop by fetching data from our backend from the frontend, as well as adding authentication to lock down data access!\u003C/p>\n\u003Cp>\u003Cstrong>AGENDA\u003C/strong>\u003C/p>\n\u003Cul>\n\u003Cli>Intro to GraphQL\u003C/li>\n\u003Cli>Backend as a Service\u003C/li>\n\u003Cli>Create a local GraphQL backend\u003C/li>\n\u003Cli>Deploy to production\u003C/li>\n\u003Cli>Make changes using branches\u003C/li>\n\u003Cli>Adding auth to the backend with Clerk\u003C/li>\n\u003Cli>Protect requests with user groups/roles\u003C/li>\n\u003C/ul>\n",[311,312,314,315,316],{"id":123,"text":124},{"id":126,"text":313},"December 2",{"id":129,"text":273,"subtext":283},{"id":132,"text":196},{"id":134,"text":135},{"id":318,"slug":319,"name":320,"image":8,"description":321,"tagline":322,"content":323,"platform":196,"schedule":324,"seats":8,"duration":325,"taken":104,"remaining":104,"is_sold_out":29,"speakers":8,"sorting_order":326,"is_past":9,"conference_id":327,"topics":328,"target":336,"instructors":337,"is_raffle":104,"price":340,"purchase_link_team":8,"purchase_link_single":341,"external_link":8,"html":342,"pills":343,"date":346,"time":348,"isPast":9,"isAvailable":22},30,"state-management-with-pinia-workshop","State Management with Pinia Workshop","Pinia is a state management solution for Vue.js applications that’s easy and intuitive to use. It’s modular by default, extensible, and type-safe, making it a great choice for large scale apps.","Get this workshop for only $99.80 when you check out with the coupon code NUXTNATION23","In Vue.js, it is quite simple to work with components, and share data among them using events and props - especially in small to medium projects. When an application starts growing, managing component state might become tedious and overwhelming. This is where Pinia comes to our rescue.\r\n\r\nPinia is a state management solution for Vue.js applications that makes it easy to store data at a global level and share it amongst application components.\r\n\r\nBy the end of the workshop, attendees will be able to develop elegant, debuggable, maintainable, and organized applications using a centralized store. No prior experience with Pinia is needed.\r\n\r\nWe will answer the common question, “When should I use Pinia?” and work on real-world features.\r\n\r\n**USE COUPON NUXTNATION23 FOR 80% OFF!**","2023-10-25T12:00:00.000000Z","5 hours",32,9,[329,330,331,332,333,334,335],"Understanding global state management","Creating a Pinia store with core features like: state, actions, and getters","Consuming a store in components","Organizing the store with modules","Usage with the Composition API and the Options API","Preserving state with HMR","Using composables in the Pinia state","This workshop is ideal for web developers who know the basics of Vue.js and are looking to manage application data without the headache of prop drilling.",[338],{"id":145,"name":1
2571,"role":339,"image":175,"company_image":176,"image_pop_art":8,"twitter":177,"github":178,"bluesky":179,"youtube":8,"linkedin":8,"bio":180,"bio_html":181},[173,174],499,"https://vueschool.io/workshops/state-management-with-pinia-workshop-2","\u003Cp>In Vue.js, it is quite simple to work with components, and share data among them using events and props - especially in small to medium projects. When an application starts growing, managing component state might become tedious and overwhelming. This is where Pinia comes to our rescue.\u003C/p>\n\u003Cp>Pinia is a state management solution for Vue.js applications that makes it easy to store data at a global level and share it amongst application components.\u003C/p>\n\u003Cp>By the end of the workshop, attendees will be able to develop elegant, debuggable, maintainable, and organized applications using a centralized store. No prior experience with Pinia is needed.\u003C/p>\n\u003Cp>We will answer the common question, “When should I use Pinia?” and work on real-world features.\u003C/p>\n\u003Cp>\u003Cstrong>USE COUPON NUXTNATION23 FOR 80% OFF!\u003C/strong>\u003C/p>\n",[344,345,347,349,350],{"id":123,"text":124},{"id":126,"text":346},"October 25",{"id":129,"text":348,"subtext":325},"12:00 PM UTC",{"id":132,"text":196},{"id":134,"text":351},"$ 499",{"id":353,"slug":354,"name":355,"image":8,"description":356,"tagline":8,"content":357,"platform":196,"schedule":358,"seats":8,"duration":283,"taken":359,"remaining":104,"is_sold_out":104,"speakers":8,"sorting_order":360,"is_past":9,"conference_id":361,"topics":362,"target":8,"instructors":367,"is_raffle":104,"price":104,"purchase_link_team":8,"purchase_link_single":8,"external_link":8,"html":380,"pills":381,"date":313,"time":273,"isPast":9,"isAvailable":22},37,"building-a-google-docs-clone-with-ckeditor-5-and-vuejs","Building a Google Docs Clone with CKEditor 5 and Vue.js","In this hands-on workshop, attendees will dive into creating a powerful, Google Docs-like collaborative editor using CKEditor 5 and Vue.js.","We’ll learn how to setup CKEditor 5 within a Vue.js application, customizing the editor’s configuration, and extending functionality by building a custom plugin.\r\n\r\nBy the end, you’ll have a fully functional, collaborative text editor equipped with real-time features, making it an ideal solution for dynamic content creation needs.\r\n\r\nDuring the exercise, you will learn:\r\n\r\n- How to add features like Collaborative Editing, Merge Fields, Document Outline\r\n- Create custom CKEditor plugin\r\n- AI Assistant integration with OpenAI\r\n\r\nDuring the workshop you will dive into:\r\n\r\n- **Integrating CKEditor 5 into a Vue.js Application**: Attendees will understand how to set up CKEditor 5 within a Vue.js project, using CKEditor Builder\r\n\r\n- **Building Real-Time Collaborative Editing Features**: Learn how to configure CKEditor 5 to enable collaborative editing, with real-time changes and tracking\r\n\r\n- **Creating Custom Plugins**: Gain practical experience developing a custom CKEditor plugin to add new features, enhancing the editor's capabilities for specific needs","2024-12-02T14:00:00.000000Z",140,39,13,[363,364,365,366],"Create custom CKEditor plugin","AI Assistant integration with OpenAI","Integrating CKEditor 5 into a Vue.js Application","Building Real-Time Collaborative Editing Features",[368],{"id":369,"name":370,"role":371,"image":373,"company_image":374,"image_pop_art":8,"twitter":375,"github":376,"bluesky":377,"youtube":8,"linkedin":8,"bio":378,"bio_html":379},"vadim_smirnov","Vadim Smirnov",[372],"Developer Advocate at StackOne","https://conference.vueschool.io/storage/5ZNA23FIESQx56K3YYU0eE6bwC28XXirv8VRNoTO.webp","https://conference.vueschool.io/storage/Yduu3iqCU1mE8czo2sN9Z0LYREhcuRBDqtCnWZfq.jpg","https://x.com/_vscodes","https://github.com/FuzzyReason","https://bsky.app/profile/vscodes.bsky.social","Vadim is a developer advocate passionate about creating content that people love. In his free time, Vadim is obsessed with football and music.","\u003Cp>Vadim is a developer advocate passionate about creating content that people love. In his free time, Vadim is obsessed with football and music.\u003C/p>\n","\u003Cp>We’ll learn how to setup CKEditor 5 within a Vue.js application, customizing the editor’s configuration, and extending functionality by building a custom plugin.\u003C/p>\n\u003Cp>By the end, you’ll have a fully functional, collaborative text editor equipped with real-time features, making it an ideal solution for dynamic content creation needs.\u003C/p>\n\u003Cp>During the exercise, you will learn:\u003C/p>\n\u003Cul>\n\u003Cli>How to add features like Collaborative Editing, Merge Fields, Document Outline\u003C/li>\n\u003Cli>Create custom CKEditor plugin\u003C/li>\n\u003Cli>AI Assistant integration with OpenAI\u003C/li>\n\u003C/ul>\n\u003Cp>During the workshop you will dive into:\u003C/p>\n\u003Cul>\n\u003Cli>\u003Cp>\u003Cstrong>Integrating CKEditor 5 into a Vue.js Application\u003C/strong>: Attendees will understand how to set up CKEditor 5 within a Vue.js project, using CKEditor Builder\u003C/p>\n\u003C/li>\n\u003Cli>\u003Cp>\u003Cstrong>Building Real-Time Collaborative Editing Features\u003C/strong>: Learn how to configure CKEditor 5 to enable collaborative editing, with real-time changes and tracking\u003C/p>\n\u003C/li>\n\u003Cli>\u003Cp>\u003Cstrong>Creating Custom Plugins\u003C/strong>: Gain practical experience developing a custom CKEditor plugin to add new features, enhancing the editor&#39;s capabilities for specific needs\u003C/p>\n\u003C/li>\n\u003C/ul>\n",[382,383,384,385,386],{"id":123,"text":124},{"id":126,"text":313},{"id":129,"text":273,"subtext":283},{"id":132,"text":196},{"id":134,"text":135},{"id":388,"slug":389,"name":390,"image":8,"description":391,"tagline":392,"content":393,"platform":196,"schedule":394,"seats":8,"duration":395,"taken":104,"remaining":104,"is_sold_out":104,"speakers":8,"sorting_order":396,"is_past":9,"conference_id":361,"topics":397,"target":8,"instructors":398,"is_raffle":104,"price":401,"purchase_link_team":8,"purchase_link_single":402,"external_link":8,"html":403,"pills":404,"date":407,"time":273,"isPast":9,"isAvailable":22},38,"nuxt-fundamentals-workshop","Nuxt Fundamentals Workshop","Nuxt is a framework built on top of Vue.js and is based on a powerful modular architecture. You can choose from more than 50 modules to make your development faster and easier. You don't have to reinvent the wheel to get PWA benef
25its, add Google Analytics to your page or generate a sitemap.","Use Code NUXTNATION24 at checkout for an extra $50 OFF!","**Use Code NUXTNATION24 at checkout for an extra $50 OFF!**\r\n\r\nNuxt is a framework built on top of Vue.js and is based on a powerful modular architecture. You can choose from more than 50 modules to make your development faster and easier. You don't have to reinvent the wheel to get PWA benefits, add Google Analytics to your page, or generate a sitemap.\r\n\r\nWith Nuxt.js, your application will be optimized out of the box. Nuxt builds performant applications by utilizing Vue.js and Node.js best practices. To squeeze every unnecessary bit out of your app Nuxt includes a bundle analyzer and lots of opportunities to fine-tune your app.","2024-12-05T14:00:00.000000Z","5 hrs",40,[],[399],{"id":145,"name":171,"role":400,"image":175,"company_image":176,"image_pop_art":8,"twitter":177,"github":178,"bluesky":179,"youtube":8,"linkedin":8,"bio":180,"bio_html":181},[173,174],299,"https://vueschool.io/workshops/nuxt-js-fundamentals-workshop","\u003Cp>\u003Cstrong>Use Code NUXTNATION24 at checkout for an extra $50 OFF!\u003C/strong>\u003C/p>\n\u003Cp>Nuxt is a framework built on top of Vue.js and is based on a powerful modular architecture. You can choose from more than 50 modules to make your development faster and easier. You don&#39;t have to reinvent the wheel to get PWA benefits, add Google Analytics to your page, or generate a sitemap.\u003C/p>\n\u003Cp>With Nuxt.js, your application will be optimized out of the box. Nuxt builds performant applications by utilizing Vue.js and Node.js best practices. To squeeze every unnecessary bit out of your app Nuxt includes a bundle analyzer and lots of opportunities to fine-tune your app.\u003C/p>\n",[405,406,408,409,410],{"id":123,"text":124},{"id":126,"text":407},"December 5",{"id":129,"text":273,"subtext":395},{"id":132,"text":196},{"id":134,"text":411},"$ 299"]</script>
vendor: 1 bytes, line 25
25
26<script>window.__NUXT__={};window.__NUXT__.config={public:{API_URL:"https://conference.vueschool.io",APP_ROOT:"https://nuxtnation.com",BADGE_URL:"https://badge.vueschool.io",SENTRY_DSN:"https://[email protected]/5851571",ENVIRONMENT_NAME:"production",MIXPANEL_TOKEN:"22656e5c6bf143e6d172f82cefec997c",RECAPTCHA_SITE:"6LdfHI4gAAAAANTC66vbKkL-ITo1WGk5eUTskdfh",GITHUB_CLIENT_ID:"Ov23li8diNuoHAUmOoHK",DISCORD_LOGIN_URL:"",PUPPETEER_CHROME_PATH:"",GTM_ID:"GTM-M4SWS9T6",SEO_APP_ROOT:"https://nuxtnation.com",CIO_WRITE_KEY:"0851cd9b22fd64a2f931",CROWDFUNDING_URL:"",BANNER_SCRIPT_URL:"https://media.bitterbrains.com",banner:{provider:"bannerstudio",enabled:true,api:"https://assets.nuxtnation.com",affiliate:"nuxtnation",test:false},mdc:{components:{prose:true,map:{p:"prose-p",a:"prose-a",blockquote:"prose-blockquote","code-inline":"prose-code-inline",code:"ProseCodeInline",em:"prose-em",h1:"prose-h1",h2:"prose-h2",h3:"prose-h3",h4:"prose-h4",h5:"prose-h5",h6:"prose-h6",hr:"prose-hr",img:"prose-img",ul:"prose-ul",ol:"prose-ol",li:"prose-li",strong:"prose-strong",table:"prose-table",thead:"prose-thead",tbody:"prose-tbody",td:"prose-td",th:"prose-th",tr:"prose-tr"}},headings:{anchorLinks:{h1:false,h2:true,h3:true,h4:true,h5:false,h6:false}}},content:{locales:[],defaultLocale:"",integrity:1787912915679,experimental:{stripQueryParameters:false,advanceQuery:false,clientDB:false},respectPathCase:false,api:{baseURL:"/api/_content"},navigation:{fields:[]},tags:{p:"prose-p",a:"prose-a",blockquote:"prose-blockquote","code-inline":"prose-code-inline",code:"ProseCodeInline",em:"prose-em",h1:"prose-h1",h2:"prose-h2",h3:"prose-h3",h4:"prose-h4",h5:"prose-h5",h6:"prose-h6",hr:"prose-hr",img:"prose-img",ul:"prose-ul",ol:"prose-ol",li:"prose-li",strong:"prose-strong",table:"prose-table",thead:"prose-thead",tbody:"prose-tbody",td:"prose-td",th:"prose-th",tr:"prose-tr"},highlight:false,wsUrl:"",documentDriven:false,host:"",trailingSlash:false,search:"",contentHead:true,anchorLinks:{depth:4,exclude:[1]}}},app:{baseURL:"/",buildAssetsDir:"/_nuxt/",cdnURL:""}}</script>
26<script>
27(function() {
28  const w = window;
29  w._$delayHydration = (() => {
30    if (!("requestIdleCallback" in w) || !("requestAnimationFrame" in w))
31  return new Promise((resolve) => resolve("not supported"));
32function eventListeners() {
33  const c = new AbortController();
34  const p = new Promise((resolve) => {
35    const hydrateOnEvents = "mousemove,scroll,keydown,click,touchstart,wheel".split(",");
36    function handler(e) {
37      hydrateOnEvents.forEach((e2) => w.removeEventListener(e2, handler));
38      requestAnimationFrame(() => resolve(e));
39    }
40    hydrateOnEvents.forEach((e) => {
41      w.addEventListener(e, handler, {
42        capture: true,
43        once: true,
44        passive: true,
45        signal: c.signal
46      });
47    });
48  });
49  return { c: () => c.abort(), p };
50}
51function idleListener() {
52  let id;
53  const p = new Promise((resolve) => {
54    const isMobile = w.innerWidth < 640;
55    const timeout = isMobile ? Number.parseInt("5000") : Number.parseInt("4000");
56    const timeoutDelay = () => setTimeout(
57      () => requestAnimationFrame(() => resolve("timeout")),
58      timeout
59    );
60    id = w.requestIdleCallback(timeoutDelay, { timeout: Number.parseInt("7000") });
61  });
62  return { c: () => window.cancelIdleCallback(id), p };
63}
64const triggers = [idleListener(), eventListeners()];
65const hydrationPromise = Promise.race(
66  triggers.map((t) => t.p)
67).finally(() => {
68  triggers.forEach((t) => t.c());
69});
70return hydrationPromise;
71}
72  )();
73  w._$delayHydration.then((e) => { console.log('[nuxt-delay-hydration] Hydration event', e) })
74  ;(() => {
75  w._$delayHydration.then((e) => {
76    if (!(e instanceof PointerEvent) && !(e instanceof MouseEvent) && !(window.TouchEvent && e instanceof TouchEvent))
77      return;
78    if (e instanceof MouseEvent && e.type !== "click")
79      return;
80    setTimeout(() => w.requestIdleCallback(
81      () => setTimeout(() => e.target?.click(), 500)
82    ), 50);
83  });
84})();
85
86})();
87</script>
87</body></html><!-- This script is automatically inserted by Netlify for Real User Monitoring (RUM). -->
88<script async id="netlify-rum-container" src="/.netlify/scripts/rum" data-netlify-cwv-token="eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzaXRlX2lkIjoiMzQ2Mzg3YWMtOTkwNy00ODIxLWI3MTItY2YzYzY0M2JkYTNlIiwiYWNjb3VudF9pZCI6IjViZDk5YmIxMWYxMmI3N2QwZGVmNDc4NCIsImRlcGxveV9pZCI6IjZhOTE2MzAyZjMyNTc2MWU3MzMzNTRmMyIsImlzcyI6Im5ldGxpZnkifQ.W9LKMKHpBmBA58lLFqXqpuFS-2eoQaolk0jc7KoZFcA"></script>
vendor: 1 bytes, line 88
88

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.