├── .nojekyll ├── favicon.ico ├── images ├── js.png ├── icons │ ├── sass.png │ ├── nodejs.png │ ├── react.png │ ├── redux.png │ ├── bootstrap.png │ ├── express.png │ ├── markdown.png │ ├── mindblown.png │ ├── mongodb.png │ └── typescript.png ├── profile-pic.webp ├── profile-pic-2.webp ├── projects │ ├── github-finder.png │ ├── contact-keeper.png │ └── example-1 │ │ ├── 01-home.png │ │ └── 02-home.png └── posts │ └── first-post │ ├── markdown.jpg │ └── first-post.jpg ├── _next ├── static │ ├── lH_ilZ9o8Ak1_-mg94rg5 │ │ ├── _middlewareManifest.js │ │ ├── _ssgManifest.js │ │ └── _buildManifest.js │ ├── chunks │ │ ├── pages │ │ │ ├── _error-d419484d69bbcf53.js │ │ │ ├── posts │ │ │ │ └── [slug]-90f1b0c0ff5d9dcf.js │ │ │ ├── projects │ │ │ │ └── [slug]-84e1f98fc4c4d092.js │ │ │ ├── projects-e764dd9f068e5f44.js │ │ │ ├── posts-8705cc9333ae0ef1.js │ │ │ └── index-4f38ac3929c74433.js │ │ ├── webpack-f10e1d74334e5489.js │ │ └── 675-0787ec1bc5f64e14.js │ └── css │ │ ├── 8d0af738d28131f3.css │ │ ├── 1a6e0aac0a59bc85.css │ │ ├── 4f57348167ca5ca8.css │ │ ├── afd1f1acc4546ee2.css │ │ ├── 034f1c775601f1c6.css │ │ └── f6e0480671a3e269.css └── data │ └── lH_ilZ9o8Ak1_-mg94rg5 │ ├── projects │ ├── example-2.json │ └── example-1.json │ ├── posts │ ├── example-post-2.json │ └── example-post.json │ ├── projects.json │ ├── posts.json │ └── index.json ├── 404.html ├── projects ├── example-2.html └── example-1.html ├── posts.html ├── posts └── example-post-2.html ├── projects.html └── index.html /.nojekyll: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/renebitter/portfolio/HEAD/favicon.ico -------------------------------------------------------------------------------- /images/js.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/renebitter/portfolio/HEAD/images/js.png -------------------------------------------------------------------------------- /images/icons/sass.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/renebitter/portfolio/HEAD/images/icons/sass.png -------------------------------------------------------------------------------- /images/icons/nodejs.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/renebitter/portfolio/HEAD/images/icons/nodejs.png -------------------------------------------------------------------------------- /images/icons/react.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/renebitter/portfolio/HEAD/images/icons/react.png -------------------------------------------------------------------------------- /images/icons/redux.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/renebitter/portfolio/HEAD/images/icons/redux.png -------------------------------------------------------------------------------- /images/profile-pic.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/renebitter/portfolio/HEAD/images/profile-pic.webp -------------------------------------------------------------------------------- /images/icons/bootstrap.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/renebitter/portfolio/HEAD/images/icons/bootstrap.png -------------------------------------------------------------------------------- /images/icons/express.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/renebitter/portfolio/HEAD/images/icons/express.png -------------------------------------------------------------------------------- /images/icons/markdown.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/renebitter/portfolio/HEAD/images/icons/markdown.png -------------------------------------------------------------------------------- /images/icons/mindblown.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/renebitter/portfolio/HEAD/images/icons/mindblown.png -------------------------------------------------------------------------------- /images/icons/mongodb.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/renebitter/portfolio/HEAD/images/icons/mongodb.png -------------------------------------------------------------------------------- /images/profile-pic-2.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/renebitter/portfolio/HEAD/images/profile-pic-2.webp -------------------------------------------------------------------------------- /images/icons/typescript.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/renebitter/portfolio/HEAD/images/icons/typescript.png -------------------------------------------------------------------------------- /images/projects/github-finder.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/renebitter/portfolio/HEAD/images/projects/github-finder.png -------------------------------------------------------------------------------- /images/posts/first-post/markdown.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/renebitter/portfolio/HEAD/images/posts/first-post/markdown.jpg -------------------------------------------------------------------------------- /images/projects/contact-keeper.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/renebitter/portfolio/HEAD/images/projects/contact-keeper.png -------------------------------------------------------------------------------- /images/posts/first-post/first-post.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/renebitter/portfolio/HEAD/images/posts/first-post/first-post.jpg -------------------------------------------------------------------------------- /images/projects/example-1/01-home.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/renebitter/portfolio/HEAD/images/projects/example-1/01-home.png -------------------------------------------------------------------------------- /images/projects/example-1/02-home.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/renebitter/portfolio/HEAD/images/projects/example-1/02-home.png -------------------------------------------------------------------------------- /_next/static/lH_ilZ9o8Ak1_-mg94rg5/_middlewareManifest.js: -------------------------------------------------------------------------------- 1 | self.__MIDDLEWARE_MANIFEST=[];self.__MIDDLEWARE_MANIFEST_CB&&self.__MIDDLEWARE_MANIFEST_CB() -------------------------------------------------------------------------------- /_next/static/lH_ilZ9o8Ak1_-mg94rg5/_ssgManifest.js: -------------------------------------------------------------------------------- 1 | self.__SSG_MANIFEST=new Set(["\u002Fposts","\u002Fprojects","\u002F","\u002Fposts\u002F[slug]","\u002Fprojects\u002F[slug]"]);self.__SSG_MANIFEST_CB&&self.__SSG_MANIFEST_CB() -------------------------------------------------------------------------------- /_next/static/chunks/pages/_error-d419484d69bbcf53.js: -------------------------------------------------------------------------------- 1 | (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[820],{81981:function(n,_,u){(window.__NEXT_P=window.__NEXT_P||[]).push(["/_error",function(){return u(97345)}])}},function(n){n.O(0,[774,888,179],(function(){return _=81981,n(n.s=_);var _}));var _=n.O();_N_E=_}]); -------------------------------------------------------------------------------- /_next/data/lH_ilZ9o8Ak1_-mg94rg5/projects/example-2.json: -------------------------------------------------------------------------------- 1 | {"pageProps":{"project":{"slug":"example-2","title":"Example 2","tech":["React","Context"],"description":"Search for github users with Github API and React Context.","liveLink":"https://google.com/","githubLink":"https://github.com/","image":"github-finder.png","isFeatured":true,"content":"\n## Description\n\nUser searching app using Github API and context.\n\n## Key takeaways\n\nGithub API and Context\n"}},"__N_SSG":true} -------------------------------------------------------------------------------- /_next/static/css/8d0af738d28131f3.css: -------------------------------------------------------------------------------- 1 | .postContent_postContent__l0RMZ{padding:50px 15px}.postContent_postContent__l0RMZ h1,.postContent_postContent__l0RMZ h2,.postContent_postContent__l0RMZ h3,.postContent_postContent__l0RMZ h4{color:var(--text-secondary)}.postContent_postContent__l0RMZ a{color:var(--accent)}.postContent_postContent__l0RMZ img{max-width:100%}.postContent_postContent__l0RMZ strong{background:#cecece;padding:0 4px;border-radius:4px;color:#000;font-weight:400;font-size:.8rem}.postContent_postContent__l0RMZ ol{margin-bottom:50px}.postContent_postContent__l0RMZ pre{font-size:.8rem}@media only screen and (min-width:768px){.postContent_postContent__l0RMZ{padding:100px 25px}.postContent_postContent__l0RMZ .postContent_container__SnuIF{max-width:1200px;margin:auto}.postContent_postContent__l0RMZ h1{font-size:2.7rem;text-align:center}.postContent_postContent__l0RMZ li{margin-bottom:35px}} -------------------------------------------------------------------------------- /_next/static/lH_ilZ9o8Ak1_-mg94rg5/_buildManifest.js: -------------------------------------------------------------------------------- 1 | self.__BUILD_MANIFEST=function(s,c,e,t){return{__rewrites:{beforeFiles:[],afterFiles:[],fallback:[]},"/":[s,c,e,"static/css/f6e0480671a3e269.css","static/chunks/pages/index-4f38ac3929c74433.js"],"/_error":["static/chunks/pages/_error-d419484d69bbcf53.js"],"/posts":[e,"static/css/1a6e0aac0a59bc85.css","static/chunks/pages/posts-8705cc9333ae0ef1.js"],"/posts/[slug]":[t,"static/css/8d0af738d28131f3.css","static/chunks/pages/posts/[slug]-90f1b0c0ff5d9dcf.js"],"/projects":[s,"static/css/4f57348167ca5ca8.css","static/chunks/pages/projects-e764dd9f068e5f44.js"],"/projects/[slug]":[s,t,c,"static/chunks/828-52e66a691e53e6f3.js","static/css/034f1c775601f1c6.css","static/chunks/pages/projects/[slug]-84e1f98fc4c4d092.js"],sortedPages:["/","/_app","/_error","/posts","/posts/[slug]","/projects","/projects/[slug]"]}}("static/chunks/675-0787ec1bc5f64e14.js","static/chunks/854-f6c15d4fc34ab343.js","static/css/0a4ec652d6028205.css","static/chunks/716-88c1138b6c480ab9.js"),self.__BUILD_MANIFEST_CB&&self.__BUILD_MANIFEST_CB(); -------------------------------------------------------------------------------- /_next/data/lH_ilZ9o8Ak1_-mg94rg5/posts/example-post-2.json: -------------------------------------------------------------------------------- 1 | {"pageProps":{"post":{"slug":"example-post-2","title":"Lorem Ipsum","date":"2022-04-03","image":"first-post.jpg","excerpt":"How to build a blog using react-markdown to render posts written in markdown","isFeatured":true,"tech":["Markdown"],"content":"\n# Using Markdown as a blog format\n\n![Image ...](/portfolio/images/posts/first-post/first-post.jpg)\n\n```text\n---\ntitle: 'Using Markdown as a blog format'\ndate: '2022-04-03'\nimage: first-post.jpg\nexcerpt: 'How to build a blog using react-markdown to render posts written in markdown'\nisFeatured: true\n---\n\n```\n\nLorem ipsum dolor sit, amet consectetur adipisicing elit. Dignissimos minima optio omnis commodi atque modi, dolores saepe nostrum vero sunt obcaecati recusandae animi delectus veritatis ut nam dolore magnam.\n\nLorem ipsum dolor sit amet consectetur, adipisicing elit. Debitis, explicabo necessitatibus cumque quis, labore incidunt facere dolor impedit odio fugit totam, praesentium blanditiis consequatur deleniti repellat reprehenderit modi aut enim.\n"}},"__N_SSG":true} -------------------------------------------------------------------------------- /_next/data/lH_ilZ9o8Ak1_-mg94rg5/projects/example-1.json: -------------------------------------------------------------------------------- 1 | {"pageProps":{"project":{"slug":"example-1","title":"Example 1","tech":["React","MongoDB","Node","Express","Context"],"description":"This is a MERN Fullstack project with authentication and CRUD functionality.","liveLink":"https://google.com/","githubLink":"https://github.com/","image":"contact-keeper.png","isFeatured":true,"screenshots":[{"screenshot":"01-home.png","description":"Homepage with navbar and hero element."},{"screenshot":"02-home.png","description":"Homepage. Carousel with 3 top-rated products and general product listing."}],"content":"\n## Description\n\nThis is a MERN Fullstack project with authentication and CRUD functionality.\n\n## Key takeaways\n\nContext\n\n#### Code Example\n\nCombines all reducers and apply thunk (middleware that allows\nyou to return functions).\n\n
\n\n \n View code\n \n \n \n \n\n```js\nconst reducer = combineReducers({\n productList: productListReducer,\n});\n```\n\n
\n
\n"}},"__N_SSG":true} -------------------------------------------------------------------------------- /_next/static/css/1a6e0aac0a59bc85.css: -------------------------------------------------------------------------------- 1 | .postItem_card__A_FX_{border-radius:5px;padding:25px;background-color:var(--background-card);transition:background 1s;border:1px solid var(--border-card);margin-bottom:25px;display:flex;flex-direction:column;min-height:260px}.postItem_card__A_FX_ h4{margin:0;color:var(--text-secondary)}.postItem_card__A_FX_ time{color:var(--text-tertiary)}.postItem_card__A_FX_ .postItem_cardAction__0dwSq{display:flex;flex-direction:row;margin-top:auto}.postItem_card__A_FX_ .postItem_cardAction__0dwSq a{color:var(--accent)}@media only screen and (min-width:768px){.postItem_card__A_FX_{margin-bottom:unset}}.allPosts_blog__JNVG1{padding:50px 15px}.allPosts_blog__JNVG1 h1{text-align:center;font-size:2rem}.allPosts_blog__JNVG1 .allPosts_filter__XeDGi p{text-align:center}.allPosts_blog__JNVG1 .allPosts_filter__XeDGi .allPosts_filterButtons__Awiqp{display:flex;flex-wrap:wrap;justify-content:center}.allPosts_blog__JNVG1 .allPosts_filter__XeDGi .allPosts_filterButtons__Awiqp button{margin:2px}.allPosts_blog__JNVG1 .allPosts_galleryWrap__n83PE{margin-top:50px}@media only screen and (min-width:768px){.allPosts_blog__JNVG1{padding:150px 25px;min-height:100vh}.allPosts_blog__JNVG1 .allPosts_container__vuR4h{max-width:1200px;margin:auto}.allPosts_blog__JNVG1 .allPosts_gallery__0YCrM{display:grid;grid-template-columns:repeat(2,1fr);grid-gap:25px}} -------------------------------------------------------------------------------- /_next/static/chunks/pages/posts/[slug]-90f1b0c0ff5d9dcf.js: -------------------------------------------------------------------------------- 1 | (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[922],{60843:function(n,e,t){(window.__NEXT_P=window.__NEXT_P||[]).push(["/posts/[slug]",function(){return t(63479)}])},63479:function(n,e,t){"use strict";t.r(e),t.d(e,{__N_SSG:function(){return d},default:function(){return h}});var s=t(85893),r=t(9008),c=t.n(r),o=t(47011),i=t(83441),u=t.n(i),a=t(36645),l=t(84283),_=function(n){var e=n.post,t=n.currentTheme,r=(e.title,e.content),c=("../images/posts/".concat(e.slug,"/").concat(e.image),{code:function(n){var e=n.className,r=n.children,c=e.split("-")[1];return(0,s.jsx)(s.Fragment,{children:"dark"===t?(0,s.jsx)(a.Z,{showLineNumbers:!0,language:c,style:l.pJ,children:r}):(0,s.jsx)(a.Z,{showLineNumbers:!0,language:c,style:l.mQ,children:r})})}});return(0,s.jsx)("div",{className:u().postContent,children:(0,s.jsx)("div",{className:u().container,children:(0,s.jsx)("article",{children:(0,s.jsx)(o.D,{components:c,children:r})})})})},d=!0,h=function(n){var e=n.post,t=n.currentTheme;return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsxs)(c(),{children:[(0,s.jsx)("title",{children:e.title}),(0,s.jsx)("meta",{name:"description",content:e.excerpt})]}),(0,s.jsx)(_,{post:e,currentTheme:t})]})}},83441:function(n){n.exports={postContent:"postContent_postContent__l0RMZ",container:"postContent_container__SnuIF"}}},function(n){n.O(0,[716,774,888,179],(function(){return e=60843,n(n.s=e);var e}));var e=n.O();_N_E=e}]); -------------------------------------------------------------------------------- /_next/data/lH_ilZ9o8Ak1_-mg94rg5/projects.json: -------------------------------------------------------------------------------- 1 | {"pageProps":{"projects":[{"slug":"example-1","title":"Example 1","tech":["React","MongoDB","Node","Express","Context"],"description":"This is a MERN Fullstack project with authentication and CRUD functionality.","liveLink":"https://google.com/","githubLink":"https://github.com/","image":"contact-keeper.png","isFeatured":true,"screenshots":[{"screenshot":"01-home.png","description":"Homepage with navbar and hero element."},{"screenshot":"02-home.png","description":"Homepage. Carousel with 3 top-rated products and general product listing."}],"content":"\n## Description\n\nThis is a MERN Fullstack project with authentication and CRUD functionality.\n\n## Key takeaways\n\nContext\n\n#### Code Example\n\nCombines all reducers and apply thunk (middleware that allows\nyou to return functions).\n\n
\n\n \n View code\n \n \n \n \n\n```js\nconst reducer = combineReducers({\n productList: productListReducer,\n});\n```\n\n
\n
\n"},{"slug":"example-2","title":"Example 2","tech":["React","Context"],"description":"Search for github users with Github API and React Context.","liveLink":"https://google.com/","githubLink":"https://github.com/","image":"github-finder.png","isFeatured":true,"content":"\n## Description\n\nUser searching app using Github API and context.\n\n## Key takeaways\n\nGithub API and Context\n"}]},"__N_SSG":true} -------------------------------------------------------------------------------- /_next/static/chunks/webpack-f10e1d74334e5489.js: -------------------------------------------------------------------------------- 1 | !function(){"use strict";var n={},e={};function r(t){var o=e[t];if(void 0!==o)return o.exports;var i=e[t]={exports:{}},u=!0;try{n[t].call(i.exports,i,i.exports,r),u=!1}finally{u&&delete e[t]}return i.exports}r.m=n,function(){var n=[];r.O=function(e,t,o,i){if(!t){var u=1/0;for(a=0;a=i)&&Object.keys(r.O).every((function(n){return r.O[n](t[c])}))?t.splice(c--,1):(f=!1,i0&&n[a-1][2]>i;a--)n[a]=n[a-1];n[a]=[t,o,i]}}(),r.n=function(n){var e=n&&n.__esModule?function(){return n.default}:function(){return n};return r.d(e,{a:e}),e},r.d=function(n,e){for(var t in e)r.o(e,t)&&!r.o(n,t)&&Object.defineProperty(n,t,{enumerable:!0,get:e[t]})},r.g=function(){if("object"===typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(n){if("object"===typeof window)return window}}(),r.o=function(n,e){return Object.prototype.hasOwnProperty.call(n,e)},r.r=function(n){"undefined"!==typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(n,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(n,"__esModule",{value:!0})},r.p="/portfolio/_next/",function(){var n={272:0,218:0};r.O.j=function(e){return 0===n[e]};var e=function(e,t){var o,i,u=t[0],f=t[1],c=t[2],l=0;if(u.some((function(e){return 0!==n[e]}))){for(o in f)r.o(f,o)&&(r.m[o]=f[o]);if(c)var a=c(r)}for(e&&e(t);l {\n const { post } = props;\n\n const title = post.title;\n const content = post.content;\n const imagePath = `/portfolio/images/posts/${post.slug}/${post.image}`;\n\n const customRenderers = {\n p(paragraph) {\n const { node } = paragraph;\n\n if (node.children[0].tagName === 'img') {\n const image = node.children[0];\n\n return (\n
\n {image.alt}\n
\n );\n }\n\n return

