{"data":{"featured":{"edges":[{"node":{"frontmatter":{"title":"Halcyon Theme","cover":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAANCAIAAAAmMtkJAAAACXBIWXMAAAsTAAALEwEAmpwYAAACBklEQVQoz23O7W6bMBQGYO5iSoEY7GBjY2MwH/6AJk3SrStVlQbabJq23f9lTCRR1x+VHllH57zHtie76VOZmbidhDuf9vOMl7vxgyl3k7Bj2b/uH093D6dm89rfv3X7N2Gny/Rj3hP2+J+Zcf2iuvHv7x/jdHo5vv359fM4nrL2Ov2Y94R5eSfdUXZj4UbpRqaP3BxzN3Izk+4qn9+45j2uD1wfhDlwc5BuLLqp6Maz6XLLpX4vcnvk5zA3B4+3z0I/0XpgzROrh7Sa0Xq4dLL2Oa0er+qBzc2B1XOeNoPH6iHhOiblTSQT0SNuAFE+Uj4sfVjG1CTCkWIdEwNQuYjLm7j0oQqQiqjziHpIWJPr9ZI6IDa0vaftGkoXi36ZuiXRMe9w+ZVXD7zdFlUPM+OjClJDilsvVd8xazBvF7EE1LF6l5s9re6R3GK5BakNsUGpw/ldVN5JZRKpfVQBXENmPVJ+A6hEpFlEwk8aLG+pcii3ATbBqvGhilKbFDuidqxaA96F2IH5RyYkxlvJPYhFKjdLogOssVpz2ydNH3MN0yZMKjAvb0W9E/WGlBvIbudNrENqvVW+A7Egol/AMsQaFWskWsRNIjrITLCqQGri1BLek9zBrLmBlT9Ty6T1VmIbRDxaqS9hFiRNgFsf1T6q3oHUQNbHqQXMwsxA2kbUAKLDpP0H4Daf056mKVMAAAAASUVORK5CYII="},"images":{"fallback":{"src":"/static/3b4d6e8f44baf7e6d7a0ed4b3e4d8d39/d2194/halcyon.png","srcSet":"/static/3b4d6e8f44baf7e6d7a0ed4b3e4d8d39/cebcc/halcyon.png 175w,\n/static/3b4d6e8f44baf7e6d7a0ed4b3e4d8d39/272cf/halcyon.png 350w,\n/static/3b4d6e8f44baf7e6d7a0ed4b3e4d8d39/d2194/halcyon.png 700w","sizes":"(min-width: 700px) 700px, 100vw"},"sources":[{"srcSet":"/static/3b4d6e8f44baf7e6d7a0ed4b3e4d8d39/9aa63/halcyon.avif 175w,\n/static/3b4d6e8f44baf7e6d7a0ed4b3e4d8d39/e6db6/halcyon.avif 350w,\n/static/3b4d6e8f44baf7e6d7a0ed4b3e4d8d39/f47db/halcyon.avif 700w","type":"image/avif","sizes":"(min-width: 700px) 700px, 100vw"},{"srcSet":"/static/3b4d6e8f44baf7e6d7a0ed4b3e4d8d39/240e7/halcyon.webp 175w,\n/static/3b4d6e8f44baf7e6d7a0ed4b3e4d8d39/faefe/halcyon.webp 350w,\n/static/3b4d6e8f44baf7e6d7a0ed4b3e4d8d39/d5dc4/halcyon.webp 700w","type":"image/webp","sizes":"(min-width: 700px) 700px, 100vw"}]},"width":700,"height":438}}},"tech":["VS Code","Sublime Text","Atom","iTerm2","Hyper"],"github":"https://github.com/bchiang7/halcyon-site","external":"https://halcyon-theme.netlify.com/","cta":null},"html":"<p>A minimal, dark blue theme for VS Code, Sublime Text, Atom, iTerm, and more. Available on <a href=\"https://marketplace.visualstudio.com/items?itemName=brittanychiang.halcyon-vscode\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">Visual Studio Marketplace</a>, <a href=\"https://packagecontrol.io/packages/Halcyon%20Theme\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">Package Control</a>, <a href=\"https://atom.io/themes/halcyon-syntax\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">Atom Package Manager</a>, and <a href=\"https://www.npmjs.com/package/hyper-halcyon-theme\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">npm</a>.</p>"}},{"node":{"frontmatter":{"title":"Spotify Profile","cover":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAKCAYAAAC0VX7mAAAACXBIWXMAABJ0AAASdAHeZh94AAABTUlEQVQoz31SXU/CMBSdCOFLxgZjXbtutK7MsYxnHkwwAV4wJvof9EETX4z+/2NWGKkMfDi5t7kn7Tn31OoWBG44AfUDBMF5EOLj1ueICAMh5CKvhHXVaMIeDkEp1WQTJcGfeAhlip+Pb7y9vmPkjY2HSA1W72aAkTs6Ekyy7gkBFxIvn1+4f3rGZDz+XyG/E2ABrVmpzsvlEpv1GtvtBg+rFXaPO+R5Ds/zzl/YbnXhOn8VmpUyCh5H4NMIPOYIY65Vk1Mnh97qtHtwDcunO6z6JEkQRRGI79dcmHyr2+kfd1hPd08qAytxOqtQzbXCVrMN2x5CCIGiKJDP52BG4owxpGmqq1IKi8VCV1PdVAgkKtlfeN1owR7YiGIJIRNIKc8GRA57y7IMUghwzjWOuz44sPq9ARzHxTSOoRJ18X9pJbMMajZDGIa1WWX5F5hFBe5KoF3iAAAAAElFTkSuQmCC"},"images":{"fallback":{"src":"/static/185e1198346bba3fa28e368cb5c51507/fb32f/demo.png","srcSet":"/static/185e1198346bba3fa28e368cb5c51507/1f575/demo.png 175w,\n/static/185e1198346bba3fa28e368cb5c51507/94e3d/demo.png 350w,\n/static/185e1198346bba3fa28e368cb5c51507/fb32f/demo.png 700w,\n/static/185e1198346bba3fa28e368cb5c51507/8ea7d/demo.png 1400w","sizes":"(min-width: 700px) 700px, 100vw"},"sources":[{"srcSet":"/static/185e1198346bba3fa28e368cb5c51507/53ff3/demo.avif 175w,\n/static/185e1198346bba3fa28e368cb5c51507/3ba2a/demo.avif 350w,\n/static/185e1198346bba3fa28e368cb5c51507/6532e/demo.avif 700w,\n/static/185e1198346bba3fa28e368cb5c51507/13274/demo.avif 1400w","type":"image/avif","sizes":"(min-width: 700px) 700px, 100vw"},{"srcSet":"/static/185e1198346bba3fa28e368cb5c51507/c654f/demo.webp 175w,\n/static/185e1198346bba3fa28e368cb5c51507/3668f/demo.webp 350w,\n/static/185e1198346bba3fa28e368cb5c51507/eeb7c/demo.webp 700w,\n/static/185e1198346bba3fa28e368cb5c51507/d2529/demo.webp 1400w","type":"image/webp","sizes":"(min-width: 700px) 700px, 100vw"}]},"width":700,"height":363}}},"tech":["React","Styled Components","Express","Spotify API","Heroku"],"github":"https://github.com/bchiang7/spotify-profile","external":"https://spotify-profile.herokuapp.com/","cta":null},"html":"<p>A web app for visualizing personalized Spotify data. View your top artists, top tracks, recently played tracks, and detailed audio information about each track. Create and save new playlists of recommended tracks based on your existing playlists and more.</p>"}},{"node":{"frontmatter":{"title":"Build a Spotify Connected App","cover":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAALCAIAAADwazoUAAAACXBIWXMAAAsTAAALEwEAmpwYAAACqklEQVQozwGfAmD9AKa44Jeq3Iqd1H+SznaIynKDx2+Ax2x9xWt8xWt8xmx+x2+ByXKDzXmK0HyO04WX142f2pKn3J2x3qW64QCgtdyps82VptSQotSImtB4jMlpfsJofcJle8FrgMRvhMZ1i8mBlc96ks2quuCQp9ePqdajut2Vs9ebu9cAmrHal6XDj6XSiqHTg5rOc4zHZH/AZX/AX3u9fZXJrLzcsMDfrsDelq/U5uz1r8bfmLjVvtXkjrnOjrzNAJWz3IGj1XaWy2yMxWSEwGGCvl5/u1l8ulp/ull/uV+Gu2ONvGGOumeWvY20zHSnwHSrv4S4xXy3wIPAwQCJq9FsX2JiXGFYYGtYXmhQV2FUW2dqi7hmkMJulsFnlb1ilblvob5pobpqpbh7tL9ztLpos7FvvLJ1w7MAg6jLQzk3Pzk3RURCRkRDNjUzQD8/nLfPlbnXlrrSjLfNea7ClMLMnMnOl8rJn9LNk87FYLymX8CkZ8emAHypzC0vMygsMyYrMCUnKC8vLFBQS2SRsWumyWmkwGanvGSqt2yyt3K7t2u7sGvArXHGrWjHplbFmFrKmQB4rM0pJSMzKygwKignIyAgGBI9ODN7qsGOw9iLws+Iw8uFxcaEycGW08d8zLaJ1LuZ3cKQ27tPypBQzo8AebrdWX2NX36PU3eNQm6FLlpuJ1RnO5KxPaK9O6KxOqaqOquiObCaNLORMrmKNr+GPMWGOseBP8yCStKIAH3J7G/F72C97FS35kuy4Eax20Kx1j2rxzqrvTqvtTmyqzi2ojm6mlHGn1nMnlDOlFHQkVnVk0/Ui0TUggB3zO9mw+pYveZNuOFCs9s6sNQ2r80zscgys78xtbUxuaoxvJ8ywJZJy5pS0ZlQ05JO1YxY2ZBU2otE138AtHoe7OPKgAAAAABJRU5ErkJggg=="},"images":{"fallback":{"src":"/static/4e06bd39766c182ea26b255309b1dee1/bc3b9/course-card.png","srcSet":"/static/4e06bd39766c182ea26b255309b1dee1/9a130/course-card.png 175w,\n/static/4e06bd39766c182ea26b255309b1dee1/a3fa1/course-card.png 350w,\n/static/4e06bd39766c182ea26b255309b1dee1/bc3b9/course-card.png 700w,\n/static/4e06bd39766c182ea26b255309b1dee1/87926/course-card.png 1400w","sizes":"(min-width: 700px) 700px, 100vw"},"sources":[{"srcSet":"/static/4e06bd39766c182ea26b255309b1dee1/dae43/course-card.avif 175w,\n/static/4e06bd39766c182ea26b255309b1dee1/d7667/course-card.avif 350w,\n/static/4e06bd39766c182ea26b255309b1dee1/7ec1a/course-card.avif 700w,\n/static/4e06bd39766c182ea26b255309b1dee1/71a30/course-card.avif 1400w","type":"image/avif","sizes":"(min-width: 700px) 700px, 100vw"},{"srcSet":"/static/4e06bd39766c182ea26b255309b1dee1/5d873/course-card.webp 175w,\n/static/4e06bd39766c182ea26b255309b1dee1/26a00/course-card.webp 350w,\n/static/4e06bd39766c182ea26b255309b1dee1/f23f0/course-card.webp 700w,\n/static/4e06bd39766c182ea26b255309b1dee1/2c2d0/course-card.webp 1400w","type":"image/webp","sizes":"(min-width: 700px) 700px, 100vw"}]},"width":700,"height":394}}},"tech":["React","Express","Spotify API","Styled Components"],"github":null,"external":"https://www.newline.co/courses/build-a-spotify-connected-app","cta":"https://www.newline.co/courses/build-a-spotify-connected-app"},"html":"<p>Having struggled with understanding how the Spotify OAuth flow works, I made the course I wish I could have had.</p>\n<p>Unlike tutorials that only cover a few concepts and leave you with half-baked GitHub repositories, this course covers everything from explaining the principles of REST APIs to implementing Spotify's OAuth flow and fetching API data in a React app. By the end of the course, you’ll have an app deployed to the internet you can add to your portfolio.</p>"}}]}}}