{
    "componentChunkName": "component---src-pages-projects-js",
    "path": "/projects/",
    "result": {"data":{"projects":{"edges":[{"node":{"frontmatter":{"demo":"https://ellyloel.com/","github":"https://github.com/EllyLoel/ellyloel.com","id":6,"imageAlt":"A website with the title 'Hello. I am Elly' next to a girl sitting with her laptop","title":"Personal Website v2.0","imageSrc":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAANCAYAAACpUE5eAAAACXBIWXMAAAsTAAALEwEAmpwYAAACbUlEQVQ4y33R208TURDA4f0XffPNaHzUGB4M0Rh948EYqSjSApVLabEIIkVopUALlLL0AhQBQ0AJCigUoe2evXTb3Z+BFrmGSSZnMjnny0yOtPSyzFdHiUxDiYXXJvONReZcOvNujbRbJdmuk+jQSHRpyB6d6U6NWJfKlE9lslsw4RdEPihE+xWiAQWpgplVzGSuqUjaZZBu1Um6NWbbdOSOI0wj3nUGe3+KjfcqjPcrjA0UkC5hziLJZoNEi8Gs20Bu04m3a+cnO4v1KYx9LDD6qcDIQB7pZM10U5GU06hgrTqz7/QK1qEx7ali3VWsRxDtvYAF8nwZzCMdYfNOk7TLJNVSZLbFQD6eTDuHTXpVIl7BuE9h3C8Y7VEI9yqEz2ChoRzS0Zpyo4LsFMjNKql2HbldEO/QTyfzqUz7C8xHDllfzrMyt8+3zD6LqX3CgcJ/LBjMIaVcBvX3+3l628Wzux6C9WEWfNvEOovEvIKpbsGk3yDWt8jW+i6qDvF4ghk5QWZhlWhYIziUIxTKERzJISWaNdyPIzy546TunpeHt+qpe+Aj5j35AJWIv8DNG7W8bfBQyJX4m9XJ7gk2N/J8DhwSGDxkYOiA/uEDpJkmnVFHlsEXPxl27DD4aos+xzpRj2CiWxDtUYj2CR7VNFFb85zWNyFCAxvIMUFCVkgmBXMLKplllaVVFen7pMlmosx2BnZWLHbXbPY3IfurxMHvMrlsGZG30ISFKkw0TcUwDCwLbJtLIVUOu5oX6+uicse27XMpHRdWJa2zJzamsPmzVkRVy1c+viqli42Th0dhlSy0vR+USua5/nXxD4lGkM+bR6DHAAAAAElFTkSuQmCC"},"images":{"fallback":{"src":"/static/90ec494db01b94a40f61ba4c2ef3121d/665b4/personal%20website.png","srcSet":"/static/90ec494db01b94a40f61ba4c2ef3121d/363f3/personal%20website.png 125w,\n/static/90ec494db01b94a40f61ba4c2ef3121d/41650/personal%20website.png 250w,\n/static/90ec494db01b94a40f61ba4c2ef3121d/665b4/personal%20website.png 500w,\n/static/90ec494db01b94a40f61ba4c2ef3121d/8d197/personal%20website.png 1000w","sizes":"(min-width: 500px) 500px, 100vw"},"sources":[{"srcSet":"/static/90ec494db01b94a40f61ba4c2ef3121d/22c5c/personal%20website.webp 125w,\n/static/90ec494db01b94a40f61ba4c2ef3121d/c2874/personal%20website.webp 250w,\n/static/90ec494db01b94a40f61ba4c2ef3121d/4c123/personal%20website.webp 500w,\n/static/90ec494db01b94a40f61ba4c2ef3121d/904ec/personal%20website.webp 1000w","type":"image/webp","sizes":"(min-width: 500px) 500px, 100vw"}]},"width":500,"height":313}}},"comingSoon":null},"body":"var _excluded = [\"components\"];\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\n/* @jsxRuntime classic */\n\n/* @jsx mdx */\nvar _frontmatter = {\n  \"id\": 6,\n  \"title\": \"Personal Website v2.0\",\n  \"imageSrc\": \"../../src/images/personal website.png\",\n  \"imageAlt\": \"A website with the title 'Hello. I am Elly' next to a girl sitting with her laptop\",\n  \"demo\": \"https://ellyloel.com/\",\n  \"github\": \"https://github.com/EllyLoel/ellyloel.com\"\n};\nvar layoutProps = {\n  _frontmatter: _frontmatter\n};\nvar MDXLayout = \"wrapper\";\nreturn function MDXContent(_ref) {\n  var components = _ref.components,\n      props = _objectWithoutProperties(_ref, _excluded);\n\n  return mdx(MDXLayout, _extends({}, layoutProps, props, {\n    components: components,\n    mdxType: \"MDXLayout\"\n  }), mdx(\"p\", null, \"This is version 2.0 of my personal website, which contains a portfolio, resume & digital garden. I built it with many fresh \", mdx(\"a\", {\n    parentName: \"p\",\n    \"href\": \"https://reactjs.org/\"\n  }, \"React\"), \" & \", mdx(\"a\", {\n    parentName: \"p\",\n    \"href\": \"https://www.gatsbyjs.com/\"\n  }, \"Gatsby\"), \" features such as \", mdx(\"a\", {\n    parentName: \"p\",\n    \"href\": \"https://www.gatsbyjs.com/docs/how-to/images-and-media/using-gatsby-plugin-image/#dynamic-images\"\n  }, \"Dynamic Images\"), \", \", mdx(\"a\", {\n    parentName: \"p\",\n    \"href\": \"https://reactjs.org/docs/hooks-intro.html\"\n  }, \"Hooks\"), \" & \", mdx(\"a\", {\n    parentName: \"p\",\n    \"href\": \"https://mdxjs.com/\"\n  }, \"MDX\"), \".\"));\n}\n;\nMDXContent.isMDXComponent = true;"}},{"node":{"frontmatter":{"demo":"https://guardian-search-app.vercel.app/","github":"https://github.com/EllyLoel/guardian-search-app","id":5,"imageAlt":"The title \"Guardian Search\" with a search input below","title":"Guardian Search","imageSrc":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAANCAIAAAAmMtkJAAAACXBIWXMAAAsTAAALEwEAmpwYAAAA10lEQVQoz7WSy4rCMBiFff/X8A1mIwxuBikuRnEh0loVRbwktcZ4aWOrOUcKXmbEFh3G8HEIgY+fnKTUC/BnSv8p9wuzSPYluhf84LY/n8h82ZeYaqwNlzus91nqGKsY2jDc2lWEsbr3b7InoGOSbLTDqjOrfE2cpqx9i3orcAeapNxk8x/LXQkVMUltckByQHrM0oKfjih/jBodpQw9YYsnA+DPNZrs3L6WC7OM6In8O48VFlsEv9F7blJqw2GYtfhU21fcuXXn1hO2qO3rO+fx5h/2knwCfmTQi7FYInwAAAAASUVORK5CYII="},"images":{"fallback":{"src":"/static/3b941d0e7f0be61be3280c84c26c2e83/665b4/guardian%20search.png","srcSet":"/static/3b941d0e7f0be61be3280c84c26c2e83/363f3/guardian%20search.png 125w,\n/static/3b941d0e7f0be61be3280c84c26c2e83/41650/guardian%20search.png 250w,\n/static/3b941d0e7f0be61be3280c84c26c2e83/665b4/guardian%20search.png 500w,\n/static/3b941d0e7f0be61be3280c84c26c2e83/8d197/guardian%20search.png 1000w","sizes":"(min-width: 500px) 500px, 100vw"},"sources":[{"srcSet":"/static/3b941d0e7f0be61be3280c84c26c2e83/22c5c/guardian%20search.webp 125w,\n/static/3b941d0e7f0be61be3280c84c26c2e83/c2874/guardian%20search.webp 250w,\n/static/3b941d0e7f0be61be3280c84c26c2e83/4c123/guardian%20search.webp 500w,\n/static/3b941d0e7f0be61be3280c84c26c2e83/904ec/guardian%20search.webp 1000w","type":"image/webp","sizes":"(min-width: 500px) 500px, 100vw"}]},"width":500,"height":313}}},"comingSoon":false},"body":"var _excluded = [\"components\"];\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\n/* @jsxRuntime classic */\n\n/* @jsx mdx */\nvar _frontmatter = {\n  \"id\": 5,\n  \"comingSoon\": false,\n  \"title\": \"Guardian Search\",\n  \"imageSrc\": \"../../src/images/guardian search.png\",\n  \"imageAlt\": \"The title \\\"Guardian Search\\\" with a search input below\",\n  \"demo\": \"https://guardian-search-app.vercel.app/\",\n  \"github\": \"https://github.com/EllyLoel/guardian-search-app\"\n};\nvar layoutProps = {\n  _frontmatter: _frontmatter\n};\nvar MDXLayout = \"wrapper\";\nreturn function MDXContent(_ref) {\n  var components = _ref.components,\n      props = _objectWithoutProperties(_ref, _excluded);\n\n  return mdx(MDXLayout, _extends({}, layoutProps, props, {\n    components: components,\n    mdxType: \"MDXLayout\"\n  }), mdx(\"p\", null, \"This project was completed as a code challenge in the interview process for a job. It's built with \", mdx(\"a\", {\n    parentName: \"p\",\n    \"href\": \"https://reactjs.org/\"\n  }, \"React\"), \" & \", mdx(\"a\", {\n    parentName: \"p\",\n    \"href\": \"https://nextjs.org/\"\n  }, \"Next.js\"), \", it connects to the \", mdx(\"a\", {\n    parentName: \"p\",\n    \"href\": \"https://open-platform.theguardian.com/\"\n  }, \"Guardian API\"), \" to search for articles and the styling is done with \", mdx(\"a\", {\n    parentName: \"p\",\n    \"href\": \"https://tailwindcss.com/\"\n  }, \"Tailwind CSS\"), \".\"));\n}\n;\nMDXContent.isMDXComponent = true;"}},{"node":{"frontmatter":{"demo":"https://ellyloel-react-todo-app.netlify.app/","github":"https://github.com/EllyLoel/react-todo-app","id":4,"imageAlt":"input field with the placeholder text \"I need to...\"","title":"Todo App","imageSrc":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAANCAYAAACpUE5eAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAiUlEQVQ4y82TWwrDIBRE3f/mspJ+hNwXKk5Jgya0TBHajwiDLzwOdzSpKv6pdBugiHAg2+QSCk19ce/ndcLeocOhmSHnPKdwmBGHHVhrRWsNEfE6RFsrwGNB9hWiBmUO3R2llOFiH3+qHn1scLO5Gl5TpPXTDjvmX1OeSnyYOBP/8dnwy9Ptv94TNLDvhH/hLCQAAAAASUVORK5CYII="},"images":{"fallback":{"src":"/static/504e8c96845e37a87cbadfe2fc7ff49a/665b4/react%20todo%20app.png","srcSet":"/static/504e8c96845e37a87cbadfe2fc7ff49a/363f3/react%20todo%20app.png 125w,\n/static/504e8c96845e37a87cbadfe2fc7ff49a/41650/react%20todo%20app.png 250w,\n/static/504e8c96845e37a87cbadfe2fc7ff49a/665b4/react%20todo%20app.png 500w,\n/static/504e8c96845e37a87cbadfe2fc7ff49a/8d197/react%20todo%20app.png 1000w","sizes":"(min-width: 500px) 500px, 100vw"},"sources":[{"srcSet":"/static/504e8c96845e37a87cbadfe2fc7ff49a/22c5c/react%20todo%20app.webp 125w,\n/static/504e8c96845e37a87cbadfe2fc7ff49a/c2874/react%20todo%20app.webp 250w,\n/static/504e8c96845e37a87cbadfe2fc7ff49a/4c123/react%20todo%20app.webp 500w,\n/static/504e8c96845e37a87cbadfe2fc7ff49a/904ec/react%20todo%20app.webp 1000w","type":"image/webp","sizes":"(min-width: 500px) 500px, 100vw"}]},"width":500,"height":313}}},"comingSoon":false},"body":"var _excluded = [\"components\"];\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\n/* @jsxRuntime classic */\n\n/* @jsx mdx */\nvar _frontmatter = {\n  \"id\": 4,\n  \"comingSoon\": false,\n  \"title\": \"Todo App\",\n  \"imageSrc\": \"../../src/images/react todo app.png\",\n  \"imageAlt\": \"input field with the placeholder text \\\"I need to...\\\"\",\n  \"demo\": \"https://ellyloel-react-todo-app.netlify.app/\",\n  \"github\": \"https://github.com/EllyLoel/react-todo-app\"\n};\nvar layoutProps = {\n  _frontmatter: _frontmatter\n};\nvar MDXLayout = \"wrapper\";\nreturn function MDXContent(_ref) {\n  var components = _ref.components,\n      props = _objectWithoutProperties(_ref, _excluded);\n\n  return mdx(MDXLayout, _extends({}, layoutProps, props, {\n    components: components,\n    mdxType: \"MDXLayout\"\n  }), mdx(\"p\", null, \"I built this project as a part of the \", mdx(\"a\", {\n    parentName: \"p\",\n    \"href\": \"https://scrimba.com/learn/learnreact\"\n  }, \"React Basics\"), \" module from \", mdx(\"a\", {\n    parentName: \"p\",\n    \"href\": \"https://scrimba.com/learn/frontend\"\n  }, \"The Frontend Developer Career Path\"), \" on \", mdx(\"a\", {\n    parentName: \"p\",\n    \"href\": \"https://scrimba.com/\"\n  }, \"Scrimba\"), \". It was initially built using class based components, but I have refactored it to use \", mdx(\"a\", {\n    parentName: \"p\",\n    \"href\": \"https://reactjs.org/docs/hooks-intro.html\"\n  }, \"React Hooks\"), \" and added extra features.\"));\n}\n;\nMDXContent.isMDXComponent = true;"}},{"node":{"frontmatter":{"demo":"https://ellyloel-react-movie-search-app.netlify.app/","github":"https://github.com/EllyLoel/react-movie-search-app","id":3,"imageAlt":"The title \"React movie search\" with a search field below","title":"Movie Search","imageSrc":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAANCAIAAAAmMtkJAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAAo0lEQVQoz82STQqDMBBGvT/2Mtl5gUAiLqzxBBIRixrSzA9ZaEEpXQhK241vOfC+GWYmCX+QXEN+7nkXz2UiYmZCJGIiQkRmRkQAOJIBYByHoii01lVVKaXyPK/rWmldlndjzDRN+4hPZ++9tbZpmv7Rt23bdd2wIqXMssw5dySHEJxzSNuYEFeWZRFC3NL0XN7vzHsfY5zn+cdTbRFXfpJv5Rcb+N/D9idmrQAAAABJRU5ErkJggg=="},"images":{"fallback":{"src":"/static/9a6356ec5f4d1483fe4fb9c0c9066033/665b4/react%20movie%20search%20app.png","srcSet":"/static/9a6356ec5f4d1483fe4fb9c0c9066033/363f3/react%20movie%20search%20app.png 125w,\n/static/9a6356ec5f4d1483fe4fb9c0c9066033/41650/react%20movie%20search%20app.png 250w,\n/static/9a6356ec5f4d1483fe4fb9c0c9066033/665b4/react%20movie%20search%20app.png 500w,\n/static/9a6356ec5f4d1483fe4fb9c0c9066033/8d197/react%20movie%20search%20app.png 1000w","sizes":"(min-width: 500px) 500px, 100vw"},"sources":[{"srcSet":"/static/9a6356ec5f4d1483fe4fb9c0c9066033/22c5c/react%20movie%20search%20app.webp 125w,\n/static/9a6356ec5f4d1483fe4fb9c0c9066033/c2874/react%20movie%20search%20app.webp 250w,\n/static/9a6356ec5f4d1483fe4fb9c0c9066033/4c123/react%20movie%20search%20app.webp 500w,\n/static/9a6356ec5f4d1483fe4fb9c0c9066033/904ec/react%20movie%20search%20app.webp 1000w","type":"image/webp","sizes":"(min-width: 500px) 500px, 100vw"}]},"width":500,"height":313}}},"comingSoon":false},"body":"var _excluded = [\"components\"];\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\n/* @jsxRuntime classic */\n\n/* @jsx mdx */\nvar _frontmatter = {\n  \"id\": 3,\n  \"comingSoon\": false,\n  \"title\": \"Movie Search\",\n  \"imageSrc\": \"../../src/images/react movie search app.png\",\n  \"imageAlt\": \"The title \\\"React movie search\\\" with a search field below\",\n  \"demo\": \"https://ellyloel-react-movie-search-app.netlify.app/\",\n  \"github\": \"https://github.com/EllyLoel/react-movie-search-app\"\n};\nvar layoutProps = {\n  _frontmatter: _frontmatter\n};\nvar MDXLayout = \"wrapper\";\nreturn function MDXContent(_ref) {\n  var components = _ref.components,\n      props = _objectWithoutProperties(_ref, _excluded);\n\n  return mdx(MDXLayout, _extends({}, layoutProps, props, {\n    components: components,\n    mdxType: \"MDXLayout\"\n  }), mdx(\"p\", null, \"I completed this project during the second part of the \", mdx(\"a\", {\n    parentName: \"p\",\n    \"href\": \"https://scrimba.com/learn/learnreact\"\n  }, \"React Basics\"), \" module from \", mdx(\"a\", {\n    parentName: \"p\",\n    \"href\": \"https://scrimba.com/learn/frontend\"\n  }, \"The Frontend Developer Career Path\"), \" on \", mdx(\"a\", {\n    parentName: \"p\",\n    \"href\": \"https://scrimba.com/\"\n  }, \"Scrimba\"), \". It was first built with a mix of class based components & functional components with \", mdx(\"a\", {\n    parentName: \"p\",\n    \"href\": \"https://reactjs.org/docs/hooks-intro.html\"\n  }, \"Hooks\"), \" but I refactored it to use only functional components.\"));\n}\n;\nMDXContent.isMDXComponent = true;"}},{"node":{"frontmatter":{"demo":"https://personal-dashboard-ellyloel.netlify.app/","github":"https://github.com/EllyLoel/Personal-dashboard","id":2,"imageAlt":"Personal dashboard that displays the time, weather, a quote & a background image","title":"Personal Dashboard","imageSrc":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAANCAYAAACpUE5eAAAACXBIWXMAAAsTAAALEwEAmpwYAAACA0lEQVQ4y5WSzWvUUBTF30eTmeQ5eS/G1mk7rTOdDHWjhZbqiMVRpBu10Lpx6crBhUJHlKEOQmEWtW6KWlGKFDpQqVYXoqJYERQpFBT/pCNJJjHGLHRxuI9H3i/33HsIIQScc3j1wswMnm5uo3rqLDIZw7+jlPo1LkpoQgSsW0n4kTANdJ6/RGNhEUNFF5QwHxYCvYeEBpUlFAcTxpj/YG52Dm92vuD8xUuw9/dF3UXA2DkdlgA+fLSKjRevcfL0NEwz9wckLkYpeEqXoXzLwsji3YePWHm8jvHjU9Az2b/mliYW6zbs0gf2H+zD7t53tO/dx9GJKjQt4z/QNA35fB69B3ph2zaEacJxHOwTAlldB6fMtxnCog4HB/qx9+MnFpdXMDZxLAIKIdBqtVCv19Fut1Gr1dBsNnF3aQmN+XmY2SAJnCYsO7aNz193sfzgCcYnT0DXA8u6rsN1XVQqLkqlEgqFAoaHhlEpu3DLZfQw7tvmyRl62tzaxlpnC9WpMzAM8d8zjIBhqG/cuolXbz9h+twspHSiLXspCPUblL7hIKvdbB0eHcX7nW+4fOU6BgaLwaBpujyLvBshFpsfo13L4d8Xbt/B6loHR8YmwVnPP9lOURAPb6PF4iGsbzzD1WsNjIxUoKSClBLSklBKwbIsKCmhLO8uONtKQXlnS8LK5fALf1xNda4KEq4AAAAASUVORK5CYII="},"images":{"fallback":{"src":"/static/ba84f7008dfc976015944716651dda93/665b4/personal%20dashboard.png","srcSet":"/static/ba84f7008dfc976015944716651dda93/363f3/personal%20dashboard.png 125w,\n/static/ba84f7008dfc976015944716651dda93/41650/personal%20dashboard.png 250w,\n/static/ba84f7008dfc976015944716651dda93/665b4/personal%20dashboard.png 500w,\n/static/ba84f7008dfc976015944716651dda93/8d197/personal%20dashboard.png 1000w","sizes":"(min-width: 500px) 500px, 100vw"},"sources":[{"srcSet":"/static/ba84f7008dfc976015944716651dda93/22c5c/personal%20dashboard.webp 125w,\n/static/ba84f7008dfc976015944716651dda93/c2874/personal%20dashboard.webp 250w,\n/static/ba84f7008dfc976015944716651dda93/4c123/personal%20dashboard.webp 500w,\n/static/ba84f7008dfc976015944716651dda93/904ec/personal%20dashboard.webp 1000w","type":"image/webp","sizes":"(min-width: 500px) 500px, 100vw"}]},"width":500,"height":313}}},"comingSoon":false},"body":"var _excluded = [\"components\"];\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\n/* @jsxRuntime classic */\n\n/* @jsx mdx */\nvar _frontmatter = {\n  \"id\": 2,\n  \"comingSoon\": false,\n  \"title\": \"Personal Dashboard\",\n  \"imageSrc\": \"../../src/images/personal dashboard.png\",\n  \"imageAlt\": \"Personal dashboard that displays the time, weather, a quote & a background image\",\n  \"demo\": \"https://personal-dashboard-ellyloel.netlify.app/\",\n  \"github\": \"https://github.com/EllyLoel/Personal-dashboard\"\n};\nvar layoutProps = {\n  _frontmatter: _frontmatter\n};\nvar MDXLayout = \"wrapper\";\nreturn function MDXContent(_ref) {\n  var components = _ref.components,\n      props = _objectWithoutProperties(_ref, _excluded);\n\n  return mdx(MDXLayout, _extends({}, layoutProps, props, {\n    components: components,\n    mdxType: \"MDXLayout\"\n  }), mdx(\"p\", null, \"In this project I used a number of REST APIs (\", mdx(\"a\", {\n    parentName: \"p\",\n    \"href\": \"https://api.nasa.gov/#apod\"\n  }, \"NASA APOD\"), \", \", mdx(\"a\", {\n    parentName: \"p\",\n    \"href\": \"https://openweathermap.org/api\"\n  }, \"OpenWeatherMap\"), \", \", mdx(\"a\", {\n    parentName: \"p\",\n    \"href\": \"https://github.com/lukePeavey/quotable#quotable\"\n  }, \"Quotable\"), \") as well as the \", mdx(\"a\", {\n    parentName: \"p\",\n    \"href\": \"https://developer.mozilla.org/en-US/docs/Web/API/Geolocation_API\"\n  }, \"Geolocation Web API\"), \" to create a personal dashboard, which can be installed as a Chrome extension.\"));\n}\n;\nMDXContent.isMDXComponent = true;"}},{"node":{"frontmatter":{"demo":"https://example.com","github":"https://example.com","id":1,"imageAlt":"The Netflix home screen displaying Joker (2019 film)","title":"Netflix Clone","imageSrc":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAANCAIAAAAmMtkJAAAACXBIWXMAAA7EAAAOxAGVKw4bAAADJElEQVQozwEZA+b8AAgBAywHCh8GCiAKD1RGTCtBQw8SEyEaFkMxJ2hhUYJWOoM+HIpSPLqBaNy0mbt7ToBDJkMtICkjHVA/LwAGAQEXBAcVBQkLBQsYJS0UKS4TFxgvIh9BKSFeRTKUWDSraDjnzKC7uKnetHPBdUKRUDOFUja2dE7AelMAAAAAAAECAAIGAQcPAA4XAA8WEhgaKiAeUjEmWTkmnlwy75xPYlAxAAAMXVhT5bp8tGw/p2JAt3tTZEY3AAAAAQAAAQEDBgEIDQIQFwMRGB0bG248KkYlHG87IcZqMuKlZCUsJgEJEjApL9OsafOfYNySYs6UZ49wVwABAQIHCAoBBQkECQ0EDRELEBMiFBOqVjyHOSG0USb1k0ny1q05ODUAAg5TXUz924j+257/zJ3tsXy2iWgACwwNUlNVSk1PNjs+Mzs+WFlad1RMm2ZVyoVl54ZM/7dddUk0DgAACAYIEy85WzQqwZWH/fzn/NGYvoxqAAMDBBYWGhogKB0fKEEsME0vMnhJQJtXPsBrQ/mYVrJ0RRYFCBYODhEAAAwUGRgLD2QfIPjy7/zzw+mwegAHBwctLjM+TVeRjIq8ioa6gX2gjYujgHTuuIq8nn8xGBp6XU5WSEAVEREFBAclIiAwBwiEaF7/+73/76sACQgJISEkO0dQloyDrZaPuJWM3rKb98mdrYtyJQwMk3ly//jbhnJmAAAACAUFCg0PPRIQDQAAVT8uq41tAAsLDEJAQ1JOUjszNyESE1YlHpdLLndAJxIAAI55ev/8/P///5J1cwAAAA0ICAAAAH1HO8+ng086Jy0VDQAWFxyNjY+gnJthYWIQDAh0SzdwRC2CXTrIuHP//+D4+dz///93VlQAAAATBwcAAABbMC3//uT/8ajnx5gAAAIIBwkLPykZEQoGEg4JWjYjqFgw0nlF9Kpj+saH9rVj/dJ6Sx8bBAAAEQQDAgACLhMQ5Kxz9sp9/9SNAAIECQYOFAIKCQQIBAoKBh4PB0UXCFMbC2QiC5YwDc9MCtZsHjAEAg0AARMCAgABAxsLC5hAGY9HFn1HHOZt+cfHBGMPAAAAAElFTkSuQmCC"},"images":{"fallback":{"src":"/static/612c4711de57ba2b3511a332895a91fc/665b4/netflix%20screenshot.png","srcSet":"/static/612c4711de57ba2b3511a332895a91fc/363f3/netflix%20screenshot.png 125w,\n/static/612c4711de57ba2b3511a332895a91fc/41650/netflix%20screenshot.png 250w,\n/static/612c4711de57ba2b3511a332895a91fc/665b4/netflix%20screenshot.png 500w,\n/static/612c4711de57ba2b3511a332895a91fc/8d197/netflix%20screenshot.png 1000w","sizes":"(min-width: 500px) 500px, 100vw"},"sources":[{"srcSet":"/static/612c4711de57ba2b3511a332895a91fc/22c5c/netflix%20screenshot.webp 125w,\n/static/612c4711de57ba2b3511a332895a91fc/c2874/netflix%20screenshot.webp 250w,\n/static/612c4711de57ba2b3511a332895a91fc/4c123/netflix%20screenshot.webp 500w,\n/static/612c4711de57ba2b3511a332895a91fc/904ec/netflix%20screenshot.webp 1000w","type":"image/webp","sizes":"(min-width: 500px) 500px, 100vw"}]},"width":500,"height":313}}},"comingSoon":true},"body":"var _excluded = [\"components\"];\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\n/* @jsxRuntime classic */\n\n/* @jsx mdx */\nvar _frontmatter = {\n  \"id\": 1,\n  \"comingSoon\": true,\n  \"title\": \"Netflix Clone\",\n  \"imageSrc\": \"../../src/images/netflix screenshot.png\",\n  \"imageAlt\": \"The Netflix home screen displaying Joker (2019 film)\",\n  \"demo\": \"https://example.com\",\n  \"github\": \"https://example.com\"\n};\nvar layoutProps = {\n  _frontmatter: _frontmatter\n};\nvar MDXLayout = \"wrapper\";\nreturn function MDXContent(_ref) {\n  var components = _ref.components,\n      props = _objectWithoutProperties(_ref, _excluded);\n\n  return mdx(MDXLayout, _extends({}, layoutProps, props, {\n    components: components,\n    mdxType: \"MDXLayout\"\n  }), mdx(\"p\", null, \"Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vestibulum fringilla, diam eu consequat pretium, ex nisi dapibus magna, quis elementum magna nibh vitae dolor.\"));\n}\n;\nMDXContent.isMDXComponent = true;"}}]}},"pageContext":{}},
    "staticQueryHashes": ["63159454"]}