{paragraph.children}

;\n },\n\n code(code) {\n const { className, children } = code;\n const language = className.split('-')[1]; // className is something like language-js => We need the \"js\" part here\n\n return (\n \n );\n },\n };\n\n return (\n
\n
\n
\n {content}\n
\n
\n
\n );\n};\n\nexport default PostContent;\n```\n"}},"__N_SSG":true} -------------------------------------------------------------------------------- /_next/static/css/4f57348167ca5ca8.css: -------------------------------------------------------------------------------- 1 | .projectItem_card__iJ0uT{border-radius:5px;padding:25px;background-color:var(--background-card);border:1px solid var(--border-card);transition:background 1s;margin-bottom:25px;display:flex;flex-direction:column;min-height:260px}.projectItem_card__iJ0uT .projectItem_image__1KPH_{display:flex;justify-content:center}.projectItem_card__iJ0uT .projectItem_image__1KPH_ img{border-radius:4px}.projectItem_card__iJ0uT .projectItem_placeholderContainer__rf5wo{margin:20px 0;width:100%;max-height:200px;display:flex;justify-content:center;align-items:center}.projectItem_card__iJ0uT .projectItem_placeholderContainer__rf5wo .projectItem_placeholder__PIX7b{text-align:center;margin:100% 0;color:#fff;font-weight:700;background-color:#8bb2c3;border-radius:50%;padding:5px;font-size:1.5rem;background-image:linear-gradient(-45deg,rgba(255,255,220,.2),transparent);width:200px;height:200px;box-shadow:0 2px 2px 0 rgba(0,0,0,.14),0 3px 1px -2px rgba(0,0,0,.12),0 1px 5px 0 rgba(0,0,0,.2)}.projectItem_card__iJ0uT h4{margin:0;color:var(--text-secondary);text-align:center}.projectItem_card__iJ0uT small{color:var(--text-tertiary);text-align:center}.projectItem_card__iJ0uT .projectItem_projectLinks__Gse_I{margin-top:auto;font-size:.9rem}.projectItem_card__iJ0uT .projectItem_projectLinks__Gse_I a{margin-right:15px;color:var(--accent);display:block;margin-bottom:10px}.projectItem_card__iJ0uT .projectItem_projectLinks__Gse_I a:hover{color:var(--text-primary)}.projectItem_card__iJ0uT .projectItem_projectLinks__Gse_I i{width:20px;margin-right:5px;color:var(--text-primary)}@media only screen and (min-width:768px){.projectItem_card__iJ0uT{margin-bottom:unset}.projectItem_card__iJ0uT .projectItem_projectLinks__Gse_I{display:flex;flex-direction:row;justify-content:center}}.allProjects_projectsGallery__lryDH{padding:50px 15px}.allProjects_projectsGallery__lryDH h1{text-align:center;font-size:2rem}.allProjects_projectsGallery__lryDH .allProjects_filter__gkP3s p{text-align:center}.allProjects_projectsGallery__lryDH .allProjects_filter__gkP3s .allProjects_filterButtons__K_f_k{display:flex;flex-wrap:wrap;justify-content:center}.allProjects_projectsGallery__lryDH .allProjects_filter__gkP3s .allProjects_filterButtons__K_f_k button{margin:2px}.allProjects_projectsGallery__lryDH .allProjects_galleryWrap___tv8B{margin-top:50px}@media only screen and (min-width:768px){.allProjects_projectsGallery__lryDH{padding:150px 25px;min-height:100vh}.allProjects_projectsGallery__lryDH .allProjects_container__Y_BvJ{max-width:1200px;margin:auto}.allProjects_projectsGallery__lryDH .allProjects_gallery__FR2EV{display:grid;grid-template-columns:repeat(2,1fr);grid-gap:25px}}@media only screen and (min-width:1080px){.allProjects_projectsGallery__lryDH .allProjects_gallery__FR2EV{grid-template-columns:repeat(3,1fr)}} -------------------------------------------------------------------------------- /_next/static/chunks/pages/projects/[slug]-84e1f98fc4c4d092.js: -------------------------------------------------------------------------------- 1 | (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[445],{48022:function(e,n,r){(window.__NEXT_P=window.__NEXT_P||[]).push(["/projects/[slug]",function(){return r(86588)}])},86588:function(e,n,r){"use strict";r.r(n),r.d(n,{__N_SSG:function(){return N},default:function(){return v}});var t=r(85893),s=r(9008),c=r.n(s),i=r(47011),a=r(86828),o=r(36645),l=r(84283),h=r(25675),d=r.n(h),j=r(68722),u=r.n(j),p=r(41664),m=r.n(p),_=r(18716),x=r(88494),f=r(23850),g=(r(21082),r(36797),r(21669),function(e){var n=e.project,r=e.currentTheme,s=n.content,c={code:function(e){var n=e.className,s=e.children,c=n.split("-")[1];return(0,t.jsx)(t.Fragment,{children:"dark"===r?(0,t.jsx)(o.Z,{showLineNumbers:!0,language:c,style:l.pJ,children:s}):(0,t.jsx)(o.Z,{showLineNumbers:!0,language:c,style:l.mQ,children:s})})}};return(0,t.jsx)("div",{className:u().projectDetail,children:(0,t.jsxs)("div",{className:"container section mvh-100 projectDetail",children:[(0,t.jsx)(m(),{href:"/projects/",children:(0,t.jsx)(_.E.button,{whileHover:{scale:1.1},whileTap:{scale:.9},className:"btn btn-filled",children:"View All Projects"})}),(0,t.jsxs)("div",{className:u().card,children:[(0,t.jsxs)("div",{className:u().projectLinks,children:[n.githubLink&&(0,t.jsxs)("a",{href:n.githubLink,target:"_blank",rel:"noreferrer",children:[(0,t.jsx)("i",{className:"fab fa-github"}),"Github"]}),n.liveLink&&(0,t.jsxs)("a",{href:n.liveLink,target:"_blank",rel:"noreferrer",children:[(0,t.jsx)("i",{className:"fas fa-link"}),"Website"]})]}),(0,t.jsx)("h1",{children:n.title}),(0,t.jsx)("small",{children:Array.isArray(n.tech)?n.tech.join(", "):n.tech}),n.image&&(0,t.jsx)("div",{className:u().projectImage,children:(0,t.jsx)(d(),{src:"../../portfolio/images/projects/".concat(n.image),width:500,height:360,alt:""})}),(0,t.jsx)(i.D,{components:c,rehypePlugins:[a.Z],children:s}),n.screenshots&&(0,t.jsxs)("div",{className:"mb-50",children:[(0,t.jsx)("h2",{children:"Screenshots"}),(0,t.jsx)(x.tq,{rewind:!0,grabCursor:!0,modules:[f.W_],navigation:!0,className:"mySwiper",children:n.screenshots.map((function(e,r){return(0,t.jsxs)(x.o5,{children:[(0,t.jsx)(d(),{src:"../../portfolio/images/projects/".concat(n.slug,"/").concat(e.screenshot),width:1e3,height:700,alt:e.description}),(0,t.jsxs)("div",{className:u().description,children:[r+1,". ",e.description]})]},r)}))})]})]})]})})}),N=!0,v=function(e){var n=e.project,r=e.currentTheme;return(0,t.jsxs)(t.Fragment,{children:[(0,t.jsxs)(c(),{children:[(0,t.jsxs)("title",{children:["Project - ",n.title]}),(0,t.jsx)("meta",{name:"description",content:n.description})]}),(0,t.jsx)(g,{project:n,currentTheme:r})]})}},68722:function(e){e.exports={projectDetail:"projectContent_projectDetail__YW6o_",card:"projectContent_card__n1tc0",cardAction:"projectContent_cardAction__iQ8iC",description:"projectContent_description__XVzsk",projectLinks:"projectContent_projectLinks__atmgO"}}},function(e){e.O(0,[675,716,854,828,774,888,179],(function(){return n=48022,e(e.s=n);var n}));var n=e.O();_N_E=n}]); -------------------------------------------------------------------------------- /_next/data/lH_ilZ9o8Ak1_-mg94rg5/posts.json: -------------------------------------------------------------------------------- 1 | {"pageProps":{"posts":[{"slug":"example-post-2","title":"Lorem Ipsum","date":"2022-04-03","image":"first-post.jpg","excerpt":"How to build a blog using react-markdown to render posts written in markdown","isFeatured":true,"tech":["Markdown"],"content":"\n# Using Markdown as a blog format\n\n![Image ...](/portfolio/images/posts/first-post/first-post.jpg)\n\n```text\n---\ntitle: 'Using Markdown as a blog format'\ndate: '2022-04-03'\nimage: first-post.jpg\nexcerpt: 'How to build a blog using react-markdown to render posts written in markdown'\nisFeatured: true\n---\n\n```\n\nLorem ipsum dolor sit, amet consectetur adipisicing elit. Dignissimos minima optio omnis commodi atque modi, dolores saepe nostrum vero sunt obcaecati recusandae animi delectus veritatis ut nam dolore magnam.\n\nLorem ipsum dolor sit amet consectetur, adipisicing elit. Debitis, explicabo necessitatibus cumque quis, labore incidunt facere dolor impedit odio fugit totam, praesentium blanditiis consequatur deleniti repellat reprehenderit modi aut enim.\n"},{"slug":"example-post","title":"Using Markdown as a blog format","date":"2022-04-03","image":"first-post.jpg","excerpt":"How to build a blog using react-markdown to render posts written in markdown","isFeatured":true,"tech":["Markdown"],"content":"\n# Using Markdown as a blog format\n\n![Image ...](/portfolio/images/posts/first-post/markdown.jpg)\n\n```text\n---\ntitle: 'Using Markdown as a blog format'\ndate: '2022-04-03'\nimage: first-post.jpg\nexcerpt: 'How to build a blog using react-markdown to render posts written in markdown'\nisFeatured: true\n---\n\n```\n\n```jsx\nimport ReactMarkdown from 'react-markdown';\nimport Image from 'next/image';\nimport classes from './postContent.module.scss';\nimport { Prism as SyntaxHighlighter } from 'react-syntax-highlighter';\nimport { atomDark } from 'react-syntax-highlighter/dist/cjs/styles/prism';\n\nconst PostContent = (props) => {\n const { post } = props;\n\n const title = post.title;\n const content = post.content;\n const imagePath = `/portfolio/images/posts/${post.slug}/${post.image}`;\n\n const customRenderers = {\n p(paragraph) {\n const { node } = paragraph;\n\n if (node.children[0].tagName === 'img') {\n const image = node.children[0];\n\n return (\n
\n {image.alt}\n
\n );\n }\n\n return

{paragraph.children}

;\n },\n\n code(code) {\n const { className, children } = code;\n const language = className.split('-')[1]; // className is something like language-js => We need the \"js\" part here\n\n return (\n \n );\n },\n };\n\n return (\n
\n
\n
\n {content}\n
\n
\n
\n );\n};\n\nexport default PostContent;\n```\n"}]},"__N_SSG":true} -------------------------------------------------------------------------------- /_next/static/chunks/pages/projects-e764dd9f068e5f44.js: -------------------------------------------------------------------------------- 1 | (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[327],{15039:function(e,r,t){(window.__NEXT_P=window.__NEXT_P||[]).push(["/projects",function(){return t(90734)}])},90734:function(e,r,t){"use strict";t.r(r),t.d(r,{__N_SSG:function(){return v},default:function(){return N}});var l=t(85893),n=t(9008),s=t.n(n),a=t(21448),c=t.n(a),i=t(67294),o=t(18716),d=t(21190),j=t(41563),u=t.n(j),h=t(41664),_=t.n(h),p=t(25675),f=t.n(p),m=function(e){var r=e.project;return(0,l.jsxs)(o.E.div,{animate:{opacity:1},initial:{opacity:0},exit:{scale:.1},layout:!0,className:u().card,children:[(0,l.jsx)(_(),{href:"/projects/".concat(r.slug),children:(0,l.jsx)("a",{children:(0,l.jsxs)("div",{className:u().cardContent,children:[(0,l.jsx)("h4",{children:r.title}),(0,l.jsx)("small",{className:"mb-10 d-block",children:Array.isArray(r.tech)?r.tech.join(", "):r.tech}),r.image?(0,l.jsx)("div",{className:u().image,children:(0,l.jsx)(f(),{src:"../../portfolio/images/projects/".concat(r.image),width:320,height:220,alt:""})}):(0,l.jsx)("div",{className:u().placeholderContainer,children:(0,l.jsx)("div",{className:u().placeholder,children:"."})})]})})}),(0,l.jsx)("p",{children:r.description}),(0,l.jsxs)("div",{className:u().projectLinks,children:[r.githubLink&&(0,l.jsxs)("a",{href:r.githubLink,target:"_blank",rel:"noreferrer",children:[(0,l.jsx)("i",{className:"fab fa-github"}),"Github"]}),r.liveLink&&(0,l.jsxs)("a",{href:r.liveLink,target:"_blank",rel:"noreferrer",children:[(0,l.jsx)("i",{className:"fas fa-link"}),"Website"]}),(0,l.jsx)(_(),{href:"/projects/".concat(r.slug),children:(0,l.jsxs)("a",{children:[(0,l.jsx)("i",{className:"fa fa-circle-info"}),"Details"]})})]})]})},x=function(e){var r=e.projects,t=(0,i.useState)("all"),n=t[0],s=t[1],a=(0,i.useState)("all"),j=a[0],u=a[1],h=[];r.map((function(e){var r=e.tech;if(Array.isArray(r)){var t=!0,l=!1,n=void 0;try{for(var s,a=r[Symbol.iterator]();!(t=(s=a.next()).done);t=!0){var c=s.value;h.includes(c)||h.push(c)}}catch(i){l=!0,n=i}finally{try{t||null==a.return||a.return()}finally{if(l)throw n}}}})),h.sort();var _,p=function(e){s(e),u(e)};return _="all"===n?r.sort((function(e,r){return r.isFeatured-e.isFeatured})):r.filter((function(e){return e.tech.includes(n)})),(0,l.jsx)("div",{className:c().projectsGallery,children:(0,l.jsxs)("div",{className:c().container,children:[(0,l.jsx)("h1",{children:"Projects"}),(0,l.jsxs)("div",{className:c().filter,children:[(0,l.jsx)("p",{children:"Sort by tech:"}),(0,l.jsxs)("div",{className:c().filterButtons,children:[(0,l.jsx)(o.E.button,{whileHover:{scale:1.1},whileTap:{scale:.9},onClick:function(){return p("all")},className:"all"===j?"btn btn-outlined sm active":"btn btn-outlined sm",children:"All"}),h.map((function(e){return(0,l.jsx)(o.E.button,{whileHover:{scale:1.1},whileTap:{scale:.9},onClick:function(){return p(e)},className:j===e?"btn btn-outlined sm active":"btn btn-outlined sm",children:e},e)}))]})]}),(0,l.jsx)("div",{className:c().galleryWrap,children:(0,l.jsx)("div",{className:c().gallery,children:(0,l.jsx)(d.M,{children:_.map((function(e,r){return(0,l.jsx)(m,{project:e},r)}))})})})]})})},v=!0,N=function(e){var r=e.projects;return(0,l.jsxs)(l.Fragment,{children:[(0,l.jsxs)(s(),{children:[(0,l.jsx)("title",{children:"All Projects"}),(0,l.jsx)("meta",{name:"description",content:"List of all of my projects. Tech-Stack: React, Next.js, Redux, Typescript, Node.js, Express, MongoDB, Bootstrap, Shopware."})]}),(0,l.jsx)(x,{projects:r})]})}},21448:function(e){e.exports={projectsGallery:"allProjects_projectsGallery__lryDH",filter:"allProjects_filter__gkP3s",filterButtons:"allProjects_filterButtons__K_f_k",galleryWrap:"allProjects_galleryWrap___tv8B",container:"allProjects_container__Y_BvJ",gallery:"allProjects_gallery__FR2EV"}},41563:function(e){e.exports={card:"projectItem_card__iJ0uT",image:"projectItem_image__1KPH_",placeholderContainer:"projectItem_placeholderContainer__rf5wo",placeholder:"projectItem_placeholder__PIX7b",projectLinks:"projectItem_projectLinks__Gse_I"}}},function(e){e.O(0,[675,774,888,179],(function(){return r=15039,e(e.s=r);var r}));var r=e.O();_N_E=r}]); -------------------------------------------------------------------------------- /_next/data/lH_ilZ9o8Ak1_-mg94rg5/index.json: -------------------------------------------------------------------------------- 1 | {"pageProps":{"posts":[{"slug":"example-post-2","title":"Lorem Ipsum","date":"2022-04-03","image":"first-post.jpg","excerpt":"How to build a blog using react-markdown to render posts written in markdown","isFeatured":true,"tech":["Markdown"],"content":"\n# Using Markdown as a blog format\n\n![Image ...](/portfolio/images/posts/first-post/first-post.jpg)\n\n```text\n---\ntitle: 'Using Markdown as a blog format'\ndate: '2022-04-03'\nimage: first-post.jpg\nexcerpt: 'How to build a blog using react-markdown to render posts written in markdown'\nisFeatured: true\n---\n\n```\n\nLorem ipsum dolor sit, amet consectetur adipisicing elit. Dignissimos minima optio omnis commodi atque modi, dolores saepe nostrum vero sunt obcaecati recusandae animi delectus veritatis ut nam dolore magnam.\n\nLorem ipsum dolor sit amet consectetur, adipisicing elit. Debitis, explicabo necessitatibus cumque quis, labore incidunt facere dolor impedit odio fugit totam, praesentium blanditiis consequatur deleniti repellat reprehenderit modi aut enim.\n"},{"slug":"example-post","title":"Using Markdown as a blog format","date":"2022-04-03","image":"first-post.jpg","excerpt":"How to build a blog using react-markdown to render posts written in markdown","isFeatured":true,"tech":["Markdown"],"content":"\n# Using Markdown as a blog format\n\n![Image ...](/portfolio/images/posts/first-post/markdown.jpg)\n\n```text\n---\ntitle: 'Using Markdown as a blog format'\ndate: '2022-04-03'\nimage: first-post.jpg\nexcerpt: 'How to build a blog using react-markdown to render posts written in markdown'\nisFeatured: true\n---\n\n```\n\n```jsx\nimport ReactMarkdown from 'react-markdown';\nimport Image from 'next/image';\nimport classes from './postContent.module.scss';\nimport { Prism as SyntaxHighlighter } from 'react-syntax-highlighter';\nimport { atomDark } from 'react-syntax-highlighter/dist/cjs/styles/prism';\n\nconst PostContent = (props) => {\n const { post } = props;\n\n const title = post.title;\n const content = post.content;\n const imagePath = `/portfolio/images/posts/${post.slug}/${post.image}`;\n\n const customRenderers = {\n p(paragraph) {\n const { node } = paragraph;\n\n if (node.children[0].tagName === 'img') {\n const image = node.children[0];\n\n return (\n
\n {image.alt}\n
\n );\n }\n\n return

{paragraph.children}

;\n },\n\n code(code) {\n const { className, children } = code;\n const language = className.split('-')[1]; // className is something like language-js => We need the \"js\" part here\n\n return (\n \n );\n },\n };\n\n return (\n
\n
\n
\n {content}\n
\n
\n
\n );\n};\n\nexport default PostContent;\n```\n"}],"featuredProjects":[{"slug":"example-1","title":"Example 1","tech":["React","MongoDB","Node","Express","Context"],"description":"This is a MERN Fullstack project with authentication and CRUD functionality.","liveLink":"https://google.com/","githubLink":"https://github.com/","image":"contact-keeper.png","isFeatured":true,"screenshots":[{"screenshot":"01-home.png","description":"Homepage with navbar and hero element."},{"screenshot":"02-home.png","description":"Homepage. Carousel with 3 top-rated products and general product listing."}],"content":"\n## Description\n\nThis is a MERN Fullstack project with authentication and CRUD functionality.\n\n## Key takeaways\n\nContext\n\n#### Code Example\n\nCombines all reducers and apply thunk (middleware that allows\nyou to return functions).\n\n
\n\n \n View code\n \n \n \n \n\n```js\nconst reducer = combineReducers({\n productList: productListReducer,\n});\n```\n\n
\n
\n"},{"slug":"example-2","title":"Example 2","tech":["React","Context"],"description":"Search for github users with Github API and React Context.","liveLink":"https://google.com/","githubLink":"https://github.com/","image":"github-finder.png","isFeatured":true,"content":"\n## Description\n\nUser searching app using Github API and context.\n\n## Key takeaways\n\nGithub API and Context\n"}]},"__N_SSG":true} -------------------------------------------------------------------------------- /404.html: -------------------------------------------------------------------------------- 1 | 404: This page could not be found

404

This page could not be found.

-------------------------------------------------------------------------------- /_next/static/css/afd1f1acc4546ee2.css: -------------------------------------------------------------------------------- 1 | :root{--background:#f5f5f5;--background-card:#fff;--background-secondary:#8bb2c3;--text-primary:#000;--text-secondary:#6e6d7a;--text-tertiary:#8bb2c3;--accent:#f4494e;--transparent-primary:#fffffff2;--transparent-secondary:#fffffffc;--border:#f8f8f8;--border-light:#6464640d;--border-card:#cecece;--button-color:#687886;--button-border:#68788663;--gradient-primary:#8bb2c3;--gradient-secondary:#8bb2c3}[data-theme=dark]{--background:#22272e;--background-card:#373e47;--background-secondary:#efe3cf;--text-primary:#adbac7;--text-secondary:#efe3cf;--text-tertiary:#8bb2c3;--accent:#ff787e;--transparent-primary:#2d333bed;--transparent-secondary:#242729fc;--border:#4b5154;--border-light:#ffffff0d;--border-card:#4b5154;--button-color:#efe3cf;--button-border:#68788663;--gradient-primary:#8bb2c3;--gradient-secondary:#8bb2c3}button{cursor:pointer;outline:none;border:none}.btn{width:100%;text-align:center;border-radius:5px;padding:15px 25px;box-shadow:0 2px 2px 0 rgba(0,0,0,.14),0 3px 1px -2px rgba(0,0,0,.12),0 1px 5px 0 rgba(0,0,0,.2)}.btn.active{color:#000;background-color:var(--background-secondary)}.btn.sm{width:unset;padding:5px 10px}.btn-outlined{color:var(--button-color);background-color:transparent}.btn-filled,.btn-outlined{border:1px solid var(--button-border)}.btn-filled{color:var(--background-card);background-color:var(--background-secondary)}@media only screen and (min-width:480px){.btn{width:unset}}.projectDetail .swiper-horizontal>.swiper-pagination-bullets,.projectDetail .swiper-pagination-bullets.swiper-pagination-horizontal,.projectDetail .swiper-pagination-custom,.projectDetail .swiper-pagination-fraction{background-color:var(--transparent-primary);padding:5px;border-radius:6px;border:1px solid var(--border-card)}.projectDetail .swiper-button-next,.projectDetail .swiper-button-prev{top:calc(50% - 100px)}.swiper-pagination-bullet{background-color:var(--background-secondary)!important}.swiper-button-next,.swiper-button-prev{color:var(--background-secondary)!important}.featuredProjects .swiper-3d .swiper-slide-shadow,.featuredProjects .swiper-3d .swiper-slide-shadow-bottom,.featuredProjects .swiper-3d .swiper-slide-shadow-left,.featuredProjects .swiper-3d .swiper-slide-shadow-right,.featuredProjects .swiper-3d .swiper-slide-shadow-top{border-radius:5px}.featuredProjects .swiper-button-next,.featuredProjects .swiper-rtl .swiper-button-prev{right:-15px!important}.featuredProjects .swiper-button-prev,.featuredProjects .swiper-rtl .swiper-button-next{left:-15px!important}.projectDetail .swiper-slide{display:flex;flex-direction:column;align-items:center}.text-center{text-align:center}.mvh-100{min-height:100vh}.mt-50{margin-top:50px}.mb-10{margin-bottom:10px}.mb-50{margin-bottom:50px}.mb-100{margin-bottom:100px}.mr-25{margin-right:25px}.d-flex{display:flex}.d-block{display:block}.section{padding:50px 15px}.app{color:var(--text-primary);background-color:var(--background);transition:background 1s;min-height:100vh}@media only screen and (min-width:768px){.section{padding:100px 25px}.container{max-width:1200px;margin:auto}.row{display:flex}}.iconScroll{display:none}@media only screen and (min-width:768px)and (min-height:768px){.iconScrollContainer .iconScroll{position:relative;margin:auto;display:block;width:20px;height:40px;border:2px solid var(--border-card);border-radius:25px}.iconScrollContainer .iconScroll:before{position:absolute;left:50%;content:"";width:8px;height:8px;background:var(--text-secondary);margin-left:-4px;top:2px;border-radius:4px;-webkit-animation-duration:1.5s;animation-duration:1.5s;-webkit-animation-iteration-count:infinite;animation-iteration-count:infinite;-webkit-animation-name:scroll;animation-name:scroll}@-webkit-keyframes scroll{0%{opacity:1}to{opacity:0;transform:translateY(26px)}}@keyframes scroll{0%{opacity:1}to{opacity:0;transform:translateY(26px)}}}body,html{padding:0;margin:0;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,sans-serif}*{font-family:Poppins,sans-serif}pre span{font-family:Fira Code,monospace}a{color:inherit;text-decoration:none}*{box-sizing:border-box}html{scroll-behavior:smooth}h2{font-size:2rem}h2,h3,h4{color:var(--text-secondary)}.contactModal_contactModal__OSEUT{text-align:center;border-radius:5px;background-color:var(--background-card);padding:1rem;overflow:auto;z-index:3;position:fixed;max-width:1200px;min-width:340px;max-height:100vh;min-height:580px;left:50%;top:50%;transform:translate(-50%,-50%)}.contactModal_contactModal__OSEUT .contactModal_close__AHKu1{position:absolute;right:20px;top:20px}.contactModal_contactModal__OSEUT .contactModal_inputField__z_7C1{margin:25px 0}.contactModal_contactModal__OSEUT .contactModal_inputField__z_7C1 label{margin-bottom:5px;text-align:left;display:block}.contactModal_contactModal__OSEUT .contactModal_inputField__z_7C1 input,.contactModal_contactModal__OSEUT .contactModal_inputField__z_7C1 textarea{color:var(--text-primary);background-color:transparent;width:100%;border:none;border-bottom:1px solid var(--text-secondary)}.contactModal_contactModal__OSEUT .contactModal_inputField__z_7C1 textarea{border:1px solid var(--text-secondary);border-radius:5px}.contactModal_contactModal__OSEUT .contactModal_inputField__z_7C1 input:focus,.contactModal_contactModal__OSEUT .contactModal_inputField__z_7C1 textarea:focus{outline:none}.contactModal_contactModal__OSEUT .contactModal_inputField__z_7C1 textarea{width:100%;height:175px}.contactModal_contactModal__OSEUT .contactModal_action__4JZ1_{margin-bottom:20px;display:flex;justify-content:space-between;margin-top:auto}.contactModal_contactModal__OSEUT .contactModal_action__4JZ1_ i{font-size:3.4rem;color:var(--background-secondary)}.contactModal_contactModal__OSEUT .contactModal_action__4JZ1_ .contactModal_sendLink__Ybyk4{align-self:center}@media only screen and (min-width:768px){.contactModal_contactModal__OSEUT{min-width:600px;overflow:hidden;padding:2rem}.contactModal_contactModal__OSEUT .contactModal_contactForm__aUgTb{display:flex;flex-direction:column;height:425px}.contactModal_contactModal__OSEUT .contactModal_row__iYdDq{display:flex;justify-content:center}.contactModal_contactModal__OSEUT .contactModal_inputField__z_7C1{margin:25px 0;width:100%}.contactModal_contactModal__OSEUT .contactModal_action__4JZ1_{margin-bottom:unset}}.contactModal_contactModalConfirmation__u_gbZ{display:flex;flex-direction:column;justify-content:space-between}.contactModal_contactModalConfirmation__u_gbZ .contactModal_linkedinLink__8nuQz i{font-size:4rem}.contactModal_contactModalConfirmation__u_gbZ .contactModal_confirmationButton__0We9D button{width:100%}.modal_backdrop__RPI3T{position:fixed;z-index:2;background-color:rgba(0,0,0,.75);width:100%;height:100vh;top:0;left:0}.navbar_navbar__LVObF{z-index:2;height:65px;width:100%;position:fixed;transition:background .3s}.navbar_navbar__LVObF.navbar_sticky__4uVwM{position:fixed;top:0;background-color:var(--transparent-primary);box-shadow:0 6px 30px 2px rgba(0,0,0,.03),0 3px 15px 1px rgba(0,0,0,.02),0 1px 8px 1px rgba(0,0,0,.01)}.navbar_navbar__LVObF .navbar_container__RaknJ{display:flex;justify-content:space-between;align-items:center;height:100%;padding:0 15px}.navbar_navbar__LVObF .navbar_logo__UErdh{z-index:3;font-weight:700;background-color:#efe3cf;border-radius:50%;padding:5px;font-size:1.5rem;width:45px;height:45px;box-shadow:0 2px 2px 0 rgba(0,0,0,.14),0 3px 1px -2px rgba(0,0,0,.12),0 1px 5px 0 rgba(0,0,0,.2)}.navbar_navbar__LVObF .navbar_navMenu___hRqD{height:0;overflow:hidden;transition:all .4s ease;position:absolute;top:0;padding-top:65px}.navbar_navbar__LVObF .navbar_navMenu___hRqD a{font-size:1.3rem;color:var(--text-secondary);border-bottom:1px solid var(--border)}.navbar_navbar__LVObF .navbar_navMenu___hRqD a:first-child{border-top:1px solid var(--border)}.navbar_navbar__LVObF .navbar_navMenu___hRqD .navbar_linkWrapper__Tf745 a:hover{color:var(--text-tertiary)}.navbar_navbar__LVObF .navbar_navMenu___hRqD.navbar_responsive__J1XY8{height:auto;width:100%;display:block;text-align:center;right:0;background-color:var(--transparent-primary)}.navbar_navbar__LVObF .navbar_navMenu___hRqD.navbar_responsive__J1XY8 a{display:block;padding:25px 0}.navbar_navbar__LVObF .navbar_navContainer__1x0xH{position:relative;display:flex;align-items:center}.navbar_navbar__LVObF .navbar_navContainer__1x0xH .navbar_icon__LC6_z{cursor:pointer;background-color:transparent;border:none}.navbar_navbar__LVObF .navbar_navContainer__1x0xH .navbar_icon__LC6_z i,.navbar_navbar__LVObF .navbar_navContainer__1x0xH .navbar_icon__LC6_z svg{font-size:1.5rem;color:var(--text-secondary);padding:5px}.navbar_navbar__LVObF .navbar_navContainer__1x0xH .navbar_icon__LC6_z i path,.navbar_navbar__LVObF .navbar_navContainer__1x0xH .navbar_icon__LC6_z svg path{stroke:var(--text-secondary)}.navbar_navbar__LVObF .navbar_navContainer__1x0xH .navbar_iconMain__bk69K{height:40px}@media only screen and (min-width:768px){.navbar_navbar__LVObF{padding:0 15px}.navbar_navbar__LVObF .navbar_container__RaknJ{max-width:1200px;margin:auto;padding:unset}.navbar_navbar__LVObF .navbar_navMenu___hRqD{height:auto;display:flex;width:45%;top:0;padding-top:0;position:static}.navbar_navbar__LVObF .navbar_navMenu___hRqD.navbar_responsive__J1XY8{width:45%;display:flex;background-color:transparent}.navbar_navbar__LVObF .navbar_navMenu___hRqD .navbar_linkWrapper__Tf745{padding:unset;display:flex;justify-content:space-between;width:100%}.navbar_navbar__LVObF .navbar_navMenu___hRqD a{border-bottom:none;filter:drop-shadow(0 3px 2px rgba(0,0,0,.15))}.navbar_navbar__LVObF .navbar_navMenu___hRqD a:first-child{border-top:none}.navbar_navbar__LVObF .navbar_iconMain__bk69K{display:none}}.footer_footer__zsYAi{background-color:var(--background-card);transition:background 1s;color:var(--text-secondary);text-align:center;padding:25px}.footer_footer__zsYAi .footer_socialMedia__hzLZE{margin-bottom:5px}.footer_footer__zsYAi .footer_socialMedia__hzLZE i{font-size:2rem;margin:0 5px;color:var(--text-secondary)}.footer_footer__zsYAi small{font-size:.7rem} -------------------------------------------------------------------------------- /projects/example-2.html: -------------------------------------------------------------------------------- 1 | Project - Example 2

Example 2

React, Context

Description

2 |

User searching app using Github API and context.

3 |

Key takeaways

4 |

Github API and Context

-------------------------------------------------------------------------------- /posts.html: -------------------------------------------------------------------------------- 1 | Blog Posts

Blog Posts

Sort by tech:

-------------------------------------------------------------------------------- /_next/static/chunks/675-0787ec1bc5f64e14.js: -------------------------------------------------------------------------------- 1 | (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[675],{19749:function(e,t,i){"use strict";function n(e,t){(null==t||t>e.length)&&(t=e.length);for(var i=0,n=new Array(t);i=0||(r[i]=e[i]);return r}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,i)&&(r[i]=e[i])}return r}s={deviceSizes:[640,750,828,1080,1200,1920,2048,3840],imageSizes:[16,32,48,64,96,128,256,384],path:"https://renebitter.github.io/",loader:"akamai",experimentalLayoutRaw:!1};var v={deviceSizes:[640,750,828,1080,1200,1920,2048,3840],imageSizes:[16,32,48,64,96,128,256,384],path:"https://renebitter.github.io/",loader:"akamai",experimentalLayoutRaw:!1},w=new Set,S=(new Map,"data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7");var z=new Map([["default",function(e){var t=e.config,i=e.src,n=e.width,r=e.quality;0;if(i.endsWith(".svg")&&!t.dangerouslyAllowSVG)return i;return"".concat(p.normalizePathTrailingSlash(t.path),"?url=").concat(encodeURIComponent(i),"&w=").concat(n,"&q=").concat(r||75)}],["imgix",function(e){var t=e.config,i=e.src,n=e.width,r=e.quality,o=new URL("".concat(t.path).concat(I(i))),a=o.searchParams;a.set("auto",a.get("auto")||"format"),a.set("fit",a.get("fit")||"max"),a.set("w",a.get("w")||n.toString()),r&&a.set("q",r.toString());return o.href}],["cloudinary",function(e){var t=e.config,i=e.src,n=e.width,r=e.quality,o=["f_auto","c_limit","w_"+n,"q_"+(r||"auto")].join(",")+"/";return"".concat(t.path).concat(o).concat(I(i))}],["akamai",function(e){var t=e.config,i=e.src,n=e.width;return"".concat(t.path).concat(I(i),"?imwidth=").concat(n)}],["custom",function(e){var t=e.src;throw new Error('Image with src "'.concat(t,'" is missing "loader" prop.')+"\nRead more: https://nextjs.org/docs/messages/next-image-missing-loader")}]]);function A(e){return void 0!==e.default}function j(e){var t=e.config,i=e.src,n=e.unoptimized,r=e.layout,o=e.width,l=e.quality,c=e.sizes,s=e.loader;if(n)return{src:i,srcSet:void 0,sizes:void 0};var u=function(e,t,i,n){var r=e.deviceSizes,o=e.allSizes;if(n&&("fill"===i||"responsive"===i||"raw"===i)){for(var l,c=/(^|\s)(1?\d?\d)vw/g,s=[];l=c.exec(n);l)s.push(parseInt(l[2]));if(s.length){var u,d=.01*(u=Math).min.apply(u,a(s));return{widths:o.filter((function(e){return e>=r[0]*d})),kind:"w"}}return{widths:o,kind:"w"}}return"number"!==typeof t||"fill"===i||"responsive"===i?{widths:r,kind:"w"}:{widths:a(new Set([t,2*t].map((function(e){return o.find((function(t){return t>=e}))||o[o.length-1]})))),kind:"x"}}(t,o,r,c),d=u.widths,f=u.kind,g=d.length-1;return{sizes:c||"w"!==f?c:"100vw",srcSet:d.map((function(e,n){return"".concat(s({config:t,src:i,quality:l,width:e})," ").concat("w"===f?e:n+1).concat(f)})).join(", "),src:s({config:t,src:i,quality:l,width:d[g]})}}function O(e){return"number"===typeof e?e:"string"===typeof e?parseInt(e,10):void 0}function x(e){var t,i=(null===(t=e.config)||void 0===t?void 0:t.loader)||"default",n=z.get(i);if(n)return n(e);throw new Error('Unknown "loader" found in "next.config.js". Expected: '.concat(f.VALID_LOADERS.join(", "),". Received: ").concat(i))}function k(e,t,i,n,r,o){e&&e.src!==S&&e["data-loaded-src"]!==t&&(e["data-loaded-src"]=t,("decode"in e?e.decode():Promise.resolve()).catch((function(){})).then((function(){if(e.parentNode&&(w.add(t),"blur"===n&&o(!0),null===r||void 0===r?void 0:r.current)){var i=e.naturalWidth,a=e.naturalHeight;r.current({naturalWidth:i,naturalHeight:a})}})))}var E=function(e){var t=e.imgAttributes,i=e.heightInt,n=e.widthInt,r=e.qualityInt,o=e.layout,a=e.className,l=e.imgStyle,c=e.blurStyle,s=e.isLazy,d=e.placeholder,f=e.loading,g=e.srcString,m=e.config,p=e.unoptimized,h=e.loader,v=e.onLoadingCompleteRef,w=e.setBlurComplete,S=e.setIntersection,z=e.onLoad,A=e.onError,O=(e.isVisible,b(e,["imgAttributes","heightInt","widthInt","qualityInt","layout","className","imgStyle","blurStyle","isLazy","placeholder","loading","srcString","config","unoptimized","loader","onLoadingCompleteRef","setBlurComplete","setIntersection","onLoad","onError","isVisible"]));return u.default.createElement(u.default.Fragment,null,u.default.createElement("img",Object.assign({},O,t,"raw"===o?{height:i,width:n}:{},{decoding:"async","data-nimg":o,className:a,style:y({},l,c),ref:u.useCallback((function(e){S(e),(null===e||void 0===e?void 0:e.complete)&&k(e,g,0,d,v,w)}),[S,g,o,d,v,w]),onLoad:function(e){k(e.currentTarget,g,0,d,v,w),z&&z(e)},onError:function(e){"blur"===d&&w(!0),A&&A(e)}})),(s||"blur"===d)&&u.default.createElement("noscript",null,u.default.createElement("img",Object.assign({},O,j({config:m,src:g,unoptimized:p,layout:o,width:n,quality:r,sizes:t.sizes,loader:h}),"raw"===o?{height:i,width:n}:{},{decoding:"async","data-nimg":o,style:l,className:a,loading:f||"lazy"}))))};function I(e){return"/"===e[0]?e.slice(1):e}("function"===typeof t.default||"object"===typeof t.default&&null!==t.default)&&(Object.assign(t.default,t),e.exports=t.default)},25675:function(e,t,i){e.exports=i(19749)}}]); -------------------------------------------------------------------------------- /posts/example-post-2.html: -------------------------------------------------------------------------------- 1 | Lorem Ipsum

Using Markdown as a blog format

2 |

Image ...

3 |
1---
 4 | 2title: 'Using Markdown as a blog format'
 5 | 3date: '2022-04-03'
 6 | 4image: first-post.jpg
 7 | 5excerpt: 'How to build a blog using react-markdown to render posts written in markdown'
 8 | 6isFeatured: true
 9 | 7---
10 | 8
11 | 9
12 |

Lorem ipsum dolor sit, amet consectetur adipisicing elit. Dignissimos minima optio omnis commodi atque modi, dolores saepe nostrum vero sunt obcaecati recusandae animi delectus veritatis ut nam dolore magnam.

13 |

Lorem ipsum dolor sit amet consectetur, adipisicing elit. Debitis, explicabo necessitatibus cumque quis, labore incidunt facere dolor impedit odio fugit totam, praesentium blanditiis consequatur deleniti repellat reprehenderit modi aut enim.

-------------------------------------------------------------------------------- /_next/static/css/034f1c775601f1c6.css: -------------------------------------------------------------------------------- 1 | @font-face{font-family:swiper-icons;src:url("data:application/font-woff;charset=utf-8;base64, d09GRgABAAAAAAZgABAAAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABGRlRNAAAGRAAAABoAAAAci6qHkUdERUYAAAWgAAAAIwAAACQAYABXR1BPUwAABhQAAAAuAAAANuAY7+xHU1VCAAAFxAAAAFAAAABm2fPczU9TLzIAAAHcAAAASgAAAGBP9V5RY21hcAAAAkQAAACIAAABYt6F0cBjdnQgAAACzAAAAAQAAAAEABEBRGdhc3AAAAWYAAAACAAAAAj//wADZ2x5ZgAAAywAAADMAAAD2MHtryVoZWFkAAABbAAAADAAAAA2E2+eoWhoZWEAAAGcAAAAHwAAACQC9gDzaG10eAAAAigAAAAZAAAArgJkABFsb2NhAAAC0AAAAFoAAABaFQAUGG1heHAAAAG8AAAAHwAAACAAcABAbmFtZQAAA/gAAAE5AAACXvFdBwlwb3N0AAAFNAAAAGIAAACE5s74hXjaY2BkYGAAYpf5Hu/j+W2+MnAzMYDAzaX6QjD6/4//Bxj5GA8AuRwMYGkAPywL13jaY2BkYGA88P8Agx4j+/8fQDYfA1AEBWgDAIB2BOoAeNpjYGRgYNBh4GdgYgABEMnIABJzYNADCQAACWgAsQB42mNgYfzCOIGBlYGB0YcxjYGBwR1Kf2WQZGhhYGBiYGVmgAFGBiQQkOaawtDAoMBQxXjg/wEGPcYDDA4wNUA2CCgwsAAAO4EL6gAAeNpj2M0gyAACqxgGNWBkZ2D4/wMA+xkDdgAAAHjaY2BgYGaAYBkGRgYQiAHyGMF8FgYHIM3DwMHABGQrMOgyWDLEM1T9/w8UBfEMgLzE////P/5//f/V/xv+r4eaAAeMbAxwIUYmIMHEgKYAYjUcsDAwsLKxc3BycfPw8jEQA/gZBASFhEVExcQlJKWkZWTl5BUUlZRVVNXUNTQZBgMAAMR+E+gAEQFEAAAAKgAqACoANAA+AEgAUgBcAGYAcAB6AIQAjgCYAKIArAC2AMAAygDUAN4A6ADyAPwBBgEQARoBJAEuATgBQgFMAVYBYAFqAXQBfgGIAZIBnAGmAbIBzgHsAAB42u2NMQ6CUAyGW568x9AneYYgm4MJbhKFaExIOAVX8ApewSt4Bic4AfeAid3VOBixDxfPYEza5O+Xfi04YADggiUIULCuEJK8VhO4bSvpdnktHI5QCYtdi2sl8ZnXaHlqUrNKzdKcT8cjlq+rwZSvIVczNiezsfnP/uznmfPFBNODM2K7MTQ45YEAZqGP81AmGGcF3iPqOop0r1SPTaTbVkfUe4HXj97wYE+yNwWYxwWu4v1ugWHgo3S1XdZEVqWM7ET0cfnLGxWfkgR42o2PvWrDMBSFj/IHLaF0zKjRgdiVMwScNRAoWUoH78Y2icB/yIY09An6AH2Bdu/UB+yxopYshQiEvnvu0dURgDt8QeC8PDw7Fpji3fEA4z/PEJ6YOB5hKh4dj3EvXhxPqH/SKUY3rJ7srZ4FZnh1PMAtPhwP6fl2PMJMPDgeQ4rY8YT6Gzao0eAEA409DuggmTnFnOcSCiEiLMgxCiTI6Cq5DZUd3Qmp10vO0LaLTd2cjN4fOumlc7lUYbSQcZFkutRG7g6JKZKy0RmdLY680CDnEJ+UMkpFFe1RN7nxdVpXrC4aTtnaurOnYercZg2YVmLN/d/gczfEimrE/fs/bOuq29Zmn8tloORaXgZgGa78yO9/cnXm2BpaGvq25Dv9S4E9+5SIc9PqupJKhYFSSl47+Qcr1mYNAAAAeNptw0cKwkAAAMDZJA8Q7OUJvkLsPfZ6zFVERPy8qHh2YER+3i/BP83vIBLLySsoKimrqKqpa2hp6+jq6RsYGhmbmJqZSy0sraxtbO3sHRydnEMU4uR6yx7JJXveP7WrDycAAAAAAAH//wACeNpjYGRgYOABYhkgZgJCZgZNBkYGLQZtIJsFLMYAAAw3ALgAeNolizEKgDAQBCchRbC2sFER0YD6qVQiBCv/H9ezGI6Z5XBAw8CBK/m5iQQVauVbXLnOrMZv2oLdKFa8Pjuru2hJzGabmOSLzNMzvutpB3N42mNgZGBg4GKQYzBhYMxJLMlj4GBgAYow/P/PAJJhLM6sSoWKfWCAAwDAjgbRAAB42mNgYGBkAIIbCZo5IPrmUn0hGA0AO8EFTQAA");font-weight:400;font-style:normal}:root{--swiper-theme-color:#007aff}.swiper{margin-left:auto;margin-right:auto;position:relative;overflow:hidden;list-style:none;padding:0;z-index:1}.swiper-vertical>.swiper-wrapper{flex-direction:column}.swiper-wrapper{position:relative;width:100%;height:100%;z-index:1;display:flex;transition-property:transform;box-sizing:content-box}.swiper-android .swiper-slide,.swiper-wrapper{transform:translateZ(0)}.swiper-pointer-events{touch-action:pan-y}.swiper-pointer-events.swiper-vertical{touch-action:pan-x}.swiper-slide{flex-shrink:0;width:100%;height:100%;position:relative;transition-property:transform}.swiper-slide-invisible-blank{visibility:hidden}.swiper-autoheight,.swiper-autoheight .swiper-slide{height:auto}.swiper-autoheight .swiper-wrapper{align-items:flex-start;transition-property:transform,height}.swiper-backface-hidden .swiper-slide{transform:translateZ(0);-webkit-backface-visibility:hidden;backface-visibility:hidden}.swiper-3d,.swiper-3d.swiper-css-mode .swiper-wrapper{perspective:1200px}.swiper-3d .swiper-cube-shadow,.swiper-3d .swiper-slide,.swiper-3d .swiper-slide-shadow,.swiper-3d .swiper-slide-shadow-bottom,.swiper-3d .swiper-slide-shadow-left,.swiper-3d .swiper-slide-shadow-right,.swiper-3d .swiper-slide-shadow-top,.swiper-3d .swiper-wrapper{transform-style:preserve-3d}.swiper-3d .swiper-slide-shadow,.swiper-3d .swiper-slide-shadow-bottom,.swiper-3d .swiper-slide-shadow-left,.swiper-3d .swiper-slide-shadow-right,.swiper-3d .swiper-slide-shadow-top{position:absolute;left:0;top:0;width:100%;height:100%;pointer-events:none;z-index:10}.swiper-3d .swiper-slide-shadow{background:rgba(0,0,0,.15)}.swiper-3d .swiper-slide-shadow-left{background-image:linear-gradient(270deg,rgba(0,0,0,.5),transparent)}.swiper-3d .swiper-slide-shadow-right{background-image:linear-gradient(90deg,rgba(0,0,0,.5),transparent)}.swiper-3d .swiper-slide-shadow-top{background-image:linear-gradient(0deg,rgba(0,0,0,.5),transparent)}.swiper-3d .swiper-slide-shadow-bottom{background-image:linear-gradient(180deg,rgba(0,0,0,.5),transparent)}.swiper-css-mode>.swiper-wrapper{overflow:auto;scrollbar-width:none;-ms-overflow-style:none}.swiper-css-mode>.swiper-wrapper::-webkit-scrollbar{display:none}.swiper-css-mode>.swiper-wrapper>.swiper-slide{scroll-snap-align:start start}.swiper-horizontal.swiper-css-mode>.swiper-wrapper{-ms-scroll-snap-type:x mandatory;scroll-snap-type:x mandatory}.swiper-vertical.swiper-css-mode>.swiper-wrapper{-ms-scroll-snap-type:y mandatory;scroll-snap-type:y mandatory}.swiper-centered>.swiper-wrapper:before{content:"";flex-shrink:0;order:9999}.swiper-centered.swiper-horizontal>.swiper-wrapper>.swiper-slide:first-child{-webkit-margin-start:var(--swiper-centered-offset-before);margin-inline-start:var(--swiper-centered-offset-before)}.swiper-centered.swiper-horizontal>.swiper-wrapper:before{height:100%;min-height:1px;width:var(--swiper-centered-offset-after)}.swiper-centered.swiper-vertical>.swiper-wrapper>.swiper-slide:first-child{-webkit-margin-before:var(--swiper-centered-offset-before);margin-block-start:var(--swiper-centered-offset-before)}.swiper-centered.swiper-vertical>.swiper-wrapper:before{width:100%;min-width:1px;height:var(--swiper-centered-offset-after)}.swiper-centered>.swiper-wrapper>.swiper-slide{scroll-snap-align:center center}.swiper-pagination{position:absolute;text-align:center;transition:opacity .3s;transform:translateZ(0);z-index:10}.swiper-pagination.swiper-pagination-hidden{opacity:0}.swiper-pagination-disabled>.swiper-pagination,.swiper-pagination.swiper-pagination-disabled{display:none!important}.swiper-horizontal>.swiper-pagination-bullets,.swiper-pagination-bullets.swiper-pagination-horizontal,.swiper-pagination-custom,.swiper-pagination-fraction{bottom:10px;left:0;width:100%}.swiper-pagination-bullets-dynamic{overflow:hidden;font-size:0}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet{transform:scale(.33);position:relative}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active,.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-main{transform:scale(1)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-prev{transform:scale(.66)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-prev-prev{transform:scale(.33)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-next{transform:scale(.66)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-next-next{transform:scale(.33)}.swiper-pagination-bullet{width:var(--swiper-pagination-bullet-width,var(--swiper-pagination-bullet-size,8px));height:var(--swiper-pagination-bullet-height,var(--swiper-pagination-bullet-size,8px));display:inline-block;border-radius:50%;background:var(--swiper-pagination-bullet-inactive-color,#000);opacity:var(--swiper-pagination-bullet-inactive-opacity,.2)}button.swiper-pagination-bullet{border:none;margin:0;padding:0;box-shadow:none;-webkit-appearance:none;-moz-appearance:none;appearance:none}.swiper-pagination-clickable .swiper-pagination-bullet{cursor:pointer}.swiper-pagination-bullet:only-child{display:none!important}.swiper-pagination-bullet-active{opacity:var(--swiper-pagination-bullet-opacity,1);background:var(--swiper-pagination-color,var(--swiper-theme-color))}.swiper-pagination-vertical.swiper-pagination-bullets,.swiper-vertical>.swiper-pagination-bullets{right:10px;top:50%;transform:translate3d(0,-50%,0)}.swiper-pagination-vertical.swiper-pagination-bullets .swiper-pagination-bullet,.swiper-vertical>.swiper-pagination-bullets .swiper-pagination-bullet{margin:var(--swiper-pagination-bullet-vertical-gap,6px) 0;display:block}.swiper-pagination-vertical.swiper-pagination-bullets.swiper-pagination-bullets-dynamic,.swiper-vertical>.swiper-pagination-bullets.swiper-pagination-bullets-dynamic{top:50%;transform:translateY(-50%);width:8px}.swiper-pagination-vertical.swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet,.swiper-vertical>.swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet{display:inline-block;transition:transform .2s,top .2s}.swiper-horizontal>.swiper-pagination-bullets .swiper-pagination-bullet,.swiper-pagination-horizontal.swiper-pagination-bullets .swiper-pagination-bullet{margin:0 var(--swiper-pagination-bullet-horizontal-gap,4px)}.swiper-horizontal>.swiper-pagination-bullets.swiper-pagination-bullets-dynamic,.swiper-pagination-horizontal.swiper-pagination-bullets.swiper-pagination-bullets-dynamic{left:50%;transform:translateX(-50%);white-space:nowrap}.swiper-horizontal>.swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet,.swiper-pagination-horizontal.swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet{transition:transform .2s,left .2s}.swiper-horizontal.swiper-rtl>.swiper-pagination-bullets-dynamic .swiper-pagination-bullet{transition:transform .2s,right .2s}.swiper-pagination-progressbar{background:rgba(0,0,0,.25);position:absolute}.swiper-pagination-progressbar .swiper-pagination-progressbar-fill{background:var(--swiper-pagination-color,var(--swiper-theme-color));position:absolute;left:0;top:0;width:100%;height:100%;transform:scale(0);transform-origin:left top}.swiper-rtl .swiper-pagination-progressbar .swiper-pagination-progressbar-fill{transform-origin:right top}.swiper-horizontal>.swiper-pagination-progressbar,.swiper-pagination-progressbar.swiper-pagination-horizontal,.swiper-pagination-progressbar.swiper-pagination-vertical.swiper-pagination-progressbar-opposite,.swiper-vertical>.swiper-pagination-progressbar.swiper-pagination-progressbar-opposite{width:100%;height:4px;left:0;top:0}.swiper-horizontal>.swiper-pagination-progressbar.swiper-pagination-progressbar-opposite,.swiper-pagination-progressbar.swiper-pagination-horizontal.swiper-pagination-progressbar-opposite,.swiper-pagination-progressbar.swiper-pagination-vertical,.swiper-vertical>.swiper-pagination-progressbar{width:4px;height:100%;left:0;top:0}.swiper-pagination-lock{display:none}:root{--swiper-navigation-size:44px}.swiper-button-next,.swiper-button-prev{position:absolute;top:50%;width:calc(var(--swiper-navigation-size)/ 44 * 27);height:var(--swiper-navigation-size);margin-top:calc(0px - (var(--swiper-navigation-size)/ 2));z-index:10;cursor:pointer;display:flex;align-items:center;justify-content:center;color:var(--swiper-navigation-color,var(--swiper-theme-color))}.swiper-button-next.swiper-button-disabled,.swiper-button-prev.swiper-button-disabled{opacity:.35;cursor:auto;pointer-events:none}.swiper-button-next.swiper-button-hidden,.swiper-button-prev.swiper-button-hidden{opacity:0;cursor:auto;pointer-events:none}.swiper-navigation-disabled .swiper-button-next,.swiper-navigation-disabled .swiper-button-prev{display:none!important}.swiper-button-next:after,.swiper-button-prev:after{font-family:swiper-icons;font-size:var(--swiper-navigation-size);text-transform:none!important;letter-spacing:0;font-variant:normal;line-height:1}.swiper-button-prev,.swiper-rtl .swiper-button-next{left:10px;right:auto}.swiper-button-prev:after,.swiper-rtl .swiper-button-next:after{content:"prev"}.swiper-button-next,.swiper-rtl .swiper-button-prev{right:10px;left:auto}.swiper-button-next:after,.swiper-rtl .swiper-button-prev:after{content:"next"}.swiper-button-lock{display:none}.projectContent_projectDetail__YW6o_ h1{margin-bottom:0;color:var(--text-secondary)}.projectContent_projectDetail__YW6o_ h2{font-size:1.3rem;color:var(--text-secondary)}.projectContent_projectDetail__YW6o_ small{color:var(--text-tertiary);display:block;margin-bottom:25px}.projectContent_projectDetail__YW6o_ a{color:var(--text-tertiary)}.projectContent_projectDetail__YW6o_ strong{background:#cecece;padding:0 4px;border-radius:4px;color:#000;font-weight:400;font-size:.8rem}.projectContent_projectDetail__YW6o_ .projectContent_card__n1tc0{border-radius:5px;padding:25px;background-color:var(--background-card);transition:background 1s;border:1px solid var(--border-card);margin:25px 0;display:flex;flex-direction:column}.projectContent_projectDetail__YW6o_ .projectContent_card__n1tc0 h4{margin:0;color:var(--text-secondary)}.projectContent_projectDetail__YW6o_ .projectContent_card__n1tc0 time{color:var(--text-tertiary)}.projectContent_projectDetail__YW6o_ .projectContent_card__n1tc0 .projectContent_cardAction__iQ8iC{display:flex;flex-direction:row;margin-top:auto}.projectContent_projectDetail__YW6o_ .projectContent_card__n1tc0 .projectContent_cardAction__iQ8iC a{color:var(--accent)}.projectContent_projectDetail__YW6o_ .projectContent_description__XVzsk{max-width:1000px;border-radius:5px;padding:25px;background-color:var(--background-card);transition:background 1s;border:1px solid var(--border-card);margin:25px 0;display:flex;flex-direction:column}@media only screen and (min-width:768px){.projectContent_projectDetail__YW6o_ .projectContent_card__n1tc0{margin-bottom:unset}}.projectContent_projectDetail__YW6o_ .projectContent_projectLinks__atmgO{display:flex;flex-direction:row;margin-top:auto}.projectContent_projectDetail__YW6o_ .projectContent_projectLinks__atmgO a{margin-right:15px;color:var(--accent)}.projectContent_projectDetail__YW6o_ .projectContent_projectLinks__atmgO a:hover{color:var(--text-primary)}.projectContent_projectDetail__YW6o_ .projectContent_projectLinks__atmgO i{margin-right:5px;color:var(--text-primary)}.projectContent_projectDetail__YW6o_ details>summary span{transition:all .3s;margin-left:5px}.projectContent_projectDetail__YW6o_ details[open] summary span{transform:rotate(90deg)}.projectContent_projectDetail__YW6o_ summary{display:flex;width:100px;cursor:pointer}.projectContent_projectDetail__YW6o_ summary::-webkit-details-marker{display:none} -------------------------------------------------------------------------------- /projects.html: -------------------------------------------------------------------------------- 1 | All Projects

Projects

Sort by tech:

-------------------------------------------------------------------------------- /_next/static/chunks/pages/posts-8705cc9333ae0ef1.js: -------------------------------------------------------------------------------- 1 | (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[679],{2711:function(e,t,n){e.exports=function(){"use strict";var e="undefined"!=typeof window?window:"undefined"!=typeof n.g?n.g:"undefined"!=typeof self?self:{},t="Expected a function",o=NaN,i="[object Symbol]",r=/^\s+|\s+$/g,a=/^[-+]0x[0-9a-f]+$/i,s=/^0b[01]+$/i,c=/^0o[0-7]+$/i,u=parseInt,l="object"==typeof e&&e&&e.Object===Object&&e,d="object"==typeof self&&self&&self.Object===Object&&self,f=l||d||Function("return this")(),m=Object.prototype.toString,p=Math.max,v=Math.min,b=function(){return f.Date.now()};function h(e,n,o){var i,r,a,s,c,u,l=0,d=!1,f=!1,m=!0;if("function"!=typeof e)throw new TypeError(t);function h(t){var n=i,o=r;return i=r=void 0,l=t,s=e.apply(o,n)}function y(e){var t=e-u;return void 0===u||t>=n||t<0||f&&e-l>=a}function k(){var e=b();if(y(e))return x(e);c=setTimeout(k,function(e){var t=n-(e-u);return f?v(t,a-(e-l)):t}(e))}function x(e){return c=void 0,m&&i?h(e):(i=r=void 0,s)}function j(){var e=b(),t=y(e);if(i=arguments,r=this,u=e,t){if(void 0===c)return function(e){return l=e,c=setTimeout(k,n),d?h(e):s}(u);if(f)return c=setTimeout(k,n),h(u)}return void 0===c&&(c=setTimeout(k,n)),s}return n=w(n)||0,g(o)&&(d=!!o.leading,a=(f="maxWait"in o)?p(w(o.maxWait)||0,n):a,m="trailing"in o?!!o.trailing:m),j.cancel=function(){void 0!==c&&clearTimeout(c),l=0,i=u=r=c=void 0},j.flush=function(){return void 0===c?s:x(b())},j}function g(e){var t=typeof e;return!!e&&("object"==t||"function"==t)}function w(e){if("number"==typeof e)return e;if(function(e){return"symbol"==typeof e||function(e){return!!e&&"object"==typeof e}(e)&&m.call(e)==i}(e))return o;if(g(e)){var t="function"==typeof e.valueOf?e.valueOf():e;e=g(t)?t+"":t}if("string"!=typeof e)return 0===e?e:+e;e=e.replace(r,"");var n=s.test(e);return n||c.test(e)?u(e.slice(2),n?2:8):a.test(e)?o:+e}var y=function(e,n,o){var i=!0,r=!0;if("function"!=typeof e)throw new TypeError(t);return g(o)&&(i="leading"in o?!!o.leading:i,r="trailing"in o?!!o.trailing:r),h(e,n,{leading:i,maxWait:n,trailing:r})},k="Expected a function",x=NaN,j="[object Symbol]",N=/^\s+|\s+$/g,_=/^[-+]0x[0-9a-f]+$/i,E=/^0b[01]+$/i,O=/^0o[0-7]+$/i,C=parseInt,A="object"==typeof e&&e&&e.Object===Object&&e,S="object"==typeof self&&self&&self.Object===Object&&self,z=A||S||Function("return this")(),T=Object.prototype.toString,q=Math.max,L=Math.min,M=function(){return z.Date.now()};function D(e){var t=typeof e;return!!e&&("object"==t||"function"==t)}function P(e){if("number"==typeof e)return e;if(function(e){return"symbol"==typeof e||function(e){return!!e&&"object"==typeof e}(e)&&T.call(e)==j}(e))return x;if(D(e)){var t="function"==typeof e.valueOf?e.valueOf():e;e=D(t)?t+"":t}if("string"!=typeof e)return 0===e?e:+e;e=e.replace(N,"");var n=E.test(e);return n||O.test(e)?C(e.slice(2),n?2:8):_.test(e)?x:+e}var H=function(e,t,n){var o,i,r,a,s,c,u=0,l=!1,d=!1,f=!0;if("function"!=typeof e)throw new TypeError(k);function m(t){var n=o,r=i;return o=i=void 0,u=t,a=e.apply(r,n)}function p(e){var n=e-c;return void 0===c||n>=t||n<0||d&&e-u>=r}function v(){var e=M();if(p(e))return b(e);s=setTimeout(v,function(e){var n=t-(e-c);return d?L(n,r-(e-u)):n}(e))}function b(e){return s=void 0,f&&o?m(e):(o=i=void 0,a)}function h(){var e=M(),n=p(e);if(o=arguments,i=this,c=e,n){if(void 0===s)return function(e){return u=e,s=setTimeout(v,t),l?m(e):a}(c);if(d)return s=setTimeout(v,t),m(c)}return void 0===s&&(s=setTimeout(v,t)),a}return t=P(t)||0,D(n)&&(l=!!n.leading,r=(d="maxWait"in n)?q(P(n.maxWait)||0,t):r,f="trailing"in n?!!n.trailing:f),h.cancel=function(){void 0!==s&&clearTimeout(s),u=0,o=c=i=s=void 0},h.flush=function(){return void 0===s?a:b(M())},h},B=function(){};function W(e){e&&e.forEach((function(e){var t=Array.prototype.slice.call(e.addedNodes),n=Array.prototype.slice.call(e.removedNodes);if(function e(t){var n=void 0,o=void 0;for(n=0;n=o.out&&!n.once?r():t>=o.in?e.animated||(function(e,t){t&&t.forEach((function(t){return e.classList.add(t)}))}(i,n.animatedClassNames),V("aos:in",i),e.options.id&&V("aos:in:"+e.options.id,i),e.animated=!0):e.animated&&!n.once&&r()}(e,window.pageYOffset)}))},ee=function(e){for(var t=0,n=0;e&&!isNaN(e.offsetLeft)&&!isNaN(e.offsetTop);)t+=e.offsetLeft-("BODY"!=e.tagName?e.scrollLeft:0),n+=e.offsetTop-("BODY"!=e.tagName?e.scrollTop:0),e=e.offsetParent;return{top:n,left:t}},te=function(e,t,n){var o=e.getAttribute("data-aos-"+t);if(void 0!==o){if("true"===o)return!0;if("false"===o)return!1}return o||n},ne=function(e,t){return e.forEach((function(e,n){var o=te(e.node,"mirror",t.mirror),i=te(e.node,"once",t.once),r=te(e.node,"id"),a=t.useClassNames&&e.node.getAttribute("data-aos"),s=[t.animatedClassName].concat(a?a.split(" "):[]).filter((function(e){return"string"==typeof e}));t.initClassName&&e.node.classList.add(t.initClassName),e.position={in:function(e,t,n){var o=window.innerHeight,i=te(e,"anchor"),r=te(e,"anchor-placement"),a=Number(te(e,"offset",r?0:t)),s=r||n,c=e;i&&document.querySelectorAll(i)&&(c=document.querySelectorAll(i)[0]);var u=ee(c).top-o;switch(s){case"top-bottom":break;case"center-bottom":u+=c.offsetHeight/2;break;case"bottom-bottom":u+=c.offsetHeight;break;case"top-center":u+=o/2;break;case"center-center":u+=o/2+c.offsetHeight/2;break;case"bottom-center":u+=o/2+c.offsetHeight;break;case"top-top":u+=o;break;case"bottom-top":u+=o+c.offsetHeight;break;case"center-top":u+=o+c.offsetHeight/2}return u+a}(e.node,t.offset,t.anchorPlacement),out:o&&function(e,t){window.innerHeight;var n=te(e,"anchor"),o=te(e,"offset",t),i=e;return n&&document.querySelectorAll(n)&&(i=document.querySelectorAll(n)[0]),ee(i).top+i.offsetHeight-o}(e.node,t.offset)},e.options={once:i,mirror:o,animatedClassNames:s,id:r}})),e},oe=function(){var e=document.querySelectorAll("[data-aos]");return Array.prototype.map.call(e,(function(e){return{node:e}}))},ie=[],re=!1,ae={offset:120,delay:0,easing:"ease",duration:400,disable:!1,once:!1,mirror:!1,anchorPlacement:"top-bottom",startEvent:"DOMContentLoaded",animatedClassName:"aos-animate",initClassName:"aos-init",useClassNames:!1,disableMutationObserver:!1,throttleDelay:99,debounceDelay:50},se=function(){return document.all&&!window.atob},ce=function(){arguments.length>0&&void 0!==arguments[0]&&arguments[0]&&(re=!0),re&&(ie=ne(ie,ae),Q(ie),window.addEventListener("scroll",y((function(){Q(ie,ae.once)}),ae.throttleDelay)))},ue=function(){if(ie=oe(),de(ae.disable)||se())return le();ce()},le=function(){ie.forEach((function(e,t){e.node.removeAttribute("data-aos"),e.node.removeAttribute("data-aos-easing"),e.node.removeAttribute("data-aos-duration"),e.node.removeAttribute("data-aos-delay"),ae.initClassName&&e.node.classList.remove(ae.initClassName),ae.animatedClassName&&e.node.classList.remove(ae.animatedClassName)}))},de=function(e){return!0===e||"mobile"===e&&K.mobile()||"phone"===e&&K.phone()||"tablet"===e&&K.tablet()||"function"==typeof e&&!0===e()};return{init:function(e){return ae=R(ae,e),ie=oe(),ae.disableMutationObserver||F.isSupported()||(console.info('\n aos: MutationObserver is not supported on this browser,\n code mutations observing has been disabled.\n You may have to call "refreshHard()" by yourself.\n '),ae.disableMutationObserver=!0),ae.disableMutationObserver||F.ready("[data-aos]",ue),de(ae.disable)||se()?le():(document.querySelector("body").setAttribute("data-aos-easing",ae.easing),document.querySelector("body").setAttribute("data-aos-duration",ae.duration),document.querySelector("body").setAttribute("data-aos-delay",ae.delay),-1===["DOMContentLoaded","load"].indexOf(ae.startEvent)?document.addEventListener(ae.startEvent,(function(){ce(!0)})):window.addEventListener("load",(function(){ce(!0)})),"DOMContentLoaded"===ae.startEvent&&["complete","interactive"].indexOf(document.readyState)>-1&&ce(!0),window.addEventListener("resize",H(ce,ae.debounceDelay,!0)),window.addEventListener("orientationchange",H(ce,ae.debounceDelay,!0)),ie)},refresh:ce,refreshHard:ue}}()},87141:function(e,t,n){(window.__NEXT_P=window.__NEXT_P||[]).push(["/posts",function(){return n(49373)}])},5824:function(e,t,n){"use strict";var o=n(85893),i=n(41664),r=n.n(i),a=n(57777),s=n.n(a),c=n(67294),u=n(2711),l=n.n(u);n(66130);t.Z=function(e){var t=e.post,n=t.title,i=t.excerpt,a=t.date,u=t.slug,d=new Date(a).toLocaleDateString("en-Us",{timeZone:"UTC",day:"numeric",month:"long",year:"numeric"}),f="/posts/".concat(u);return(0,c.useEffect)((function(){l().init({duration:500})}),[]),(0,o.jsxs)("div",{className:s().card,"data-aos":"zoom-in-up",children:[(0,o.jsxs)("div",{className:s().cardContent,children:[(0,o.jsx)("h4",{children:n}),(0,o.jsx)("time",{children:d}),(0,o.jsx)("p",{children:i})]}),(0,o.jsx)("div",{className:s().cardAction,children:(0,o.jsx)(r(),{href:f,children:(0,o.jsx)("a",{children:"Read more"})})})]})}},49373:function(e,t,n){"use strict";n.r(t),n.d(t,{__N_SSG:function(){return m},default:function(){return p}});var o=n(85893),i=n(9008),r=n.n(i),a=n(77068),s=n.n(a),c=n(67294),u=n(18716),l=n(21190),d=n(5824),f=function(e){var t=e.posts,n=(0,c.useState)("all"),i=n[0],r=n[1],a=(0,c.useState)("all"),f=a[0],m=a[1],p=[];t.map((function(e){var t=e.tech;if(Array.isArray(t)){var n=!0,o=!1,i=void 0;try{for(var r,a=t[Symbol.iterator]();!(n=(r=a.next()).done);n=!0){var s=r.value;p.includes(s)||p.push(s)}}catch(c){o=!0,i=c}finally{try{n||null==a.return||a.return()}finally{if(o)throw i}}}})),p.sort();var v,b=function(e){r(e),m(e)};return v="all"===i?t.sort((function(e,t){return t.isFeatured-e.isFeatured})):t.filter((function(e){return e.tech.includes(i)})),(0,o.jsx)("section",{className:s().blog,children:(0,o.jsxs)("div",{className:s().container,children:[(0,o.jsx)("h1",{children:"Blog Posts"}),(0,o.jsxs)("div",{className:s().filter,children:[(0,o.jsx)("p",{children:"Sort by tech:"}),(0,o.jsxs)("div",{className:s().filterButtons,children:[(0,o.jsx)(u.E.button,{whileHover:{scale:1.1},whileTap:{scale:.9},onClick:function(){return b("all")},className:"all"===f?"btn btn-outlined sm active":"btn btn-outlined sm",children:"All"}),p.map((function(e){return(0,o.jsx)(u.E.button,{whileHover:{scale:1.1},whileTap:{scale:.9},onClick:function(){return b(e)},className:f===e?"btn btn-outlined sm active":"btn btn-outlined sm",children:e},e)}))]})]}),(0,o.jsx)("div",{className:s().galleryWrap,children:(0,o.jsx)("div",{className:s().gallery,children:(0,o.jsx)(l.M,{children:null!==t&&void 0!==t&&v.map((function(e){return(0,o.jsx)(d.Z,{post:e},e.slug)}))})})})]})})},m=!0,p=function(e){var t=e.posts;return(0,o.jsxs)(o.Fragment,{children:[(0,o.jsxs)(r(),{children:[(0,o.jsx)("title",{children:"Blog Posts"}),(0,o.jsx)("meta",{name:"description",content:"List of all my web development blog posts/articles including technologies like React, Next.js, Redux, Typescript, Node.js, Express, MongoDB, Bootstrap and Shopware."})]}),(0,o.jsx)(f,{posts:t})]})}},77068:function(e){e.exports={blog:"allPosts_blog__JNVG1",filter:"allPosts_filter__XeDGi",filterButtons:"allPosts_filterButtons__Awiqp",galleryWrap:"allPosts_galleryWrap__n83PE",container:"allPosts_container__vuR4h",gallery:"allPosts_gallery__0YCrM"}},57777:function(e){e.exports={card:"postItem_card__A_FX_",cardAction:"postItem_cardAction__0dwSq"}},66130:function(){}},function(e){e.O(0,[218,774,888,179],(function(){return t=87141,e(e.s=t);var t}));var t=e.O();_N_E=t}]); -------------------------------------------------------------------------------- /projects/example-1.html: -------------------------------------------------------------------------------- 1 | Project - Example 1

Example 1

React, MongoDB, Node, Express, Context

Description

2 |

This is a MERN Fullstack project with authentication and CRUD functionality.

3 |

Key takeaways

4 |

Context

5 |

Code Example

6 |

Combines all reducers and apply thunk (middleware that allows 7 | you to return functions).

8 |
9 | 10 | View code 11 | 12 | 13 | 14 | 15 |
1const reducer = combineReducers({
16 | 2  productList: productListReducer,
17 | 3});
18 | 4
19 |
20 |

Screenshots

Homepage with navbar and hero element.
1. Homepage with navbar and hero element.
Homepage. Carousel with 3 top-rated products and general product listing.
2. Homepage. Carousel with 3 top-rated products and general product listing.
-------------------------------------------------------------------------------- /_next/static/css/f6e0480671a3e269.css: -------------------------------------------------------------------------------- 1 | .hero_greetings__a2HWI{padding:25px 15px 50px}.hero_greetings__a2HWI .hero_row__3xLuq{display:flex;flex-flow:column;height:100%}.hero_greetings__a2HWI .hero_columnLeft__oVNaI{order:2}.hero_greetings__a2HWI .hero_columnLeft__oVNaI h1{color:var(--text-secondary);filter:drop-shadow(0 3px 2px rgba(0,0,0,.15))}.hero_greetings__a2HWI .hero_columnLeft__oVNaI span{position:relative;top:1px}.hero_greetings__a2HWI .hero_columnLeft__oVNaI .hero_socialMedia__u1M78{margin-top:19px}.hero_greetings__a2HWI .hero_columnLeft__oVNaI .hero_socialMedia__u1M78 i{font-size:2rem;margin:0 5px;color:var(--text-tertiary);filter:drop-shadow(0 1px 1px rgba(0,0,0,.14))}.hero_greetings__a2HWI .hero_columnLeft__oVNaI .hero_socialMedia__u1M78 i:hover{color:var(--text-secondary)}.hero_greetings__a2HWI .hero_columnLeft__oVNaI .hero_ctaButtons__sdlsA{margin-top:35px;display:flex}.hero_greetings__a2HWI .hero_columnLeft__oVNaI .hero_ctaButtons__sdlsA :first-child{margin-right:15px}.hero_greetings__a2HWI .hero_columnRight__k1__j{order:1}.hero_greetings__a2HWI .hero_columnRight__k1__j.hero_profilePic__nP6mQ{max-width:205px;max-height:205px;text-align:center;margin:30px auto 0}.hero_greetings__a2HWI .hero_columnRight__k1__j.hero_profilePic__nP6mQ img{filter:drop-shadow(0 -2px 4px rgba(0,0,0,.35));border-radius:50%}@media only screen and (min-width:480px){.hero_greetings__a2HWI .hero_columnRight__k1__j.hero_profilePic__nP6mQ{max-width:350px;max-height:350px;margin:0 auto 50px}}@media only screen and (min-width:768px){.hero_greetings__a2HWI{padding:120px 25px;height:100vh}.hero_greetings__a2HWI .hero_container__SSOqw{height:100%;max-width:1200px;margin:auto;display:flex;flex-direction:column;justify-content:center}.hero_greetings__a2HWI .hero_row__3xLuq{display:flex;flex-flow:row}.hero_greetings__a2HWI .hero_columnLeft__oVNaI{order:1;align-self:center;display:flex;flex-direction:column;width:55%;margin-bottom:unset}.hero_greetings__a2HWI .hero_columnLeft__oVNaI h1{font-size:2.3rem;margin:0}.hero_greetings__a2HWI .hero_columnLeft__oVNaI h3{font-size:1.5rem}.hero_greetings__a2HWI .hero_columnLeft__oVNaI h3,.hero_greetings__a2HWI .hero_columnLeft__oVNaI p{margin:1rem 0}.hero_greetings__a2HWI .hero_columnRight__k1__j{order:2;width:40%;margin:auto}.hero_greetings__a2HWI .hero_columnRight__k1__j.hero_profilePic__nP6mQ{max-width:460px;max-height:460px;margin:auto}.hero_greetings__a2HWI .hero_columnRight__k1__j img{max-width:100%;height:auto}}.featuredProjectItem_project__4gS4N{background-color:var(--background-card);transition:background 1s;border:1px solid var(--border-light);border-radius:5px;padding:25px;min-width:100%;min-height:480px}.featuredProjectItem_project__4gS4N h3{margin:0;color:var(--text-secondary)}.featuredProjectItem_project__4gS4N small{font-style:italic;color:var(--text-tertiary)}.featuredProjectItem_project__4gS4N .featuredProjectItem_columnLeft__mfDaL .featuredProjectItem_description__Vxlli{margin-top:25px 0;margin-bottom:0}.featuredProjectItem_project__4gS4N .featuredProjectItem_columnLeft__mfDaL .featuredProjectItem_projectLinks__EToR1{display:none}.featuredProjectItem_project__4gS4N .featuredProjectItem_columnRight__2_jp2{max-width:500px;margin:25px auto 0}.featuredProjectItem_project__4gS4N .featuredProjectItem_columnRight__2_jp2 .featuredProjectItem_card__mEdFm{pointer-events:none;border:1px solid hsla(0,0%,100%,.051);border-radius:5px;overflow:hidden}.featuredProjectItem_project__4gS4N .featuredProjectItem_columnRight__2_jp2 .featuredProjectItem_card__mEdFm img{height:100%;border-radius:5px}.featuredProjectItem_project__4gS4N .featuredProjectItem_columnRight__2_jp2 .featuredProjectItem_card__mEdFm span{display:block!important}@media only screen and (min-width:768px){.featuredProjectItem_project__4gS4N{min-height:unset;position:relative}.featuredProjectItem_project__4gS4N .featuredProjectItem_titleContainer__v2No_{position:absolute;width:100%}.featuredProjectItem_project__4gS4N .featuredProjectItem_title__EfMkF{width:50%;padding-right:30px}.featuredProjectItem_project__4gS4N .featuredProjectItem_row__JkxSm{display:flex}.featuredProjectItem_project__4gS4N .featuredProjectItem_columnLeft__mfDaL{margin-top:50px;order:1;width:50%;display:flex;flex-direction:column;padding-right:25px}.featuredProjectItem_project__4gS4N .featuredProjectItem_columnLeft__mfDaL .featuredProjectItem_projectLinks__EToR1{display:flex;margin-top:auto}.featuredProjectItem_project__4gS4N .featuredProjectItem_columnLeft__mfDaL .featuredProjectItem_projectLinks__EToR1 a{color:var(--accent);display:block;padding:15px 10px 15px 0;font-size:.9rem}.featuredProjectItem_project__4gS4N .featuredProjectItem_columnLeft__mfDaL .featuredProjectItem_projectLinks__EToR1 a:last-child{padding-right:0}.featuredProjectItem_project__4gS4N .featuredProjectItem_columnLeft__mfDaL .featuredProjectItem_projectLinks__EToR1 a:hover{color:var(--text-primary)}.featuredProjectItem_project__4gS4N .featuredProjectItem_columnLeft__mfDaL .featuredProjectItem_projectLinks__EToR1 i{width:20px;color:var(--text-primary)}.featuredProjectItem_project__4gS4N .featuredProjectItem_columnRight__2_jp2{order:2;width:50%;margin:0 0 0 auto}}@font-face{font-family:swiper-icons;src:url("data:application/font-woff;charset=utf-8;base64, d09GRgABAAAAAAZgABAAAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABGRlRNAAAGRAAAABoAAAAci6qHkUdERUYAAAWgAAAAIwAAACQAYABXR1BPUwAABhQAAAAuAAAANuAY7+xHU1VCAAAFxAAAAFAAAABm2fPczU9TLzIAAAHcAAAASgAAAGBP9V5RY21hcAAAAkQAAACIAAABYt6F0cBjdnQgAAACzAAAAAQAAAAEABEBRGdhc3AAAAWYAAAACAAAAAj//wADZ2x5ZgAAAywAAADMAAAD2MHtryVoZWFkAAABbAAAADAAAAA2E2+eoWhoZWEAAAGcAAAAHwAAACQC9gDzaG10eAAAAigAAAAZAAAArgJkABFsb2NhAAAC0AAAAFoAAABaFQAUGG1heHAAAAG8AAAAHwAAACAAcABAbmFtZQAAA/gAAAE5AAACXvFdBwlwb3N0AAAFNAAAAGIAAACE5s74hXjaY2BkYGAAYpf5Hu/j+W2+MnAzMYDAzaX6QjD6/4//Bxj5GA8AuRwMYGkAPywL13jaY2BkYGA88P8Agx4j+/8fQDYfA1AEBWgDAIB2BOoAeNpjYGRgYNBh4GdgYgABEMnIABJzYNADCQAACWgAsQB42mNgYfzCOIGBlYGB0YcxjYGBwR1Kf2WQZGhhYGBiYGVmgAFGBiQQkOaawtDAoMBQxXjg/wEGPcYDDA4wNUA2CCgwsAAAO4EL6gAAeNpj2M0gyAACqxgGNWBkZ2D4/wMA+xkDdgAAAHjaY2BgYGaAYBkGRgYQiAHyGMF8FgYHIM3DwMHABGQrMOgyWDLEM1T9/w8UBfEMgLzE////P/5//f/V/xv+r4eaAAeMbAxwIUYmIMHEgKYAYjUcsDAwsLKxc3BycfPw8jEQA/gZBASFhEVExcQlJKWkZWTl5BUUlZRVVNXUNTQZBgMAAMR+E+gAEQFEAAAAKgAqACoANAA+AEgAUgBcAGYAcAB6AIQAjgCYAKIArAC2AMAAygDUAN4A6ADyAPwBBgEQARoBJAEuATgBQgFMAVYBYAFqAXQBfgGIAZIBnAGmAbIBzgHsAAB42u2NMQ6CUAyGW568x9AneYYgm4MJbhKFaExIOAVX8ApewSt4Bic4AfeAid3VOBixDxfPYEza5O+Xfi04YADggiUIULCuEJK8VhO4bSvpdnktHI5QCYtdi2sl8ZnXaHlqUrNKzdKcT8cjlq+rwZSvIVczNiezsfnP/uznmfPFBNODM2K7MTQ45YEAZqGP81AmGGcF3iPqOop0r1SPTaTbVkfUe4HXj97wYE+yNwWYxwWu4v1ugWHgo3S1XdZEVqWM7ET0cfnLGxWfkgR42o2PvWrDMBSFj/IHLaF0zKjRgdiVMwScNRAoWUoH78Y2icB/yIY09An6AH2Bdu/UB+yxopYshQiEvnvu0dURgDt8QeC8PDw7Fpji3fEA4z/PEJ6YOB5hKh4dj3EvXhxPqH/SKUY3rJ7srZ4FZnh1PMAtPhwP6fl2PMJMPDgeQ4rY8YT6Gzao0eAEA409DuggmTnFnOcSCiEiLMgxCiTI6Cq5DZUd3Qmp10vO0LaLTd2cjN4fOumlc7lUYbSQcZFkutRG7g6JKZKy0RmdLY680CDnEJ+UMkpFFe1RN7nxdVpXrC4aTtnaurOnYercZg2YVmLN/d/gczfEimrE/fs/bOuq29Zmn8tloORaXgZgGa78yO9/cnXm2BpaGvq25Dv9S4E9+5SIc9PqupJKhYFSSl47+Qcr1mYNAAAAeNptw0cKwkAAAMDZJA8Q7OUJvkLsPfZ6zFVERPy8qHh2YER+3i/BP83vIBLLySsoKimrqKqpa2hp6+jq6RsYGhmbmJqZSy0sraxtbO3sHRydnEMU4uR6yx7JJXveP7WrDycAAAAAAAH//wACeNpjYGRgYOABYhkgZgJCZgZNBkYGLQZtIJsFLMYAAAw3ALgAeNolizEKgDAQBCchRbC2sFER0YD6qVQiBCv/H9ezGI6Z5XBAw8CBK/m5iQQVauVbXLnOrMZv2oLdKFa8Pjuru2hJzGabmOSLzNMzvutpB3N42mNgZGBg4GKQYzBhYMxJLMlj4GBgAYow/P/PAJJhLM6sSoWKfWCAAwDAjgbRAAB42mNgYGBkAIIbCZo5IPrmUn0hGA0AO8EFTQAA");font-weight:400;font-style:normal}:root{--swiper-theme-color:#007aff}.swiper{margin-left:auto;margin-right:auto;position:relative;overflow:hidden;list-style:none;padding:0;z-index:1}.swiper-vertical>.swiper-wrapper{flex-direction:column}.swiper-wrapper{position:relative;width:100%;height:100%;z-index:1;display:flex;transition-property:transform;box-sizing:content-box}.swiper-android .swiper-slide,.swiper-wrapper{transform:translateZ(0)}.swiper-pointer-events{touch-action:pan-y}.swiper-pointer-events.swiper-vertical{touch-action:pan-x}.swiper-slide{flex-shrink:0;width:100%;height:100%;position:relative;transition-property:transform}.swiper-slide-invisible-blank{visibility:hidden}.swiper-autoheight,.swiper-autoheight .swiper-slide{height:auto}.swiper-autoheight .swiper-wrapper{align-items:flex-start;transition-property:transform,height}.swiper-backface-hidden .swiper-slide{transform:translateZ(0);-webkit-backface-visibility:hidden;backface-visibility:hidden}.swiper-3d,.swiper-3d.swiper-css-mode .swiper-wrapper{perspective:1200px}.swiper-3d .swiper-cube-shadow,.swiper-3d .swiper-slide,.swiper-3d .swiper-slide-shadow,.swiper-3d .swiper-slide-shadow-bottom,.swiper-3d .swiper-slide-shadow-left,.swiper-3d .swiper-slide-shadow-right,.swiper-3d .swiper-slide-shadow-top,.swiper-3d .swiper-wrapper{transform-style:preserve-3d}.swiper-3d .swiper-slide-shadow,.swiper-3d .swiper-slide-shadow-bottom,.swiper-3d .swiper-slide-shadow-left,.swiper-3d .swiper-slide-shadow-right,.swiper-3d .swiper-slide-shadow-top{position:absolute;left:0;top:0;width:100%;height:100%;pointer-events:none;z-index:10}.swiper-3d .swiper-slide-shadow{background:rgba(0,0,0,.15)}.swiper-3d .swiper-slide-shadow-left{background-image:linear-gradient(270deg,rgba(0,0,0,.5),transparent)}.swiper-3d .swiper-slide-shadow-right{background-image:linear-gradient(90deg,rgba(0,0,0,.5),transparent)}.swiper-3d .swiper-slide-shadow-top{background-image:linear-gradient(0deg,rgba(0,0,0,.5),transparent)}.swiper-3d .swiper-slide-shadow-bottom{background-image:linear-gradient(180deg,rgba(0,0,0,.5),transparent)}.swiper-css-mode>.swiper-wrapper{overflow:auto;scrollbar-width:none;-ms-overflow-style:none}.swiper-css-mode>.swiper-wrapper::-webkit-scrollbar{display:none}.swiper-css-mode>.swiper-wrapper>.swiper-slide{scroll-snap-align:start start}.swiper-horizontal.swiper-css-mode>.swiper-wrapper{-ms-scroll-snap-type:x mandatory;scroll-snap-type:x mandatory}.swiper-vertical.swiper-css-mode>.swiper-wrapper{-ms-scroll-snap-type:y mandatory;scroll-snap-type:y mandatory}.swiper-centered>.swiper-wrapper:before{content:"";flex-shrink:0;order:9999}.swiper-centered.swiper-horizontal>.swiper-wrapper>.swiper-slide:first-child{-webkit-margin-start:var(--swiper-centered-offset-before);margin-inline-start:var(--swiper-centered-offset-before)}.swiper-centered.swiper-horizontal>.swiper-wrapper:before{height:100%;min-height:1px;width:var(--swiper-centered-offset-after)}.swiper-centered.swiper-vertical>.swiper-wrapper>.swiper-slide:first-child{-webkit-margin-before:var(--swiper-centered-offset-before);margin-block-start:var(--swiper-centered-offset-before)}.swiper-centered.swiper-vertical>.swiper-wrapper:before{width:100%;min-width:1px;height:var(--swiper-centered-offset-after)}.swiper-centered>.swiper-wrapper>.swiper-slide{scroll-snap-align:center center}.swiper-cards{overflow:visible}.swiper-cards .swiper-slide{transform-origin:center bottom;-webkit-backface-visibility:hidden;backface-visibility:hidden;overflow:hidden}.swiper-pagination{position:absolute;text-align:center;transition:opacity .3s;transform:translateZ(0);z-index:10}.swiper-pagination.swiper-pagination-hidden{opacity:0}.swiper-pagination-disabled>.swiper-pagination,.swiper-pagination.swiper-pagination-disabled{display:none!important}.swiper-horizontal>.swiper-pagination-bullets,.swiper-pagination-bullets.swiper-pagination-horizontal,.swiper-pagination-custom,.swiper-pagination-fraction{bottom:10px;left:0;width:100%}.swiper-pagination-bullets-dynamic{overflow:hidden;font-size:0}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet{transform:scale(.33);position:relative}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active,.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-main{transform:scale(1)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-prev{transform:scale(.66)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-prev-prev{transform:scale(.33)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-next{transform:scale(.66)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-next-next{transform:scale(.33)}.swiper-pagination-bullet{width:var(--swiper-pagination-bullet-width,var(--swiper-pagination-bullet-size,8px));height:var(--swiper-pagination-bullet-height,var(--swiper-pagination-bullet-size,8px));display:inline-block;border-radius:50%;background:var(--swiper-pagination-bullet-inactive-color,#000);opacity:var(--swiper-pagination-bullet-inactive-opacity,.2)}button.swiper-pagination-bullet{border:none;margin:0;padding:0;box-shadow:none;-webkit-appearance:none;-moz-appearance:none;appearance:none}.swiper-pagination-clickable .swiper-pagination-bullet{cursor:pointer}.swiper-pagination-bullet:only-child{display:none!important}.swiper-pagination-bullet-active{opacity:var(--swiper-pagination-bullet-opacity,1);background:var(--swiper-pagination-color,var(--swiper-theme-color))}.swiper-pagination-vertical.swiper-pagination-bullets,.swiper-vertical>.swiper-pagination-bullets{right:10px;top:50%;transform:translate3d(0,-50%,0)}.swiper-pagination-vertical.swiper-pagination-bullets .swiper-pagination-bullet,.swiper-vertical>.swiper-pagination-bullets .swiper-pagination-bullet{margin:var(--swiper-pagination-bullet-vertical-gap,6px) 0;display:block}.swiper-pagination-vertical.swiper-pagination-bullets.swiper-pagination-bullets-dynamic,.swiper-vertical>.swiper-pagination-bullets.swiper-pagination-bullets-dynamic{top:50%;transform:translateY(-50%);width:8px}.swiper-pagination-vertical.swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet,.swiper-vertical>.swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet{display:inline-block;transition:transform .2s,top .2s}.swiper-horizontal>.swiper-pagination-bullets .swiper-pagination-bullet,.swiper-pagination-horizontal.swiper-pagination-bullets .swiper-pagination-bullet{margin:0 var(--swiper-pagination-bullet-horizontal-gap,4px)}.swiper-horizontal>.swiper-pagination-bullets.swiper-pagination-bullets-dynamic,.swiper-pagination-horizontal.swiper-pagination-bullets.swiper-pagination-bullets-dynamic{left:50%;transform:translateX(-50%);white-space:nowrap}.swiper-horizontal>.swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet,.swiper-pagination-horizontal.swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet{transition:transform .2s,left .2s}.swiper-horizontal.swiper-rtl>.swiper-pagination-bullets-dynamic .swiper-pagination-bullet{transition:transform .2s,right .2s}.swiper-pagination-progressbar{background:rgba(0,0,0,.25);position:absolute}.swiper-pagination-progressbar .swiper-pagination-progressbar-fill{background:var(--swiper-pagination-color,var(--swiper-theme-color));position:absolute;left:0;top:0;width:100%;height:100%;transform:scale(0);transform-origin:left top}.swiper-rtl .swiper-pagination-progressbar .swiper-pagination-progressbar-fill{transform-origin:right top}.swiper-horizontal>.swiper-pagination-progressbar,.swiper-pagination-progressbar.swiper-pagination-horizontal,.swiper-pagination-progressbar.swiper-pagination-vertical.swiper-pagination-progressbar-opposite,.swiper-vertical>.swiper-pagination-progressbar.swiper-pagination-progressbar-opposite{width:100%;height:4px;left:0;top:0}.swiper-horizontal>.swiper-pagination-progressbar.swiper-pagination-progressbar-opposite,.swiper-pagination-progressbar.swiper-pagination-horizontal.swiper-pagination-progressbar-opposite,.swiper-pagination-progressbar.swiper-pagination-vertical,.swiper-vertical>.swiper-pagination-progressbar{width:4px;height:100%;left:0;top:0}.swiper-pagination-lock{display:none}:root{--swiper-navigation-size:44px}.swiper-button-next,.swiper-button-prev{position:absolute;top:50%;width:calc(var(--swiper-navigation-size)/ 44 * 27);height:var(--swiper-navigation-size);margin-top:calc(0px - (var(--swiper-navigation-size)/ 2));z-index:10;cursor:pointer;display:flex;align-items:center;justify-content:center;color:var(--swiper-navigation-color,var(--swiper-theme-color))}.swiper-button-next.swiper-button-disabled,.swiper-button-prev.swiper-button-disabled{opacity:.35;cursor:auto;pointer-events:none}.swiper-button-next.swiper-button-hidden,.swiper-button-prev.swiper-button-hidden{opacity:0;cursor:auto;pointer-events:none}.swiper-navigation-disabled .swiper-button-next,.swiper-navigation-disabled .swiper-button-prev{display:none!important}.swiper-button-next:after,.swiper-button-prev:after{font-family:swiper-icons;font-size:var(--swiper-navigation-size);text-transform:none!important;letter-spacing:0;font-variant:normal;line-height:1}.swiper-button-prev,.swiper-rtl .swiper-button-next{left:10px;right:auto}.swiper-button-prev:after,.swiper-rtl .swiper-button-next:after{content:"prev"}.swiper-button-next,.swiper-rtl .swiper-button-prev{right:10px;left:auto}.swiper-button-next:after,.swiper-rtl .swiper-button-prev:after{content:"next"}.swiper-button-lock{display:none}.featuredProjects_projects__0N_5L{padding:50px 15px;overflow:hidden}.featuredProjects_projects__0N_5L .featuredProjects_carousel__pgUJS{cursor:-webkit-grab;cursor:grab;overflow:hidden}.featuredProjects_projects__0N_5L .featuredProjects_carousel__pgUJS .featuredProjects_innerCarousel__BJmzd{display:flex}.featuredProjects_projects__0N_5L .featuredProjects_buttonWrapper__s1dM1{display:flex;justify-content:center;padding:50px 50px 0}@media only screen and (min-width:768px){.featuredProjects_projects__0N_5L{padding:100px 25px;height:100vh}.featuredProjects_projects__0N_5L .featuredProjects_container__yJkuw{max-width:1200px;margin:auto;height:100%;display:flex;flex-direction:column;justify-content:center}.featuredProjects_projects__0N_5L .featuredProjects_row__cvnM_{display:flex}}.postItem_card__A_FX_{border-radius:5px;padding:25px;background-color:var(--background-card);transition:background 1s;border:1px solid var(--border-card);margin-bottom:25px;display:flex;flex-direction:column;min-height:260px}.postItem_card__A_FX_ h4{margin:0;color:var(--text-secondary)}.postItem_card__A_FX_ time{color:var(--text-tertiary)}.postItem_card__A_FX_ .postItem_cardAction__0dwSq{display:flex;flex-direction:row;margin-top:auto}.postItem_card__A_FX_ .postItem_cardAction__0dwSq a{color:var(--accent)}@media only screen and (min-width:768px){.postItem_card__A_FX_{margin-bottom:unset}}.featuredPosts_blog__89cAf{padding:50px 15px}.featuredPosts_blog__89cAf .featuredPosts_galleryTitle__LVx9A{margin-bottom:15px}.featuredPosts_blog__89cAf .featuredPosts_buttonWrapper__xgcGX{display:flex;justify-content:center;padding:50px 50px 0}@media only screen and (min-width:768px){.featuredPosts_blog__89cAf{padding:100px 25px;height:100vh}.featuredPosts_blog__89cAf .featuredPosts_container__W9yVQ{max-width:1200px;margin:auto;height:100%;display:flex;flex-direction:column;justify-content:center}.featuredPosts_blog__89cAf .featuredPosts_row__VxFee{display:flex}.featuredPosts_blog__89cAf .featuredPosts_gallery__FW5hN{display:grid;grid-template-columns:repeat(2,1fr);grid-gap:25px}}.about_about__aUSCF{padding:50px 15px}.about_about__aUSCF a{color:var(--accent)}.about_about__aUSCF .about_columnLeft__0w_r1{margin-bottom:50px}.about_about__aUSCF .about_columnLeft__0w_r1 p{margin:10px 0}.about_about__aUSCF .about_columnRight__Ndnud .about_imageContainer__cDRKA{display:flex;justify-content:center}.about_about__aUSCF .about_columnRight__Ndnud .about_imageContainer__cDRKA img{border-radius:50%}.about_about__aUSCF .about_columnRight__Ndnud .about_quote___sn_z{text-align:center;margin-top:25px;font-style:italic;position:relative}.about_about__aUSCF .about_columnRight__Ndnud .about_quote___sn_z .about_tooltip__DkFKt{position:absolute;display:flex;align-items:center;visibility:hidden;width:340px;background-color:var(--background-card);border:1px solid var(--border-card);color:var(--text-secondary);font-size:.85rem;text-align:center;padding:5px;border-radius:6px;z-index:1;bottom:150%;left:50%;margin-left:-170px}.about_about__aUSCF .about_columnRight__Ndnud .about_quote___sn_z:hover .about_tooltip__DkFKt{visibility:visible}@media only screen and (min-width:1000px){.about_about__aUSCF{padding:100px 25px;min-height:100vh}.about_about__aUSCF .about_container__9Q92l{max-width:1200px;margin:auto;height:100%;display:flex;flex-direction:column;justify-content:center}.about_about__aUSCF .about_row__5R2uZ{display:flex}.about_about__aUSCF .about_columnLeft__0w_r1{align-self:center;width:40%;display:flex;flex-direction:column;padding-right:100px;margin-bottom:0}.about_about__aUSCF .about_columnRight__Ndnud{width:60%;margin:auto}.about_about__aUSCF .about_columnRight__Ndnud img{max-width:100%;height:auto}} -------------------------------------------------------------------------------- /_next/static/chunks/pages/index-4f38ac3929c74433.js: -------------------------------------------------------------------------------- 1 | (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[405],{2711:function(e,t,n){e.exports=function(){"use strict";var e="undefined"!=typeof window?window:"undefined"!=typeof n.g?n.g:"undefined"!=typeof self?self:{},t="Expected a function",i=NaN,o="[object Symbol]",a=/^\s+|\s+$/g,r=/^[-+]0x[0-9a-f]+$/i,s=/^0b[01]+$/i,c=/^0o[0-7]+$/i,l=parseInt,d="object"==typeof e&&e&&e.Object===Object&&e,u="object"==typeof self&&self&&self.Object===Object&&self,f=d||u||Function("return this")(),m=Object.prototype.toString,p=Math.max,h=Math.min,b=function(){return f.Date.now()};function v(e,n,i){var o,a,r,s,c,l,d=0,u=!1,f=!1,m=!0;if("function"!=typeof e)throw new TypeError(t);function v(t){var n=o,i=a;return o=a=void 0,d=t,s=e.apply(i,n)}function w(e){var t=e-l;return void 0===l||t>=n||t<0||f&&e-d>=r}function x(){var e=b();if(w(e))return _(e);c=setTimeout(x,function(e){var t=n-(e-l);return f?h(t,r-(e-d)):t}(e))}function _(e){return c=void 0,m&&o?v(e):(o=a=void 0,s)}function y(){var e=b(),t=w(e);if(o=arguments,a=this,l=e,t){if(void 0===c)return function(e){return d=e,c=setTimeout(x,n),u?v(e):s}(l);if(f)return c=setTimeout(x,n),v(l)}return void 0===c&&(c=setTimeout(x,n)),s}return n=j(n)||0,g(i)&&(u=!!i.leading,r=(f="maxWait"in i)?p(j(i.maxWait)||0,n):r,m="trailing"in i?!!i.trailing:m),y.cancel=function(){void 0!==c&&clearTimeout(c),d=0,o=l=a=c=void 0},y.flush=function(){return void 0===c?s:_(b())},y}function g(e){var t=typeof e;return!!e&&("object"==t||"function"==t)}function j(e){if("number"==typeof e)return e;if(function(e){return"symbol"==typeof e||function(e){return!!e&&"object"==typeof e}(e)&&m.call(e)==o}(e))return i;if(g(e)){var t="function"==typeof e.valueOf?e.valueOf():e;e=g(t)?t+"":t}if("string"!=typeof e)return 0===e?e:+e;e=e.replace(a,"");var n=s.test(e);return n||c.test(e)?l(e.slice(2),n?2:8):r.test(e)?i:+e}var w=function(e,n,i){var o=!0,a=!0;if("function"!=typeof e)throw new TypeError(t);return g(i)&&(o="leading"in i?!!i.leading:o,a="trailing"in i?!!i.trailing:a),v(e,n,{leading:o,maxWait:n,trailing:a})},x="Expected a function",_=NaN,y="[object Symbol]",k=/^\s+|\s+$/g,N=/^[-+]0x[0-9a-f]+$/i,E=/^0b[01]+$/i,L=/^0o[0-7]+$/i,P=parseInt,C="object"==typeof e&&e&&e.Object===Object&&e,O="object"==typeof self&&self&&self.Object===Object&&self,A=C||O||Function("return this")(),S=Object.prototype.toString,T=Math.max,q=Math.min,M=function(){return A.Date.now()};function z(e){var t=typeof e;return!!e&&("object"==t||"function"==t)}function D(e){if("number"==typeof e)return e;if(function(e){return"symbol"==typeof e||function(e){return!!e&&"object"==typeof e}(e)&&S.call(e)==y}(e))return _;if(z(e)){var t="function"==typeof e.valueOf?e.valueOf():e;e=z(t)?t+"":t}if("string"!=typeof e)return 0===e?e:+e;e=e.replace(k,"");var n=E.test(e);return n||L.test(e)?P(e.slice(2),n?2:8):N.test(e)?_:+e}var W=function(e,t,n){var i,o,a,r,s,c,l=0,d=!1,u=!1,f=!0;if("function"!=typeof e)throw new TypeError(x);function m(t){var n=i,a=o;return i=o=void 0,l=t,r=e.apply(a,n)}function p(e){var n=e-c;return void 0===c||n>=t||n<0||u&&e-l>=a}function h(){var e=M();if(p(e))return b(e);s=setTimeout(h,function(e){var n=t-(e-c);return u?q(n,a-(e-l)):n}(e))}function b(e){return s=void 0,f&&i?m(e):(i=o=void 0,r)}function v(){var e=M(),n=p(e);if(i=arguments,o=this,c=e,n){if(void 0===s)return function(e){return l=e,s=setTimeout(h,t),d?m(e):r}(c);if(u)return s=setTimeout(h,t),m(c)}return void 0===s&&(s=setTimeout(h,t)),r}return t=D(t)||0,z(n)&&(d=!!n.leading,a=(u="maxWait"in n)?T(D(n.maxWait)||0,t):a,f="trailing"in n?!!n.trailing:f),v.cancel=function(){void 0!==s&&clearTimeout(s),l=0,i=c=o=s=void 0},v.flush=function(){return void 0===s?r:b(M())},v},I=function(){};function H(e){e&&e.forEach((function(e){var t=Array.prototype.slice.call(e.addedNodes),n=Array.prototype.slice.call(e.removedNodes);if(function e(t){var n=void 0,i=void 0;for(n=0;n=i.out&&!n.once?a():t>=i.in?e.animated||(function(e,t){t&&t.forEach((function(t){return e.classList.add(t)}))}(o,n.animatedClassNames),K("aos:in",o),e.options.id&&K("aos:in:"+e.options.id,o),e.animated=!0):e.animated&&!n.once&&a()}(e,window.pageYOffset)}))},ee=function(e){for(var t=0,n=0;e&&!isNaN(e.offsetLeft)&&!isNaN(e.offsetTop);)t+=e.offsetLeft-("BODY"!=e.tagName?e.scrollLeft:0),n+=e.offsetTop-("BODY"!=e.tagName?e.scrollTop:0),e=e.offsetParent;return{top:n,left:t}},te=function(e,t,n){var i=e.getAttribute("data-aos-"+t);if(void 0!==i){if("true"===i)return!0;if("false"===i)return!1}return i||n},ne=function(e,t){return e.forEach((function(e,n){var i=te(e.node,"mirror",t.mirror),o=te(e.node,"once",t.once),a=te(e.node,"id"),r=t.useClassNames&&e.node.getAttribute("data-aos"),s=[t.animatedClassName].concat(r?r.split(" "):[]).filter((function(e){return"string"==typeof e}));t.initClassName&&e.node.classList.add(t.initClassName),e.position={in:function(e,t,n){var i=window.innerHeight,o=te(e,"anchor"),a=te(e,"anchor-placement"),r=Number(te(e,"offset",a?0:t)),s=a||n,c=e;o&&document.querySelectorAll(o)&&(c=document.querySelectorAll(o)[0]);var l=ee(c).top-i;switch(s){case"top-bottom":break;case"center-bottom":l+=c.offsetHeight/2;break;case"bottom-bottom":l+=c.offsetHeight;break;case"top-center":l+=i/2;break;case"center-center":l+=i/2+c.offsetHeight/2;break;case"bottom-center":l+=i/2+c.offsetHeight;break;case"top-top":l+=i;break;case"bottom-top":l+=i+c.offsetHeight;break;case"center-top":l+=i+c.offsetHeight/2}return l+r}(e.node,t.offset,t.anchorPlacement),out:i&&function(e,t){window.innerHeight;var n=te(e,"anchor"),i=te(e,"offset",t),o=e;return n&&document.querySelectorAll(n)&&(o=document.querySelectorAll(n)[0]),ee(o).top+o.offsetHeight-i}(e.node,t.offset)},e.options={once:o,mirror:i,animatedClassNames:s,id:a}})),e},ie=function(){var e=document.querySelectorAll("[data-aos]");return Array.prototype.map.call(e,(function(e){return{node:e}}))},oe=[],ae=!1,re={offset:120,delay:0,easing:"ease",duration:400,disable:!1,once:!1,mirror:!1,anchorPlacement:"top-bottom",startEvent:"DOMContentLoaded",animatedClassName:"aos-animate",initClassName:"aos-init",useClassNames:!1,disableMutationObserver:!1,throttleDelay:99,debounceDelay:50},se=function(){return document.all&&!window.atob},ce=function(){arguments.length>0&&void 0!==arguments[0]&&arguments[0]&&(ae=!0),ae&&(oe=ne(oe,re),Q(oe),window.addEventListener("scroll",w((function(){Q(oe,re.once)}),re.throttleDelay)))},le=function(){if(oe=ie(),ue(re.disable)||se())return de();ce()},de=function(){oe.forEach((function(e,t){e.node.removeAttribute("data-aos"),e.node.removeAttribute("data-aos-easing"),e.node.removeAttribute("data-aos-duration"),e.node.removeAttribute("data-aos-delay"),re.initClassName&&e.node.classList.remove(re.initClassName),re.animatedClassName&&e.node.classList.remove(re.animatedClassName)}))},ue=function(e){return!0===e||"mobile"===e&&G.mobile()||"phone"===e&&G.phone()||"tablet"===e&&G.tablet()||"function"==typeof e&&!0===e()};return{init:function(e){return re=V(re,e),oe=ie(),re.disableMutationObserver||F.isSupported()||(console.info('\n aos: MutationObserver is not supported on this browser,\n code mutations observing has been disabled.\n You may have to call "refreshHard()" by yourself.\n '),re.disableMutationObserver=!0),re.disableMutationObserver||F.ready("[data-aos]",le),ue(re.disable)||se()?de():(document.querySelector("body").setAttribute("data-aos-easing",re.easing),document.querySelector("body").setAttribute("data-aos-duration",re.duration),document.querySelector("body").setAttribute("data-aos-delay",re.delay),-1===["DOMContentLoaded","load"].indexOf(re.startEvent)?document.addEventListener(re.startEvent,(function(){ce(!0)})):window.addEventListener("load",(function(){ce(!0)})),"DOMContentLoaded"===re.startEvent&&["complete","interactive"].indexOf(document.readyState)>-1&&ce(!0),window.addEventListener("resize",W(ce,re.debounceDelay,!0)),window.addEventListener("orientationchange",W(ce,re.debounceDelay,!0)),oe)},refresh:ce,refreshHard:le}}()},75557:function(e,t,n){(window.__NEXT_P=window.__NEXT_P||[]).push(["/",function(){return n(97074)}])},5824:function(e,t,n){"use strict";var i=n(85893),o=n(41664),a=n.n(o),r=n(57777),s=n.n(r),c=n(67294),l=n(2711),d=n.n(l);n(66130);t.Z=function(e){var t=e.post,n=t.title,o=t.excerpt,r=t.date,l=t.slug,u=new Date(r).toLocaleDateString("en-Us",{timeZone:"UTC",day:"numeric",month:"long",year:"numeric"}),f="/posts/".concat(l);return(0,c.useEffect)((function(){d().init({duration:500})}),[]),(0,i.jsxs)("div",{className:s().card,"data-aos":"zoom-in-up",children:[(0,i.jsxs)("div",{className:s().cardContent,children:[(0,i.jsx)("h4",{children:n}),(0,i.jsx)("time",{children:u}),(0,i.jsx)("p",{children:o})]}),(0,i.jsx)("div",{className:s().cardAction,children:(0,i.jsx)(a(),{href:f,children:(0,i.jsx)("a",{children:"Read more"})})})]})}},97074:function(e,t,n){"use strict";n.r(t),n.d(t,{__N_SSG:function(){return q},default:function(){return M}});var i=n(85893),o=n(9008),a=n.n(o),r=n(37083),s=n.n(r),c=n(25675),l=n.n(c),d=n(67294),u=n(76774),f=n(2711),m=n.n(f),p=(n(66130),n(18716)),h=n(21190),b=function(){var e=(0,d.useState)(),t=e[0],n=e[1];return(0,d.useEffect)((function(){t&&(document.body.style.overflow="hidden"),t||(document.body.style.overflow="unset")}),[t]),(0,d.useEffect)((function(){m().init({duration:500})}),[]),(0,i.jsxs)("section",{className:s().greetings,children:[(0,i.jsxs)("div",{className:s().container,children:[(0,i.jsxs)("div",{className:s().row,children:[(0,i.jsxs)("div",{className:s().columnLeft,children:[(0,i.jsx)("h3",{"data-aos":"fade-left",children:"Hi, my name is Lorem Ipsum."}),(0,i.jsx)("h1",{"data-aos":"fade-right",children:"I'm a Web Developer."}),(0,i.jsxs)("p",{"data-aos":"fade-left","data-aos-delay":"150",children:["I build stuff with"," ",(0,i.jsx)("span",{children:(0,i.jsx)(l(),{src:"/portfolio/images/js.png",alt:"usa-flag",width:16,height:16})})," ","Javascript."]}),(0,i.jsxs)("div",{className:s().socialMedia,children:[(0,i.jsx)("a",{href:"#",target:"_blank",rel:"noreferrer",children:(0,i.jsx)("i",{className:"fab fa-github","data-aos":"flip-up"})}),(0,i.jsx)("a",{href:"#",target:"_blank",rel:"noreferrer",children:(0,i.jsx)("i",{className:"fab fa-linkedin","data-aos":"flip-up","data-aos-delay":"50"})})," ",(0,i.jsx)("a",{href:"#",target:"_blank",rel:"noreferrer",children:(0,i.jsx)("i",{className:"fab fa-twitter","data-aos":"flip-up","data-aos-delay":"100"})})," ",(0,i.jsx)("a",{href:"#",target:"_blank",rel:"noreferrer",children:(0,i.jsx)("i",{className:"fab fa-codepen","data-aos":"flip-up","data-aos-delay":"150"})})]}),(0,i.jsxs)("div",{className:s().ctaButtons,children:[(0,i.jsx)(p.E.button,{whileHover:{scale:1.1},whileTap:{scale:.9},className:"btn btn-filled","data-aos":"fade-up",onClick:function(){window.location.href="#projects"},children:"My Work"}),(0,i.jsx)(p.E.button,{whileHover:{scale:1.1},whileTap:{scale:.9},className:"btn btn-outlined","data-aos":"fade-down",onClick:function(){n(!0)},children:"Let's Talk"})]})]}),(0,i.jsx)("div",{className:"".concat(s().columnRight," ").concat(s().profilePic),children:(0,i.jsx)(l(),{src:"/portfolio/images/profile-pic.webp",width:460,height:460,alt:"profile-pic","data-aos":"fade-left"})})]}),(0,i.jsx)("div",{className:"iconScrollContainer",children:(0,i.jsx)("a",{href:"#projects",children:(0,i.jsx)("div",{className:"iconScroll","data-aos":"fade-down","data-aos-offset":"50"})})})]}),(0,i.jsx)(h.M,{children:t&&(0,i.jsx)(u.Z,{contact:!0,onClose:function(){n(!1)}})})]})},v=n(27115),g=n.n(v),j=n(84405),w=n.n(j),x=n(41664),_=n.n(x),y=function(e){var t=e.project;return(0,i.jsx)(i.Fragment,{children:(0,i.jsxs)("div",{className:w().project,children:[(0,i.jsx)("div",{className:w().titleContainer,children:(0,i.jsxs)("div",{className:w().title,children:[(0,i.jsx)("h3",{children:t.title}),(0,i.jsx)("small",{children:Array.isArray(t.tech)?t.tech.join(", "):t.tech})]})}),(0,i.jsxs)("div",{className:w().row,children:[(0,i.jsx)("div",{className:w().columnRight,children:(0,i.jsx)(_(),{href:"/projects/".concat(t.slug),children:(0,i.jsx)("a",{children:(0,i.jsx)("div",{className:w().card,children:(0,i.jsx)(l(),{src:"/portfolio/images/projects/".concat(t.image),width:600,height:460,alt:t.title})})})})}),(0,i.jsxs)("div",{className:w().columnLeft,children:[(0,i.jsx)("p",{className:w().description,children:t.description}),(0,i.jsxs)("div",{className:w().projectLinks,children:[t.githubLink&&(0,i.jsxs)("a",{href:t.githubLink,target:"_blank",rel:"noreferrer",children:[(0,i.jsx)("i",{className:"fab fa-github"}),"Github"]}),t.liveLink&&(0,i.jsxs)("a",{href:t.liveLink,target:"_blank",rel:"noreferrer",children:[(0,i.jsx)("i",{className:"fas fa-link"}),"Website"]}),(0,i.jsx)(_(),{href:"/projects/".concat(t.slug),children:(0,i.jsxs)("a",{children:[(0,i.jsx)("i",{className:"fa fa-circle-info"}),"Project details"]})})]})]})]})]})})},k=n(88494),N=(n(21082),n(86640),n(36797),n(21669),n(23850)),E=function(e){var t=e.featuredProjects;return(0,d.useEffect)((function(){m().init({duration:500})}),[]),(0,i.jsx)("section",{className:g().projects,id:"projects",children:(0,i.jsxs)("div",{className:g().container,children:[(0,i.jsx)("h2",{"data-aos":"slide-right",children:"Featured projects"}),(0,i.jsx)("div",{"data-aos":"flip-up",children:(0,i.jsx)(k.tq,{effect:"cards",grabCursor:!0,modules:[N.c4,N.tl,N.W_],navigation:!0,pagination:{dynamicBullets:!0},className:"featuredProjects mySwiper",children:t.map((function(e,t){return(0,i.jsx)(k.o5,{children:(0,i.jsx)(y,{project:e})},t)}))})}),(0,i.jsx)("div",{className:g().buttonWrapper,children:(0,i.jsx)(_(),{href:"/projects/",children:(0,i.jsx)(p.E.button,{whileHover:{scale:1.1},whileTap:{scale:.9},className:"btn btn-filled","data-aos":"fade-up",children:"View All Projects"})})})]})})},L=n(37707),P=n.n(L),C=n(5824),O=function(e){var t=e.posts;return(0,d.useEffect)((function(){m().init({duration:500})}),[]),(0,i.jsx)("section",{className:"".concat(P().blog," mvh-100"),id:"blog",children:(0,i.jsxs)("div",{className:P().container,children:[(0,i.jsx)("h2",{"data-aos":"slide-right",children:"Featured posts"}),(0,i.jsx)("div",{className:P().galleryWrap,children:(0,i.jsx)("div",{className:P().gallery,children:null!==t&&void 0!==t&&t.map((function(e){return(0,i.jsx)(C.Z,{post:e},e.slug)}))})}),(0,i.jsx)("div",{"data-aos":"fade-up",className:P().buttonWrapper,children:(0,i.jsx)(_(),{href:"/posts/",children:(0,i.jsx)(p.E.button,{whileHover:{scale:1.1},whileTap:{scale:.9},className:"btn btn-filled",children:"View All Posts"})})})]})})},A=n(24540),S=n.n(A),T=function(){return(0,d.useEffect)((function(){m().init({duration:500})}),[]),(0,i.jsx)("section",{className:S().about,id:"about",children:(0,i.jsxs)("div",{className:S().container,children:[(0,i.jsx)("h2",{"data-aos":"slide-right",children:"About me"}),(0,i.jsxs)("div",{className:S().row,children:[(0,i.jsxs)("div",{className:S().columnLeft,"data-aos":"fade-right",children:[(0,i.jsx)("h3",{children:"Lorem, ipsum dolor sit amet consectetur adipisicing elit. Commodi molestiae libero eius adipisci reprehenderit, cumque illum atque provident ullam placeat harum veritatis odit perferendis ipsum aperiam mollitia voluptates temporibus nulla?"}),(0,i.jsx)("p",{children:"Lorem, ipsum dolor sit amet consectetur adipisicing elit. Placeat qui autem quis, alias porro eligendi nostrum impedit aut omnis a distinctio officiis excepturi facere incidunt ut! Asperiores laboriosam iure blanditiis."})]}),(0,i.jsxs)("div",{className:S().columnRight,children:[(0,i.jsx)("div",{className:S().imageContainer,children:(0,i.jsx)(l(),{src:"/portfolio/images/profile-pic-2.webp",width:600,height:600,alt:"profile-pic","data-aos":"fade-left"})}),(0,i.jsx)("div",{className:S().quote,"data-aos":"fade-right",children:'"Distinctio officiis excepturi facere incidunt ut!"'})]})]})]})})},q=!0;function M(e){return(0,i.jsxs)(i.Fragment,{children:[(0,i.jsxs)(a(),{children:[(0,i.jsx)("title",{children:"Personal Portfolio"}),(0,i.jsx)("meta",{name:"description",content:"My personal web development portfolio including various frontend and fullstack projects as well as web development blog articles. Tech-Stack: React, Next.js, Redux, Typescript, Node.js, Express, MongoDB, Bootstrap, Shopware."})]}),(0,i.jsx)(b,{}),(0,i.jsx)(E,{featuredProjects:e.featuredProjects}),(0,i.jsx)(O,{posts:e.posts}),(0,i.jsx)(T,{})]})}},24540:function(e){e.exports={about:"about_about__aUSCF",columnLeft:"about_columnLeft__0w_r1",columnRight:"about_columnRight__Ndnud",imageContainer:"about_imageContainer__cDRKA",quote:"about_quote___sn_z",tooltip:"about_tooltip__DkFKt",container:"about_container__9Q92l",row:"about_row__5R2uZ"}},37707:function(e){e.exports={blog:"featuredPosts_blog__89cAf",galleryTitle:"featuredPosts_galleryTitle__LVx9A",buttonWrapper:"featuredPosts_buttonWrapper__xgcGX",container:"featuredPosts_container__W9yVQ",row:"featuredPosts_row__VxFee",gallery:"featuredPosts_gallery__FW5hN"}},84405:function(e){e.exports={project:"featuredProjectItem_project__4gS4N",columnLeft:"featuredProjectItem_columnLeft__mfDaL",description:"featuredProjectItem_description__Vxlli",projectLinks:"featuredProjectItem_projectLinks__EToR1",columnRight:"featuredProjectItem_columnRight__2_jp2",card:"featuredProjectItem_card__mEdFm",titleContainer:"featuredProjectItem_titleContainer__v2No_",title:"featuredProjectItem_title__EfMkF",row:"featuredProjectItem_row__JkxSm"}},27115:function(e){e.exports={projects:"featuredProjects_projects__0N_5L",carousel:"featuredProjects_carousel__pgUJS",innerCarousel:"featuredProjects_innerCarousel__BJmzd",buttonWrapper:"featuredProjects_buttonWrapper__s1dM1",container:"featuredProjects_container__yJkuw",row:"featuredProjects_row__cvnM_"}},37083:function(e){e.exports={greetings:"hero_greetings__a2HWI",row:"hero_row__3xLuq",columnLeft:"hero_columnLeft__oVNaI",socialMedia:"hero_socialMedia__u1M78",ctaButtons:"hero_ctaButtons__sdlsA",columnRight:"hero_columnRight__k1__j",profilePic:"hero_profilePic__nP6mQ",container:"hero_container__SSOqw"}},57777:function(e){e.exports={card:"postItem_card__A_FX_",cardAction:"postItem_cardAction__0dwSq"}},66130:function(){},86640:function(){}},function(e){e.O(0,[675,854,218,774,888,179],(function(){return t=75557,e(e.s=t);var t}));var t=e.O();_N_E=t}]); -------------------------------------------------------------------------------- /index.html: -------------------------------------------------------------------------------- 1 | Personal Portfolio

Hi, my name is Lorem Ipsum.

I'm a Web Developer.

I build stuff with usa-flag Javascript.

profile-pic

Featured projects

Example 1

React, MongoDB, Node, Express, Context
Example 1

This is a MERN Fullstack project with authentication and CRUD functionality.

Example 2

React, Context
Example 2

Search for github users with Github API and React Context.

Featured posts

About me

Lorem, ipsum dolor sit amet consectetur adipisicing elit. Commodi molestiae libero eius adipisci reprehenderit, cumque illum atque provident ullam placeat harum veritatis odit perferendis ipsum aperiam mollitia voluptates temporibus nulla?

Lorem, ipsum dolor sit amet consectetur adipisicing elit. Placeat qui autem quis, alias porro eligendi nostrum impedit aut omnis a distinctio officiis excepturi facere incidunt ut! Asperiores laboriosam iure blanditiis.

profile-pic
"Distinctio officiis excepturi facere incidunt ut!"
--------------------------------------------------------------------------------