{"componentChunkName":"component---src-templates-project-page-index-tsx","path":"/portfolio/dev-communities-social-app","result":{"data":{"mdx":{"frontmatter":{"title":"Dev Communities Social App","githubUrl":"https://github.com/learnsometing/dev-communities","websiteUrl":"https://dev-communities.herokuapp.com/","mobileCarouselPhotos":null,"tabletCarouselPhotos":null,"carouselPhotos":[{"altText":"A photo of the Dev Communities home page.","src":{"childImageSharp":{"fluid":{"base64":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAALCAYAAAB/Ca1DAAAACXBIWXMAAAsTAAALEwEAmpwYAAABgElEQVQoz42Q2U7CQBSGeX6NMVHB7dLERG+MMV644QMYwhJBBG1pSwcqgZZZWii0vzPFCkIgnuRLJ6cz31ky5kkWCus0C+1wH2+5A9SPc6jubqMmaT/n4RQKMG9vYD4+gLy8QLu+Qm1nC43LC+jnZ7CO9mYOSQYLEUiGYZR8FTwC2k4PdvcLpDdAu9uDSzn8aZz8p6MQfBItKpCJp1NEEsQROONgkvE4BKMudP0DldcKypUySqUiSpUimp9NeEMXYTgB5z4oZclb5VCuTBzHUKjgQl7gAiMp9AMB5hLQbh1iaMuzBebU4dpVeI6GQKjiAlSiIvWsCBWq+jicIuAcYtAHyd+DPN1JYQc+9eDLDke++G0gFc5GXhIOPAqmRpGVmQjkgwDOeyOByv0xf5TkFa7H5D2+WaibBIbVSWj9nC2nn5Dm0rzWsuU+2WZhy+zAbHf/YFgkYTmvGwRDyjbvUFWfizprmQnt/whXO1zHcodrRiYbO1vsUDPmO1TRt/r4BtvaOVO+lCl0AAAAAElFTkSuQmCC","aspectRatio":1.7455621301775148,"src":"/static/78d457b4819119d1a450f098680d2712/7a32a/home.png","srcSet":"/static/78d457b4819119d1a450f098680d2712/c100b/home.png 295w,\n/static/78d457b4819119d1a450f098680d2712/6ee37/home.png 590w,\n/static/78d457b4819119d1a450f098680d2712/7a32a/home.png 1179w,\n/static/78d457b4819119d1a450f098680d2712/96b65/home.png 1769w,\n/static/78d457b4819119d1a450f098680d2712/d5aa8/home.png 2358w,\n/static/78d457b4819119d1a450f098680d2712/c4676/home.png 3584w","srcWebp":"/static/78d457b4819119d1a450f098680d2712/a40b9/home.webp","srcSetWebp":"/static/78d457b4819119d1a450f098680d2712/25ff1/home.webp 295w,\n/static/78d457b4819119d1a450f098680d2712/d5fa0/home.webp 590w,\n/static/78d457b4819119d1a450f098680d2712/a40b9/home.webp 1179w,\n/static/78d457b4819119d1a450f098680d2712/3fb9c/home.webp 1769w,\n/static/78d457b4819119d1a450f098680d2712/33164/home.webp 2358w,\n/static/78d457b4819119d1a450f098680d2712/71fec/home.webp 3584w","sizes":"(max-width: 1179px) 100vw, 1179px"}}},"caption":"Landing page"},{"altText":"Create account form with full name, email, password, and password confirmation fields.","src":{"childImageSharp":{"fluid":{"base64":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAALCAYAAAB/Ca1DAAAACXBIWXMAAAsTAAALEwEAmpwYAAABPUlEQVQoz6WP207CQBCG+/hG4w1KMHppol55uNLoG3Bngocobbfdnra0sNCKUMr+ThcxNUGUuMmXnc78+2VquIdNVPCjJqzWHh6aDTy19tHZ3dawu1v47Tasq0tYN9fwqDYvztHZ2cLz2Snsk2Pwg8bCQRionXfCiQfgiYSbDBHnE4S9FIz7cKMYUdKHSCVY0IPXz2DTPZqWdQUMVZaYE1Bz5FkO5tBjNwBjHoRIkFGvKGZQSqGclUj68itjU0bKEb1V5KAMeYwqWFGd/G0MRkHXi/Qt4hSTaYGX1y5M09KZXjrQM04Zm8TDUab7S8+vwnGhcN+N0H7kul4nXPzyD0KHh+C+gB/G8MWAkLr2AqFn7qbCpVRDPc3n93K+sbCOU6//veEKNhCGKzdche0Ef9tw3Wb1DS3aUA6/Cz8ALKc1YuOCoO4AAAAASUVORK5CYII=","aspectRatio":1.7455621301775148,"src":"/static/f9fb4ca18f357dacc3dfbbf5fb77cbe7/7a32a/sign-up.png","srcSet":"/static/f9fb4ca18f357dacc3dfbbf5fb77cbe7/c100b/sign-up.png 295w,\n/static/f9fb4ca18f357dacc3dfbbf5fb77cbe7/6ee37/sign-up.png 590w,\n/static/f9fb4ca18f357dacc3dfbbf5fb77cbe7/7a32a/sign-up.png 1179w,\n/static/f9fb4ca18f357dacc3dfbbf5fb77cbe7/96b65/sign-up.png 1769w,\n/static/f9fb4ca18f357dacc3dfbbf5fb77cbe7/d5aa8/sign-up.png 2358w,\n/static/f9fb4ca18f357dacc3dfbbf5fb77cbe7/c4676/sign-up.png 3584w","srcWebp":"/static/f9fb4ca18f357dacc3dfbbf5fb77cbe7/a40b9/sign-up.webp","srcSetWebp":"/static/f9fb4ca18f357dacc3dfbbf5fb77cbe7/25ff1/sign-up.webp 295w,\n/static/f9fb4ca18f357dacc3dfbbf5fb77cbe7/d5fa0/sign-up.webp 590w,\n/static/f9fb4ca18f357dacc3dfbbf5fb77cbe7/a40b9/sign-up.webp 1179w,\n/static/f9fb4ca18f357dacc3dfbbf5fb77cbe7/3fb9c/sign-up.webp 1769w,\n/static/f9fb4ca18f357dacc3dfbbf5fb77cbe7/33164/sign-up.webp 2358w,\n/static/f9fb4ca18f357dacc3dfbbf5fb77cbe7/71fec/sign-up.webp 3584w","sizes":"(max-width: 1179px) 100vw, 1179px"}}},"caption":"Sign up"},{"altText":"The landing page with a notification telling the user to check their email for a confirmation link.","src":{"childImageSharp":{"fluid":{"base64":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAALCAYAAAB/Ca1DAAAACXBIWXMAAAsTAAALEwEAmpwYAAABfklEQVQoz42QTU/CQBCG+fsmnoxGxbOJF030hkGvRjRaaUhUvrtQqLHQ7lehQl9nFxGEQNzkyW5mZ5+ZnZyXP4ChQ9SO9+Hkj1A63Mfd7o6lUiyi+vAI9+oSbqGA1/sSni/OcU93Lu31s1Owwz14Jwdg5MhhaWkimmRQtBs4wT5CsOATnTCC9/GJUGjI6ew+SicQlL+8ctlkgimBbAopJASXSMdjiHiIZrMG1y2jXHbgOE9wXp5Rq1cRxwPKSSGlAo+FfWscxpXLsgwGs6TS4JQ0omSdKIihD95/hYq7dGYQwRuG3QqioIFEUXEjFMq+nXvWhIY0/cKYvpNICTUI4d9ew78pkLAHzSNo6n6k1W8Dc+HsyyvCQcSpsraVhUroQYLg7d3CaRxCj2zcMIwE5cntwqbno816ltbPmQWhZR6bxxutLiIzw23ClteD1+n/oc18y2q82fYRc7F9hqb6QtTbyEzY/Y9wvcNNrHa44cv+1s6WO2y0FzM0K2QhvgGBpzieyI7eFgAAAABJRU5ErkJggg==","aspectRatio":1.7455621301775148,"src":"/static/a87e0b94ef2cffb9ae21ba088248a3ed/7a32a/post-sign-up.png","srcSet":"/static/a87e0b94ef2cffb9ae21ba088248a3ed/c100b/post-sign-up.png 295w,\n/static/a87e0b94ef2cffb9ae21ba088248a3ed/6ee37/post-sign-up.png 590w,\n/static/a87e0b94ef2cffb9ae21ba088248a3ed/7a32a/post-sign-up.png 1179w,\n/static/a87e0b94ef2cffb9ae21ba088248a3ed/96b65/post-sign-up.png 1769w,\n/static/a87e0b94ef2cffb9ae21ba088248a3ed/d5aa8/post-sign-up.png 2358w,\n/static/a87e0b94ef2cffb9ae21ba088248a3ed/c4676/post-sign-up.png 3584w","srcWebp":"/static/a87e0b94ef2cffb9ae21ba088248a3ed/a40b9/post-sign-up.webp","srcSetWebp":"/static/a87e0b94ef2cffb9ae21ba088248a3ed/25ff1/post-sign-up.webp 295w,\n/static/a87e0b94ef2cffb9ae21ba088248a3ed/d5fa0/post-sign-up.webp 590w,\n/static/a87e0b94ef2cffb9ae21ba088248a3ed/a40b9/post-sign-up.webp 1179w,\n/static/a87e0b94ef2cffb9ae21ba088248a3ed/3fb9c/post-sign-up.webp 1769w,\n/static/a87e0b94ef2cffb9ae21ba088248a3ed/33164/post-sign-up.webp 2358w,\n/static/a87e0b94ef2cffb9ae21ba088248a3ed/71fec/post-sign-up.webp 3584w","sizes":"(max-width: 1179px) 100vw, 1179px"}}},"caption":"Email confirmation sent"},{"altText":"An email with a link to confirm the user's account.","src":{"childImageSharp":{"fluid":{"base64":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAALCAYAAAB/Ca1DAAAACXBIWXMAAAsTAAALEwEAmpwYAAAA+UlEQVQoz6VSi47DIAzr///p1FJogfAK+IDeJjp1p1VnyUKtiO2QTM4YeCKUUmDraawFOQ/nGwNiYoQYO9udK+ackTnhsRMmEgvCtgExwFUhIQTkukKpFcZoMHMvOlA6n0L9Tz1TSgeDx6T3Hb6madBaY54XPJYNQhHkVrk7GEqwnmEcQxMjcn4J53wINmOuSScpJWxtsyHGhFmaLkLk+qVnik8c0b67oFLq16GAfHNLb0XnwneRkZO2VCPH/rClPW7m3sL4Rt/wlXB0unL/BifBUo5khxMuXW8J+hDr7vk+rbHFOzgJproCIfKtRH8K9unWqY4L+5+EP5BcZaiQMlVnAAAAAElFTkSuQmCC","aspectRatio":1.7455621301775148,"src":"/static/d8f0f5adfdf6105ea7dc23764584a3bd/7a32a/confirmation-email.png","srcSet":"/static/d8f0f5adfdf6105ea7dc23764584a3bd/c100b/confirmation-email.png 295w,\n/static/d8f0f5adfdf6105ea7dc23764584a3bd/6ee37/confirmation-email.png 590w,\n/static/d8f0f5adfdf6105ea7dc23764584a3bd/7a32a/confirmation-email.png 1179w,\n/static/d8f0f5adfdf6105ea7dc23764584a3bd/96b65/confirmation-email.png 1769w,\n/static/d8f0f5adfdf6105ea7dc23764584a3bd/d5aa8/confirmation-email.png 2358w,\n/static/d8f0f5adfdf6105ea7dc23764584a3bd/c4676/confirmation-email.png 3584w","srcWebp":"/static/d8f0f5adfdf6105ea7dc23764584a3bd/a40b9/confirmation-email.webp","srcSetWebp":"/static/d8f0f5adfdf6105ea7dc23764584a3bd/25ff1/confirmation-email.webp 295w,\n/static/d8f0f5adfdf6105ea7dc23764584a3bd/d5fa0/confirmation-email.webp 590w,\n/static/d8f0f5adfdf6105ea7dc23764584a3bd/a40b9/confirmation-email.webp 1179w,\n/static/d8f0f5adfdf6105ea7dc23764584a3bd/3fb9c/confirmation-email.webp 1769w,\n/static/d8f0f5adfdf6105ea7dc23764584a3bd/33164/confirmation-email.webp 2358w,\n/static/d8f0f5adfdf6105ea7dc23764584a3bd/71fec/confirmation-email.webp 3584w","sizes":"(max-width: 1179px) 100vw, 1179px"}}},"caption":"Confirmation email"},{"altText":"A log in page with an account confirmation notification and a form with email and password fields.","src":{"childImageSharp":{"fluid":{"base64":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAALCAYAAAB/Ca1DAAAACXBIWXMAAAsTAAALEwEAmpwYAAABcElEQVQoz6WSa0vcUBBA9/+jrba1RduvUkFpv1j8CdtScRXEB6g3m7vexM1u3qYm2c1x7i6ViI8qHTjMnSRzMhPScddWsAyEs9UP7K1+5ODLGr33S/x+u8D+zg5H3Z/sf/9G78c2Z7u7nEjuLb/hYGuT84119Kd3uJ9X0OLo0IpCUEFMVDdUcp4KpZBXNUFe4PhDvHHEZRgT1lMurkKSatJW0GkmE6YCzZQ8zVFKU4ug2/3FwuISXzc2ub4uKG9K8izDNwZHKSqplTMgjhPpbcRRY12dRgqLjVwalWso/pQMgxGHR8ecK4ebsqKUl3hxSfc04MTxqOoJqn9JnGSz3r+eB0LH9fCHY8I4Jc0KYpl6OIq4CiL6XoTyU8wokzoUoSFpCecrPxAa+tqbZTuBZXZNcLVB6/nZPmPvJekLhO7Af5S+Rc+zrf9beCeW6R4TPvENzb3Gp3iF0PvnhO7dyuZlKz83WXvCi9ZvY2Osx9wCwSs0l6oMVCIAAAAASUVORK5CYII=","aspectRatio":1.7455621301775148,"src":"/static/0271f0a4bf95f305198f12018ea0e7ca/7a32a/account-confirmation.png","srcSet":"/static/0271f0a4bf95f305198f12018ea0e7ca/c100b/account-confirmation.png 295w,\n/static/0271f0a4bf95f305198f12018ea0e7ca/6ee37/account-confirmation.png 590w,\n/static/0271f0a4bf95f305198f12018ea0e7ca/7a32a/account-confirmation.png 1179w,\n/static/0271f0a4bf95f305198f12018ea0e7ca/96b65/account-confirmation.png 1769w,\n/static/0271f0a4bf95f305198f12018ea0e7ca/d5aa8/account-confirmation.png 2358w,\n/static/0271f0a4bf95f305198f12018ea0e7ca/c4676/account-confirmation.png 3584w","srcWebp":"/static/0271f0a4bf95f305198f12018ea0e7ca/a40b9/account-confirmation.webp","srcSetWebp":"/static/0271f0a4bf95f305198f12018ea0e7ca/25ff1/account-confirmation.webp 295w,\n/static/0271f0a4bf95f305198f12018ea0e7ca/d5fa0/account-confirmation.webp 590w,\n/static/0271f0a4bf95f305198f12018ea0e7ca/a40b9/account-confirmation.webp 1179w,\n/static/0271f0a4bf95f305198f12018ea0e7ca/3fb9c/account-confirmation.webp 1769w,\n/static/0271f0a4bf95f305198f12018ea0e7ca/33164/account-confirmation.webp 2358w,\n/static/0271f0a4bf95f305198f12018ea0e7ca/71fec/account-confirmation.webp 3584w","sizes":"(max-width: 1179px) 100vw, 1179px"}}},"caption":"Login page"},{"altText":"The user is selecting a location on the google map, and a pop up is asking the user to confirm their location.","src":{"childImageSharp":{"fluid":{"base64":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAALCAYAAAB/Ca1DAAAACXBIWXMAAAsTAAALEwEAmpwYAAAB6ElEQVQoz4WSa28SQRSG+f//QVCCliLYNvrZGK2GkvRiE+UmUi67c9ldbruwILCPZyFV+kGc5M2ZmWSeed85k9GVIqpyiikXeTgrU7+q0by+5a78mpvcM27yL/iSy1LNZrkt5Lkr5KQ+3+la1j9OCtg3pyg5n7IyHIylqKEmVJ0VNR8GshEmCdMtBPEMNTF4UYAJA6kjqR5zkkMEmWSzYbtZwzZhGc247AQU6yvK9TmdoWFmXUa6i6+6eFoRWL2ryhli3QHhdAJy6Xa9JmVlElmkSke8mPOhM6bUWPKuFVHvfeNBfcUaB6U1WhuMNbgyH7ournIJo2h39pHzBLiMF3zsxhSaUGknAlNoT1wFY6znoYzFNQrfk+i+h9UuURT+Ae4jHwB/xXOqvSn573DRDukrRyJaAgEYPxCYAHUK1LKnBegcB64WEZ+6U1424Ly1pONojNE7Z0bAaWRrUtge+l+H8WLB+86CVxK51NrQcPaAoZZ49hH2V0aAYRj9Gzifx7xtrzgR4MVPn899V2Jb6qpNz3SZSPS+wI0xjMWllic5ChxFK0rNLcUWFKVe9nxpxoB7cy+RHUapq9SpSEuTfN0XE0eAfrjiXL7MmcRNVXMaGAEOTF9cqV1kX/5l39V0HXlXlTblKfA3drQzuvLSYIEAAAAASUVORK5CYII=","aspectRatio":1.7455621301775148,"src":"/static/dd643af0076e6dc9a416c2331cc818f5/7a32a/choose-location.png","srcSet":"/static/dd643af0076e6dc9a416c2331cc818f5/c100b/choose-location.png 295w,\n/static/dd643af0076e6dc9a416c2331cc818f5/6ee37/choose-location.png 590w,\n/static/dd643af0076e6dc9a416c2331cc818f5/7a32a/choose-location.png 1179w,\n/static/dd643af0076e6dc9a416c2331cc818f5/96b65/choose-location.png 1769w,\n/static/dd643af0076e6dc9a416c2331cc818f5/d5aa8/choose-location.png 2358w,\n/static/dd643af0076e6dc9a416c2331cc818f5/c4676/choose-location.png 3584w","srcWebp":"/static/dd643af0076e6dc9a416c2331cc818f5/a40b9/choose-location.webp","srcSetWebp":"/static/dd643af0076e6dc9a416c2331cc818f5/25ff1/choose-location.webp 295w,\n/static/dd643af0076e6dc9a416c2331cc818f5/d5fa0/choose-location.webp 590w,\n/static/dd643af0076e6dc9a416c2331cc818f5/a40b9/choose-location.webp 1179w,\n/static/dd643af0076e6dc9a416c2331cc818f5/3fb9c/choose-location.webp 1769w,\n/static/dd643af0076e6dc9a416c2331cc818f5/33164/choose-location.webp 2358w,\n/static/dd643af0076e6dc9a416c2331cc818f5/71fec/choose-location.webp 3584w","sizes":"(max-width: 1179px) 100vw, 1179px"}}},"caption":"Location selection"},{"altText":"A form asking the user which programming languages they use, which can be chosen via a multi select search.","src":{"childImageSharp":{"fluid":{"base64":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAMCAYAAABiDJ37AAAACXBIWXMAAAsTAAALEwEAmpwYAAABVklEQVQoz6WSC0/CMBSF+f+/RowPJL6IKINEINl4xm5rO7Y5mCQCYxrY8XZMMhLUIE1OTrve+93bdoVZr4NFv4uxocNo6+gaPTSfNFQvSrg7O8fVySnKmR5KZWjXN2hVH2FoDei1OkLKU/mKMycvIBtL0kB4GAoXBndRG5i4bRko1Zu4VNKecd/uoDG00PdDsPA91Sd2RyFZrYAkQbSIIKQHOfIhpQvbkrAsQS5gmhyM2bBtme5JKioyxdEyzVecZL0mIC3UiGiDE1BJEPSFMTjOCK7/CkEevk2xoJjZnAo7/iaOPI4/0nzFUcoB422QctMNYJMsTp1yh76rYm4mby9wc+Q9QKVBsQhWqSCYzjCeTBGQlPtB+GOHvwKZ3oHZG4LT3Ka72ip3igOA9Dj+BMIbpw/1XSSvgztM59ldMYvv3O//gZmrox4NzCftWx/VYf43+avDL0xlfutE0YA5AAAAAElFTkSuQmCC","aspectRatio":1.7352941176470589,"src":"/static/3bf4e24a2c8dd1351b3aeb3a37e88c38/7a32a/skill-tags.png","srcSet":"/static/3bf4e24a2c8dd1351b3aeb3a37e88c38/c100b/skill-tags.png 295w,\n/static/3bf4e24a2c8dd1351b3aeb3a37e88c38/6ee37/skill-tags.png 590w,\n/static/3bf4e24a2c8dd1351b3aeb3a37e88c38/7a32a/skill-tags.png 1179w,\n/static/3bf4e24a2c8dd1351b3aeb3a37e88c38/96b65/skill-tags.png 1769w,\n/static/3bf4e24a2c8dd1351b3aeb3a37e88c38/d5aa8/skill-tags.png 2358w,\n/static/3bf4e24a2c8dd1351b3aeb3a37e88c38/dc856/skill-tags.png 3554w","srcWebp":"/static/3bf4e24a2c8dd1351b3aeb3a37e88c38/a40b9/skill-tags.webp","srcSetWebp":"/static/3bf4e24a2c8dd1351b3aeb3a37e88c38/25ff1/skill-tags.webp 295w,\n/static/3bf4e24a2c8dd1351b3aeb3a37e88c38/d5fa0/skill-tags.webp 590w,\n/static/3bf4e24a2c8dd1351b3aeb3a37e88c38/a40b9/skill-tags.webp 1179w,\n/static/3bf4e24a2c8dd1351b3aeb3a37e88c38/3fb9c/skill-tags.webp 1769w,\n/static/3bf4e24a2c8dd1351b3aeb3a37e88c38/33164/skill-tags.webp 2358w,\n/static/3bf4e24a2c8dd1351b3aeb3a37e88c38/86c98/skill-tags.webp 3554w","sizes":"(max-width: 1179px) 100vw, 1179px"}}},"caption":"Skills selection"},{"altText":"The user's profile, with a default photo, the user's name, a tag cloud of the user's skills, the user's location, a link to the user's friends list, and a form for making posts.","src":{"childImageSharp":{"fluid":{"base64":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAALCAYAAAB/Ca1DAAAACXBIWXMAAAsTAAALEwEAmpwYAAABXElEQVQoz42R2U/CQBCH+/8/GI0m+qJI4kEMamLiqz6QeAQhRZFD6Q2Ua+lBCw/Q/pwtJaEGi5N82Sv77cyO0LvOwST6+RzU2xzqrw/4KhdQyWcgZg/wlt3Hy+keno93UKR55fwI4gVxdojSyS6kywwGN1cw6T53CViLGVFXFNRkCa1eH8VaA6V6E/KIoTUYQh4yaGMLujOBquuo3d/BXQTrCgjhYoFgPgeCAFN/imK5gsfCE2TZQOOjiUa1CVXtQFXaSWhPknTYlgOEYeTgLiGkBYeH78/QUnR8yyp6gxGY7YJZLobMIuwYK2I0Xq4d14vurjwJoUcZMnrRI7E78aKRP+JPNyO+f4KReCVclvxLqOpdaO3eEsNMpSRWMeYlbxPqsYyPG4nPjE4/UXKq8D/I1BiHOp76h+vCtHL5uaKR0N0qNP+doaJ1E8K/m7KlGasMZcrQjkvmwQyGH6sZMxfTjzK0AAAAAElFTkSuQmCC","aspectRatio":1.7455621301775148,"src":"/static/dcfb38615386bebe22e73f0bae68b472/7a32a/new-profile.png","srcSet":"/static/dcfb38615386bebe22e73f0bae68b472/c100b/new-profile.png 295w,\n/static/dcfb38615386bebe22e73f0bae68b472/6ee37/new-profile.png 590w,\n/static/dcfb38615386bebe22e73f0bae68b472/7a32a/new-profile.png 1179w,\n/static/dcfb38615386bebe22e73f0bae68b472/96b65/new-profile.png 1769w,\n/static/dcfb38615386bebe22e73f0bae68b472/d5aa8/new-profile.png 2358w,\n/static/dcfb38615386bebe22e73f0bae68b472/c4676/new-profile.png 3584w","srcWebp":"/static/dcfb38615386bebe22e73f0bae68b472/a40b9/new-profile.webp","srcSetWebp":"/static/dcfb38615386bebe22e73f0bae68b472/25ff1/new-profile.webp 295w,\n/static/dcfb38615386bebe22e73f0bae68b472/d5fa0/new-profile.webp 590w,\n/static/dcfb38615386bebe22e73f0bae68b472/a40b9/new-profile.webp 1179w,\n/static/dcfb38615386bebe22e73f0bae68b472/3fb9c/new-profile.webp 1769w,\n/static/dcfb38615386bebe22e73f0bae68b472/33164/new-profile.webp 2358w,\n/static/dcfb38615386bebe22e73f0bae68b472/71fec/new-profile.webp 3584w","sizes":"(max-width: 1179px) 100vw, 1179px"}}},"caption":"A new user profile"},{"altText":"A form for uploading profile pictures to s3, with browse, upload, and cancel buttons.","src":{"childImageSharp":{"fluid":{"base64":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAALCAYAAAB/Ca1DAAAACXBIWXMAAAsTAAALEwEAmpwYAAABI0lEQVQoz82RS0vDQBSF8//3KkXsC9RSrD/AheKjgl34AE2bgp1MJskkVGnSRF3kcbyjBtOIrd154TD3znA+zsxoXq8DSfIPOrB6XUwu+uBXA4z296Bv13BX28IN6XpzAw/1HRjtJoatBkatJvRGHWy3Df+wC0l+xdJQqjeSaXvgjg/xFMCexTBovh0z3DMbR/0BhtyFQ/vieQ5zGiDKsFBanqbI0gTIM8RRDNNyYdkSnFbTtOG6Pk7PLnF8cg5dH8MwHiGEhGU5YEwgmIXkzZElCRRLy2lQUhW/vH4BvR/iBHHkFILSq17tMe4gnEcf3oKzFKiMhcpzcV4Ffl55BbAKKvdrA3/T/wGW37CqNYByZcLvT3H/lnBZsnLCCSUMwkXgO3xyMdrUhc97AAAAAElFTkSuQmCC","aspectRatio":1.7455621301775148,"src":"/static/2000baaae1f56a9204160c436d6cb26e/7a32a/picture-upload.png","srcSet":"/static/2000baaae1f56a9204160c436d6cb26e/c100b/picture-upload.png 295w,\n/static/2000baaae1f56a9204160c436d6cb26e/6ee37/picture-upload.png 590w,\n/static/2000baaae1f56a9204160c436d6cb26e/7a32a/picture-upload.png 1179w,\n/static/2000baaae1f56a9204160c436d6cb26e/96b65/picture-upload.png 1769w,\n/static/2000baaae1f56a9204160c436d6cb26e/d5aa8/picture-upload.png 2358w,\n/static/2000baaae1f56a9204160c436d6cb26e/c4676/picture-upload.png 3584w","srcWebp":"/static/2000baaae1f56a9204160c436d6cb26e/a40b9/picture-upload.webp","srcSetWebp":"/static/2000baaae1f56a9204160c436d6cb26e/25ff1/picture-upload.webp 295w,\n/static/2000baaae1f56a9204160c436d6cb26e/d5fa0/picture-upload.webp 590w,\n/static/2000baaae1f56a9204160c436d6cb26e/a40b9/picture-upload.webp 1179w,\n/static/2000baaae1f56a9204160c436d6cb26e/3fb9c/picture-upload.webp 1769w,\n/static/2000baaae1f56a9204160c436d6cb26e/33164/picture-upload.webp 2358w,\n/static/2000baaae1f56a9204160c436d6cb26e/71fec/picture-upload.webp 3584w","sizes":"(max-width: 1179px) 100vw, 1179px"}}},"caption":"Profile picture upload"},{"altText":"The user's profile with newly added profile picture.","src":{"childImageSharp":{"fluid":{"base64":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAALCAYAAAB/Ca1DAAAACXBIWXMAAAsTAAALEwEAmpwYAAABtUlEQVQoz4WS3U/TUBiH96f6Bxi98P8wyI16I7qgoFFiTAgXeGUIASJsaFk3XUfb9Wtbvz+GsLHHc7qB9MJxkie/c5qep+/7pjXv0yauYPBxE+Pzezone3Sb+yhbdRqvVzlae8bhm1UOXq1wJM7Nty9ovntJc/05x+KZtrHGcOsDrrgvXTXurELw7es29Y06h+0Wjd89vrc7qKZF61ynbTn0RgFmmqGbJq3tL6TT67sKarPplOvJBGYz0iTj6eMHPHn0kJ3dXQytj3r2i06ri/pDpa120boGum6XaJpJHCXlXemQrtpMHCRyXfy55PTkmL39A5yBTxinBNGCcp/ghzGjICYIkzKTNC/v3ngqwjwfkxaXXF1NSLOcLC8E4wX/9nkxp3GqCHF8K5y3XBEW/FTOMByfkaggEiOI4qySsupQVCyzI2YciVwqVBQFzXTxhj6+H+AHYUkQRozEOYxkm1mlg/8Liwscz8d2BvRtD9NyBdW07AGumK83DLDEe8tnKOZybjgYfa+KNU+zTFf8Mk6ZPd0iEWNYKtTNm2ruR35ctr+k5fHt1+9DCnuGTbyoUK6gH/AXyBoxHQoav6wAAAAASUVORK5CYII=","aspectRatio":1.7455621301775148,"src":"/static/6ee13b2535c7406fd023d13d072afd95/7a32a/picture-upload-confirmation.png","srcSet":"/static/6ee13b2535c7406fd023d13d072afd95/c100b/picture-upload-confirmation.png 295w,\n/static/6ee13b2535c7406fd023d13d072afd95/6ee37/picture-upload-confirmation.png 590w,\n/static/6ee13b2535c7406fd023d13d072afd95/7a32a/picture-upload-confirmation.png 1179w,\n/static/6ee13b2535c7406fd023d13d072afd95/96b65/picture-upload-confirmation.png 1769w,\n/static/6ee13b2535c7406fd023d13d072afd95/d5aa8/picture-upload-confirmation.png 2358w,\n/static/6ee13b2535c7406fd023d13d072afd95/c4676/picture-upload-confirmation.png 3584w","srcWebp":"/static/6ee13b2535c7406fd023d13d072afd95/a40b9/picture-upload-confirmation.webp","srcSetWebp":"/static/6ee13b2535c7406fd023d13d072afd95/25ff1/picture-upload-confirmation.webp 295w,\n/static/6ee13b2535c7406fd023d13d072afd95/d5fa0/picture-upload-confirmation.webp 590w,\n/static/6ee13b2535c7406fd023d13d072afd95/a40b9/picture-upload-confirmation.webp 1179w,\n/static/6ee13b2535c7406fd023d13d072afd95/3fb9c/picture-upload-confirmation.webp 1769w,\n/static/6ee13b2535c7406fd023d13d072afd95/33164/picture-upload-confirmation.webp 2358w,\n/static/6ee13b2535c7406fd023d13d072afd95/71fec/picture-upload-confirmation.webp 3584w","sizes":"(max-width: 1179px) 100vw, 1179px"}}},"caption":"Successful upload"},{"altText":"The user's post feed, displaying posts from all the user's friends.","src":{"childImageSharp":{"fluid":{"base64":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAALCAYAAAB/Ca1DAAAACXBIWXMAAAsTAAALEwEAmpwYAAABkklEQVQoz32Se0/CMBTF+f7fwBifiVGJ+DH4x8efigYY7NW1XffupsJ2vC2iIISb/HJu1/TsrHe9aHADRvC7G7iDPpzhEN7DI95vr/FyfITXsxOMLi8wOj8lPcfo4szqG/FCz5yrS/D7PhidN149bFRD+DyGJ0skzQKa1lVHtLuqSfOv1q43q9ctl2iXC6ClzVLD9UNMHQe+HyAMGRiLwKwyq9F6TUgZoyxKoGvRLhYwXr2u62AwVVUa44mDQKRI8wpFVaOgl/zXvKisqjS3vam1z47h0/MzxjMfYSQgY/VLrBIIqaCSFFlekFFJhpk1XhuuPnnTUDeIZIJQJFZF/IeMV4axyih9iYySxUm2lXDHUOsac7rDWSDAydCk2IdJaEiz/HBCTQnnbkB4mBETZ47pzLU4P2r7Oe0TjMstw907pIRMKISqQlrUaD4+UTfb6PqDaGyf2eEcGIpJOKVUk6lDKVyb1PV8ePQLuV5gNeICLOLgQtKAMpTVwaHU8EOOgAmr+zB3axBmeJH8HYop5Sl8AwnAPmbs2f5vAAAAAElFTkSuQmCC","aspectRatio":1.7455621301775148,"src":"/static/ece25e21a7fb864d9b535752e6695701/7a32a/feed.png","srcSet":"/static/ece25e21a7fb864d9b535752e6695701/c100b/feed.png 295w,\n/static/ece25e21a7fb864d9b535752e6695701/6ee37/feed.png 590w,\n/static/ece25e21a7fb864d9b535752e6695701/7a32a/feed.png 1179w,\n/static/ece25e21a7fb864d9b535752e6695701/96b65/feed.png 1769w,\n/static/ece25e21a7fb864d9b535752e6695701/d5aa8/feed.png 2358w,\n/static/ece25e21a7fb864d9b535752e6695701/c4676/feed.png 3584w","srcWebp":"/static/ece25e21a7fb864d9b535752e6695701/a40b9/feed.webp","srcSetWebp":"/static/ece25e21a7fb864d9b535752e6695701/25ff1/feed.webp 295w,\n/static/ece25e21a7fb864d9b535752e6695701/d5fa0/feed.webp 590w,\n/static/ece25e21a7fb864d9b535752e6695701/a40b9/feed.webp 1179w,\n/static/ece25e21a7fb864d9b535752e6695701/3fb9c/feed.webp 1769w,\n/static/ece25e21a7fb864d9b535752e6695701/33164/feed.webp 2358w,\n/static/ece25e21a7fb864d9b535752e6695701/71fec/feed.webp 3584w","sizes":"(max-width: 1179px) 100vw, 1179px"}}},"caption":"Posts feed"},{"altText":"The profile of another user that is not friends with the logged in user with message and friend request buttons.","src":{"childImageSharp":{"fluid":{"base64":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAALCAYAAAB/Ca1DAAAACXBIWXMAAAsTAAALEwEAmpwYAAABl0lEQVQoz4WS+07CMBSHef838I4mRqJiNL6Af6iJGo0mEEBxl+6+dWNjbBOB/TztJE6j2OTLOe3abz1tG267BYfwjltg7UMoV9fQb24xaB2gt7WB3s4W+rtNitsUd9Brblfjm+vobqxB3d+Dd3IIh9YLVwO1VhDPCkNvqEL3Itx3BugoBhhPoLgcahBD00y8nJ3i+fgI/fNzpLOyrkCjnM+xmM2AxQJ5luPu4QkXl1cYDjV0H7syaroFlURaHd2EQj+PRwlQltIhXI2SOgLRsrz43CGD64fwwwReEMnc9b9HMW7YHuIklWuXnm/CCe3QsFwYDofPQ5o8/pNknCKi3Yl8KaxK/iHUmQnLskhsg5mWRDdMMMIQfYr6J57PkdR2+KvQoXJ4nCHNChTTd+Rv7yh+4W06QxSP/xcOVYbBqw6NGbBsR2JaFVVuS0Qe8Eie+0qhsVxI+EGIIIzkeQaSKhfjPByBR7Fcs1LIbB+mn2BEpUyo7HSSy/IrvnLxLaRLSSfZaqFCb0ygMXEp7p+I1yDmiNuuCz8AaG44NH+eJy8AAAAASUVORK5CYII=","aspectRatio":1.7455621301775148,"src":"/static/30c63933b84e2c422065242c9d943b07/7a32a/friend-profile.png","srcSet":"/static/30c63933b84e2c422065242c9d943b07/c100b/friend-profile.png 295w,\n/static/30c63933b84e2c422065242c9d943b07/6ee37/friend-profile.png 590w,\n/static/30c63933b84e2c422065242c9d943b07/7a32a/friend-profile.png 1179w,\n/static/30c63933b84e2c422065242c9d943b07/96b65/friend-profile.png 1769w,\n/static/30c63933b84e2c422065242c9d943b07/d5aa8/friend-profile.png 2358w,\n/static/30c63933b84e2c422065242c9d943b07/c4676/friend-profile.png 3584w","srcWebp":"/static/30c63933b84e2c422065242c9d943b07/a40b9/friend-profile.webp","srcSetWebp":"/static/30c63933b84e2c422065242c9d943b07/25ff1/friend-profile.webp 295w,\n/static/30c63933b84e2c422065242c9d943b07/d5fa0/friend-profile.webp 590w,\n/static/30c63933b84e2c422065242c9d943b07/a40b9/friend-profile.webp 1179w,\n/static/30c63933b84e2c422065242c9d943b07/3fb9c/friend-profile.webp 1769w,\n/static/30c63933b84e2c422065242c9d943b07/33164/friend-profile.webp 2358w,\n/static/30c63933b84e2c422065242c9d943b07/71fec/friend-profile.webp 3584w","sizes":"(max-width: 1179px) 100vw, 1179px"}}},"caption":"A discovered dev"},{"altText":"The profile of another user after sending them a friend request","src":{"childImageSharp":{"fluid":{"base64":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAALCAYAAAB/Ca1DAAAACXBIWXMAAAsTAAALEwEAmpwYAAABp0lEQVQoz4WS2UsbURTG8/+/KFVpX0rUYhuKrSD4KoJSLBJJCjFUMsmdO/udJTOZzIya5es5dwzG4nLgxz13+zhbw//RgkcEhy2Ioxb6v09xe32O7mET3f1ttPe2cNncxOXnDbS/7KBz8Amdr8TBR7R3P8D41oT6+R0e/WetBtasIvpCoGcYGKkIV70+/oxMiHiMQRDCUCH5CWSWQ1g2bk6OMZkv1iXQWM7nWMxmwGKBsihxdd3F2cUvGAMTN52eXk3hQIxsCPEEnw2HFtJxBiyXWoO1GkvaMGxFWeF2KNEnEU/FUHGGIEzgk++r1VrD55YbIKVo2VY6zwSnFKHl+LC8CCqK6fHkVbJJjoSiY38lWKf8n6ApbTiOQ8IupO1oTKqXJCze02o+ElCds7UIXxTkVKO0QF5UqO4fUN49oHqBu/sZknTyvuBgJPHXoM5KC47raWynpvZdDfthlOi6v1PDx4+ECmOENCZcz1BT+3we0ShFSar/vCkoXQVbZRhTKlNKO5+WOv2aJ5/vYmpKPi3eTnlIM8YIyU3xX4Wngd9wt1cWWzH+ASBKOEjsu1WqAAAAAElFTkSuQmCC","aspectRatio":1.7455621301775148,"src":"/static/5d87d49aad985227fade76a5921bb453/7a32a/friend-request.png","srcSet":"/static/5d87d49aad985227fade76a5921bb453/c100b/friend-request.png 295w,\n/static/5d87d49aad985227fade76a5921bb453/6ee37/friend-request.png 590w,\n/static/5d87d49aad985227fade76a5921bb453/7a32a/friend-request.png 1179w,\n/static/5d87d49aad985227fade76a5921bb453/96b65/friend-request.png 1769w,\n/static/5d87d49aad985227fade76a5921bb453/d5aa8/friend-request.png 2358w,\n/static/5d87d49aad985227fade76a5921bb453/c4676/friend-request.png 3584w","srcWebp":"/static/5d87d49aad985227fade76a5921bb453/a40b9/friend-request.webp","srcSetWebp":"/static/5d87d49aad985227fade76a5921bb453/25ff1/friend-request.webp 295w,\n/static/5d87d49aad985227fade76a5921bb453/d5fa0/friend-request.webp 590w,\n/static/5d87d49aad985227fade76a5921bb453/a40b9/friend-request.webp 1179w,\n/static/5d87d49aad985227fade76a5921bb453/3fb9c/friend-request.webp 1769w,\n/static/5d87d49aad985227fade76a5921bb453/33164/friend-request.webp 2358w,\n/static/5d87d49aad985227fade76a5921bb453/71fec/friend-request.webp 3584w","sizes":"(max-width: 1179px) 100vw, 1179px"}}},"caption":"Sent friend request"},{"altText":"The user's friends list, showing three friends.","src":{"childImageSharp":{"fluid":{"base64":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAALCAYAAAB/Ca1DAAAACXBIWXMAAAsTAAALEwEAmpwYAAABVklEQVQoz62S206DQBCGef8HsPHUVhO1aaxPoRd6Y7xp9UYK9IQNsAtblkPhd2ZrmxprjcZJvrAMzMcwGWvW62BK+NcduL0uXm/v4Nw/4OXqEv2jBgbNEzwdH+KxcYBBu4V+69Rcn8/adG7CvjiHf9PFlOrZZWErNDEczeCMfYwCiakqMNcVJiLBKJQIs9LwpjJ4QYzhXCCp8CmserlEtSyBuoJKFIbuBB5JXXcM15fwI41MZ4Z0kUJrDSEkHHpu2x5EJKm2RlWWYJdV0w3DoaiAhS4JR5MZyRSEypGmGgsDSXWOSCbmHdsZQ8aJqV17vgq9qSGMYmR5YQQ6W5ESnBOx2ilc/fIeYV6URsQShs+ckxvh5G/CbfLi3zssvu3wxxnu6nDfDHcKHZIxoYhR0Cqsu1tjZpj8Zoa0Nsw8EGZNOKcW+oPUrA93zx/lDoVMNksdeAHeASbEQsELetSLAAAAAElFTkSuQmCC","aspectRatio":1.7455621301775148,"src":"/static/0c5af921e139145bc5d051140e585f9f/7a32a/friends-list.png","srcSet":"/static/0c5af921e139145bc5d051140e585f9f/c100b/friends-list.png 295w,\n/static/0c5af921e139145bc5d051140e585f9f/6ee37/friends-list.png 590w,\n/static/0c5af921e139145bc5d051140e585f9f/7a32a/friends-list.png 1179w,\n/static/0c5af921e139145bc5d051140e585f9f/96b65/friends-list.png 1769w,\n/static/0c5af921e139145bc5d051140e585f9f/d5aa8/friends-list.png 2358w,\n/static/0c5af921e139145bc5d051140e585f9f/c4676/friends-list.png 3584w","srcWebp":"/static/0c5af921e139145bc5d051140e585f9f/a40b9/friends-list.webp","srcSetWebp":"/static/0c5af921e139145bc5d051140e585f9f/25ff1/friends-list.webp 295w,\n/static/0c5af921e139145bc5d051140e585f9f/d5fa0/friends-list.webp 590w,\n/static/0c5af921e139145bc5d051140e585f9f/a40b9/friends-list.webp 1179w,\n/static/0c5af921e139145bc5d051140e585f9f/3fb9c/friends-list.webp 1769w,\n/static/0c5af921e139145bc5d051140e585f9f/33164/friends-list.webp 2358w,\n/static/0c5af921e139145bc5d051140e585f9f/71fec/friends-list.webp 3584w","sizes":"(max-width: 1179px) 100vw, 1179px"}}},"caption":"Friends list"},{"altText":"A page showing the user's friend requests, with 5 requests pending.","src":{"childImageSharp":{"fluid":{"base64":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAALCAYAAAB/Ca1DAAAACXBIWXMAAAsTAAALEwEAmpwYAAABiUlEQVQoz53Si07CMBQGYN7/BTQKElRkovgUGkEEuXglAhsg0N03NgYb2+/pBNEEErTJn7XN+vU0bWJcEDCisEsBvUIenesbSKU7tM5zeE0d4Cl1iKd0Co/JA7ydZCDlBbyfneIlk8Zz+gjd7DHYVR4jWs+tBH40jyIOGGUM1Z3BpfFAN9FlCpjtotkWUWu1IcoahqZLXwOTEL9aIlosEC4CIArhTByIvSGk/ghMVqGqWhxFUemfEMVSGXv7SdwWy2BMRbvTg2lYtDZCGATgViKiAQ9vjjtdgwpBhMmEydQPCKzWm8gKF6g8NDCWdXTEASx7Eq9dORvAUQzKig7dMKHpBlTNwCKMUKk1kMkKuK/WN4JfR94Cshi0CCSUYA7WGo/I5Quo1poEajuC/S9QI2w29zH15vBm6/A503bQo4vrSsPdQB7dsDH3g2+Eh/fnvk/ICvz4H7i9wh1AaXlk3bTh01NYVbcK38Sa/OXI9Gz4xSiaCXc6i+cc11tmSnNeXD3flFdoWr/BT2zuOnq9ij2WAAAAAElFTkSuQmCC","aspectRatio":1.7455621301775148,"src":"/static/65131f4a0e5b32f1c587feb92ca206d0/7a32a/friend-requests.png","srcSet":"/static/65131f4a0e5b32f1c587feb92ca206d0/c100b/friend-requests.png 295w,\n/static/65131f4a0e5b32f1c587feb92ca206d0/6ee37/friend-requests.png 590w,\n/static/65131f4a0e5b32f1c587feb92ca206d0/7a32a/friend-requests.png 1179w,\n/static/65131f4a0e5b32f1c587feb92ca206d0/96b65/friend-requests.png 1769w,\n/static/65131f4a0e5b32f1c587feb92ca206d0/d5aa8/friend-requests.png 2358w,\n/static/65131f4a0e5b32f1c587feb92ca206d0/c4676/friend-requests.png 3584w","srcWebp":"/static/65131f4a0e5b32f1c587feb92ca206d0/a40b9/friend-requests.webp","srcSetWebp":"/static/65131f4a0e5b32f1c587feb92ca206d0/25ff1/friend-requests.webp 295w,\n/static/65131f4a0e5b32f1c587feb92ca206d0/d5fa0/friend-requests.webp 590w,\n/static/65131f4a0e5b32f1c587feb92ca206d0/a40b9/friend-requests.webp 1179w,\n/static/65131f4a0e5b32f1c587feb92ca206d0/3fb9c/friend-requests.webp 1769w,\n/static/65131f4a0e5b32f1c587feb92ca206d0/33164/friend-requests.webp 2358w,\n/static/65131f4a0e5b32f1c587feb92ca206d0/71fec/friend-requests.webp 3584w","sizes":"(max-width: 1179px) 100vw, 1179px"}}},"caption":"Friend requests"},{"altText":"A page showing a conversation between two users.","src":{"childImageSharp":{"fluid":{"base64":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAALCAYAAAB/Ca1DAAAACXBIWXMAAAsTAAALEwEAmpwYAAABZElEQVQoz42RzU/CQBDF+f9vamKiFyUxoTGKB++cvKgJghq9oKXIhxjaAt3dst22z5lFTBuIdpKX7XRnfpl5W/u8dDAhTS8c9K8cvN620Hu4wXOzjm79AJ2zQ9zV93F/uofHxpHVk3Ns1aa7t8YJvprnmFA/s2oohCK9j8YIpbDf8g8Jrp0FWGYoRS1PU2SpAfIMIhLwBmMIoaBXGiu1WisuiHJNZyxjuO4Q83BBvTkyY8CsWk4Ji0NIhT4BIzpXOkFM0F3iO0VQl2rni8j2bjhbQO9jglkwRxDObb4LvAZquF4ZuF65CKRVB8Mpup023H4fMz+AT2BJnqYmsaCNGPw/8GdCPwghlYJhf7MMocrgywxpylr/00lSDcgeCjJcJwYxTWKosdUzuH4xpQmth14FDxm4FLLkXZJoAu94lKpAfmWesDhRUXZ69nBQcWUukiq2Oa+/JbqL6AFdb/QL5PA/fHwDHP1IEiJuwPEAAAAASUVORK5CYII=","aspectRatio":1.7455621301775148,"src":"/static/71ed52e6f4bbfc1d0ce0d2cd86970c4b/7a32a/conversation.png","srcSet":"/static/71ed52e6f4bbfc1d0ce0d2cd86970c4b/c100b/conversation.png 295w,\n/static/71ed52e6f4bbfc1d0ce0d2cd86970c4b/6ee37/conversation.png 590w,\n/static/71ed52e6f4bbfc1d0ce0d2cd86970c4b/7a32a/conversation.png 1179w,\n/static/71ed52e6f4bbfc1d0ce0d2cd86970c4b/96b65/conversation.png 1769w,\n/static/71ed52e6f4bbfc1d0ce0d2cd86970c4b/d5aa8/conversation.png 2358w,\n/static/71ed52e6f4bbfc1d0ce0d2cd86970c4b/c4676/conversation.png 3584w","srcWebp":"/static/71ed52e6f4bbfc1d0ce0d2cd86970c4b/a40b9/conversation.webp","srcSetWebp":"/static/71ed52e6f4bbfc1d0ce0d2cd86970c4b/25ff1/conversation.webp 295w,\n/static/71ed52e6f4bbfc1d0ce0d2cd86970c4b/d5fa0/conversation.webp 590w,\n/static/71ed52e6f4bbfc1d0ce0d2cd86970c4b/a40b9/conversation.webp 1179w,\n/static/71ed52e6f4bbfc1d0ce0d2cd86970c4b/3fb9c/conversation.webp 1769w,\n/static/71ed52e6f4bbfc1d0ce0d2cd86970c4b/33164/conversation.webp 2358w,\n/static/71ed52e6f4bbfc1d0ce0d2cd86970c4b/71fec/conversation.webp 3584w","sizes":"(max-width: 1179px) 100vw, 1179px"}}},"caption":"Message other devs"},{"altText":"A page showing the user's notifications, each with mark as read button.","src":{"childImageSharp":{"fluid":{"base64":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAALCAYAAAB/Ca1DAAAACXBIWXMAAAsTAAALEwEAmpwYAAABoklEQVQoz5WSa0/bMBSG+/+/owmmUqjGVirgNyBYtxVpH/YBBqi3pG0uTpqbnaZJmryc4wrUamPqLD1KYvs8fu244Vx2YBPuRQfmZRejrz0Y/Ts8d77gqfkRT6ct3LeauOf39gmMbgeDz5/wm/ofWscYn7XhXnVhUz27GthqGTGZuYQDP11B1UBSVpgIH9NFCFUBvwZjjBwPVpRSfwhZYac16vUa1boE6gpKKkxMC+bUhiMC2F4MS0Rw6KlUqscPPhzh+qYHIRYYDk1EYUy1NaqyBLsaNX0w3FS6JKENg4TCD+GHEiKI4RGJTCFp/Oj4FLff+nC9EMPJDHEide2r512hQwX2QsLyE02ilnq8fXaO7/2fJAz+EG62/I7QpYReqOAGUqPSTHPYPMFt7wfEXxL+U8jbjJclIpUjTgtkqxzpMsPD4zPNmWFmCYyM+R5CkjFBmKAoC6zyHDnBQmYzL9OLjg3r/4R5Ub6JtoliCZOu1nifhLwyE0ScsKSExQ68SEzXZyPcJyHdQz5HbxHRma103+sP4Xc+R06/2fJcp90WvgD51jspyc6u5AAAAABJRU5ErkJggg==","aspectRatio":1.7455621301775148,"src":"/static/a1fcd580b124aa2e7e40a5303e9cacbe/7a32a/notifications.png","srcSet":"/static/a1fcd580b124aa2e7e40a5303e9cacbe/c100b/notifications.png 295w,\n/static/a1fcd580b124aa2e7e40a5303e9cacbe/6ee37/notifications.png 590w,\n/static/a1fcd580b124aa2e7e40a5303e9cacbe/7a32a/notifications.png 1179w,\n/static/a1fcd580b124aa2e7e40a5303e9cacbe/96b65/notifications.png 1769w,\n/static/a1fcd580b124aa2e7e40a5303e9cacbe/d5aa8/notifications.png 2358w,\n/static/a1fcd580b124aa2e7e40a5303e9cacbe/c4676/notifications.png 3584w","srcWebp":"/static/a1fcd580b124aa2e7e40a5303e9cacbe/a40b9/notifications.webp","srcSetWebp":"/static/a1fcd580b124aa2e7e40a5303e9cacbe/25ff1/notifications.webp 295w,\n/static/a1fcd580b124aa2e7e40a5303e9cacbe/d5fa0/notifications.webp 590w,\n/static/a1fcd580b124aa2e7e40a5303e9cacbe/a40b9/notifications.webp 1179w,\n/static/a1fcd580b124aa2e7e40a5303e9cacbe/3fb9c/notifications.webp 1769w,\n/static/a1fcd580b124aa2e7e40a5303e9cacbe/33164/notifications.webp 2358w,\n/static/a1fcd580b124aa2e7e40a5303e9cacbe/71fec/notifications.webp 3584w","sizes":"(max-width: 1179px) 100vw, 1179px"}}},"caption":"Notifications page"}],"tags":["Bootstrap","CSS","HTML","Integration Tests","PostgreSQL","REST APIs","Ruby","Ruby on Rails","Unit Tests"]},"body":"function _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  \"title\": \"Dev Communities Social App\",\n  \"path\": \"/portfolio/dev-communities-social-app\",\n  \"websiteUrl\": \"https://dev-communities.herokuapp.com/\",\n  \"githubUrl\": \"https://github.com/learnsometing/dev-communities\",\n  \"cardPhoto\": {\n    \"src\": \"../images/dev-communities/home.png\",\n    \"altText\": \"A photo of the Dev Communities home page.\"\n  },\n  \"cardText\": \"A Ruby on Rails social media app for developers.\",\n  \"carouselPhotos\": [{\n    \"src\": \"../images/dev-communities/home.png\",\n    \"altText\": \"A photo of the Dev Communities home page.\",\n    \"caption\": \"Landing page\"\n  }, {\n    \"src\": \"../images/dev-communities/sign-up.png\",\n    \"altText\": \"Create account form with full name, email, password, and password confirmation fields.\",\n    \"caption\": \"Sign up\"\n  }, {\n    \"src\": \"../images/dev-communities/post-sign-up.png\",\n    \"altText\": \"The landing page with a notification telling the user to check their email for a confirmation link.\",\n    \"caption\": \"Email confirmation sent\"\n  }, {\n    \"src\": \"../images/dev-communities/confirmation-email.png\",\n    \"altText\": \"An email with a link to confirm the user's account.\",\n    \"caption\": \"Confirmation email\"\n  }, {\n    \"src\": \"../images/dev-communities/account-confirmation.png\",\n    \"altText\": \"A log in page with an account confirmation notification and a form with email and password fields.\",\n    \"caption\": \"Login page\"\n  }, {\n    \"src\": \"../images/dev-communities/choose-location.png\",\n    \"altText\": \"The user is selecting a location on the google map, and a pop up is asking the user to confirm their location.\",\n    \"caption\": \"Location selection\"\n  }, {\n    \"src\": \"../images/dev-communities/skill-tags.png\",\n    \"altText\": \"A form asking the user which programming languages they use, which can be chosen via a multi select search.\",\n    \"caption\": \"Skills selection\"\n  }, {\n    \"src\": \"../images/dev-communities/new-profile.png\",\n    \"altText\": \"The user's profile, with a default photo, the user's name, a tag cloud of the user's skills, the user's location, a link to the user's friends list, and a form for making posts.\",\n    \"caption\": \"A new user profile\"\n  }, {\n    \"src\": \"../images/dev-communities/picture-upload.png\",\n    \"altText\": \"A form for uploading profile pictures to s3, with browse, upload, and cancel buttons.\",\n    \"caption\": \"Profile picture upload\"\n  }, {\n    \"src\": \"../images/dev-communities/picture-upload-confirmation.png\",\n    \"altText\": \"The user's profile with newly added profile picture.\",\n    \"caption\": \"Successful upload\"\n  }, {\n    \"src\": \"../images/dev-communities/feed.png\",\n    \"altText\": \"The user's post feed, displaying posts from all the user's friends.\",\n    \"caption\": \"Posts feed\"\n  }, {\n    \"src\": \"../images/dev-communities/friend-profile.png\",\n    \"altText\": \"The profile of another user that is not friends with the logged in user with message and friend request buttons.\",\n    \"caption\": \"A discovered dev\"\n  }, {\n    \"src\": \"../images/dev-communities/friend-request.png\",\n    \"altText\": \"The profile of another user after sending them a friend request\",\n    \"caption\": \"Sent friend request\"\n  }, {\n    \"src\": \"../images/dev-communities/friends-list.png\",\n    \"altText\": \"The user's friends list, showing three friends.\",\n    \"caption\": \"Friends list\"\n  }, {\n    \"src\": \"../images/dev-communities/friend-requests.png\",\n    \"altText\": \"A page showing the user's friend requests, with 5 requests pending.\",\n    \"caption\": \"Friend requests\"\n  }, {\n    \"src\": \"../images/dev-communities/conversation.png\",\n    \"altText\": \"A page showing a conversation between two users.\",\n    \"caption\": \"Message other devs\"\n  }, {\n    \"src\": \"../images/dev-communities/notifications.png\",\n    \"altText\": \"A page showing the user's notifications, each with mark as read button.\",\n    \"caption\": \"Notifications page\"\n  }],\n  \"tags\": [\"Bootstrap\", \"CSS\", \"HTML\", \"Integration Tests\", \"PostgreSQL\", \"REST APIs\", \"Ruby\", \"Ruby on Rails\", \"Unit Tests\"],\n  \"date\": \"2019-08-16\"\n};\n\nvar makeShortcode = function makeShortcode(name) {\n  return function MDXDefaultShortcode(props) {\n    console.warn(\"Component \" + name + \" was not imported, exported, or provided by MDXProvider as global scope\");\n    return mdx(\"div\", props);\n  };\n};\n\nvar Grid = makeShortcode(\"Grid\");\nvar Typography = makeShortcode(\"Typography\");\nvar layoutProps = {\n  _frontmatter: _frontmatter\n};\nvar MDXLayout = \"wrapper\";\nreturn function MDXContent(_ref) {\n  var components = _ref.components,\n      props = _objectWithoutProperties(_ref, [\"components\"]);\n\n  return mdx(MDXLayout, _extends({}, layoutProps, props, {\n    components: components,\n    mdxType: \"MDXLayout\"\n  }), mdx(Grid, {\n    item: true,\n    mdxType: \"Grid\"\n  }, mdx(Typography, {\n    variant: 'body1',\n    className: \"description fade-in\",\n    gutterBottom: true,\n    mdxType: \"Typography\"\n  }, \"Dev Communities is my final project in the Odin Project\", ' ', mdx(\"strong\", null, \"Ruby on Rails\"), \" curriculum. It was inspired by Facebook, Meetup, and Stack Overflow.\")), mdx(Grid, {\n    item: true,\n    mdxType: \"Grid\"\n  }, mdx(Typography, {\n    variant: 'body1',\n    className: \"description fade-in\",\n    gutterBottom: true,\n    mdxType: \"Typography\"\n  }, \"I wanted Dev Communities to enable developers to discover each other and form communities they could engage in. In the end, I had to cut some of the features to have the app in a working state in time for it to be presented to my local development community, so it resembles Facebook more than anything.\")), mdx(Grid, {\n    item: true,\n    mdxType: \"Grid\"\n  }, mdx(Typography, {\n    variant: 'body1',\n    className: \"description fade-in\",\n    gutterBottom: true,\n    mdxType: \"Typography\"\n  }, \"I struggled the most with developing a notifications system for the application, but I thouroughly enjoyed modeling the data relationships that power its main features.\")));\n}\n;\nMDXContent.isMDXComponent = true;"}},"pageContext":{"slug":"/portfolio/dev-communities-social-app"}},"staticQueryHashes":["63159454"]}