CINXE.COM
Little Free Library - Case Study - The Jed Mahonis Group - Full-Stack Digital Product Agency
<!DOCTYPE html> <html lang='en'> <head> <!-- /dddd/ hddddy` `yddddd `/shdmmdho:` oMMMM+ NMMMMMm- .dMMMMMM .yNMMMMNMMMMMm: oMMMM+ NMMMMMMN/ :mMMMMMMM -NMMMNs:-:+hmy:` oMMMM+ NMMMMMMMMyNMMMMMMMM hMMMM/ -::/:::. oMMMM+ NMMMMsMMMMMMMyNMMMM hMMMM/ NMMMMMMo :-..-dMMMM- NMMMM /NMMMN+ NMMMM -NMMMNo:-syNMMMMo +MNNNNMMMMy NMMMM -hhh: NMMMM .yMMMMMNNMMMMMMo smNMMMNds: dmmmm dmmmm .+ydNNNdy+dmm+ Hey look, we're hip! We've got an ASCII version of our logo, and we're writing a note to you source code dwellers in the header! 😂 But seriously, if you're reading this, here's what you probably wanna know: 1) The site is powered by Rails with as basic of tools as we could use (jQuery and good ol' fashioned HTML). Practice what you preach, right? 2) We might be hiring right now, your best bet is to get out of the source code and head to the careers page. 3) The latest thing I've been laughing at is this scene from Community: https://www.youtube.com/watch?v=MhOG3XwX9Yw --> <title>Little Free Library - Case Study - The Jed Mahonis Group - Full-Stack Digital Product Agency</title> <link href='https://fonts.googleapis.com/css?family=Raleway:600,300,200,700' rel='stylesheet' type='text/css'> <link rel="stylesheet" media="all" href="/assets/application-18cc94e36bf6e91c83c2935d4334ec092e5db782dd88b72c8cf820b0c1c30cba.css" /> <meta name="csrf-param" content="authenticity_token" /> <meta name="csrf-token" content="+NnjbPmF4fsAY9NJZ2BhLXe0VWl/VM5RfxkuvgIzPbtC2RfmA2yjlL3JJHb6f7Fp6hObi+UZ/EjviJRrp6FUmQ==" /> <meta content='text/html;charset=utf-8' http-equiv='Content-Type'> <meta content='ie=edge' http-equiv='x-ua-compatible'> <meta content='width=device-width, initial-scale=1' name='viewport'> <meta content='The Jed Mahonis Group, LLC.' name='author'> <meta content='index, follow' name='robots'> <meta content='JMG partnered with Little Free Library to build An interactive user experience that put data management into the hands of users and eliminated 25 admin hours per week for the Little Free Library nonprofit team.' name='description'> <meta content='JMG partnered with Little Free Library to build An interactive user experience that put data management into the hands of users and eliminated 25 admin hours per week for the Little Free Library nonprofit team.' property='og:description'> <meta content='JMG partnered with Little Free Library to build An interactive user experience that put data management into the hands of users and eliminated 25 admin hours per week for the Little Free Library nonprofit team.' name='twitter:description'> <meta content='538AB8BA43EBF84F7848F05AD1D4599A' name='msvalidate.01'> <meta content='Little Free Library - Case Study - The Jed Mahonis Group - Full-Stack Digital Product Agency' property='og:title'> <meta content='projects/logos/little-free-library-logo.png ' property='og:image'> <meta content='projects/logos/little-free-library-logo.png ' name='twitter:image'> <meta content='website' property='og:type'> <meta content='The Jed Mahonis Group' property='og:site_name'> <meta content='summary_large_image' name='twitter:card'> <meta content='@jedmahonisgroup' name='twitter:site'> <meta content='@jedmahonisgroup' name='twitter:creator'> <meta property="og:url" content="https://jedmahonisgroup.com/projects/little-free-library" /><link href="https://jedmahonisgroup.com/projects/little-free-library" rel="canonical" /> <link rel="apple-touch-icon-precomposed" type="image/x-icon" href="/assets/apple-touch-icon-57x57-560cbaf3f3b7e3b49850e2e8c86dc5a9f9b5357123aebfa4ef8fa90f06841b0f.png" sizes="57x57" /> <link rel="apple-touch-icon-precomposed" type="image/x-icon" href="/assets/apple-touch-icon-114x114-dac0a39be8d156bd2393c5b2cea7f3a207a621198334acc5f3fe89bbaf3a77ca.png" sizes="114x114" /> <link rel="apple-touch-icon-precomposed" type="image/x-icon" href="/assets/apple-touch-icon-72x72-af209b70ee5beccda44d703d8ef21082d3855be7e52e6f3f0d2aac30a2a650ce.png" sizes="72x72" /> <link rel="apple-touch-icon-precomposed" type="image/x-icon" href="/assets/apple-touch-icon-144x144-32e4e272708d9c3cd4a0c5770cabdf1e6043aed22fe3c4053f3efb6eb66d1b6c.png" sizes="144x144" /> <link rel="apple-touch-icon-precomposed" type="image/x-icon" href="/assets/apple-touch-icon-60x60-c4d570d8746f30f1e2a33da093e0549c06fb0c0cd2b2683db423cd7f36ef0baa.png" sizes="60x60" /> <link rel="apple-touch-icon-precomposed" type="image/x-icon" href="/assets/apple-touch-icon-120x120-8a733ddcffb87473c2a53978c0139a471e9dfb0f1c93d93c8bb727da750ed88d.png" sizes="120x120" /> <link rel="apple-touch-icon-precomposed" type="image/x-icon" href="/assets/apple-touch-icon-76x76-eb02d95852c106cca6edb03de3fd454d2c7f171e5cd8dd679c0f96255ba3e507.png" sizes="76x76" /> <link rel="apple-touch-icon-precomposed" type="image/x-icon" href="/assets/apple-touch-icon-152x152-1e9bb12af59d7cdc52feeb86d676118e1a3c2387fe08ec786159bcab46200382.png" sizes="152x152" /> <link rel="icon" type="image/png" href="/assets/favicon-196x196-38e28cd79df1c1205f6b065c0fd69fcee751bf16e8d72308e3993630f204426f.png" sizes="196x196" /> <link rel="icon" type="image/png" href="/assets/favicon-96x96-13077edb6e7cdb8e52c057865e4a292e9ab5fe42fdbd3e571ce6b093ca8c67a2.png" sizes="96x96" /> <link rel="icon" type="image/png" href="/assets/favicon-32x32-2bc1143c6de45659b7459d5cc344b86ce627474daa44c23744204bedb7c29c85.png" sizes="32x32" /> <link rel="icon" type="image/png" href="/assets/favicon-16x16-dc6b38b6f948f38b4bd2814bdecb08b542df9d473829ba036f634c4453dad6c5.png" sizes="16x16" /> <link rel="icon" type="image/png" href="/assets/favicon-128-4795a1fd5d07c05619e1a860d115f1d4955043aa093b972bf62e1fa831265be9.png" sizes="128x128" /> <meta content='The Jed Mahonis Group - Mobile App Development' name='application-name'> <meta content='#FFFFFF' name='msapplication-TileColor'> <meta content='mstile-144x144.png' name='msapplication-TileImage'> <meta content='mstile-70x70.png' name='msapplication-square70x70logo'> <meta content='mstile-150x150.png' name='msapplication-square150x150logo'> <meta content='mstile-310x150.png' name='msapplication-wide310x150logo'> <meta content='mstile-310x310.png' name='msapplication-square310x310logo'> <link href='https://jedmahonisgroup.com/blog/feed' rel='alternate' title='The Jed Mahonis Group RSS Feed' type='application/rss+xml'> <!-- Global site tag (gtag.js) - Google Analytics --> <script data-domain='jedmahonisgroup.com' defer='defer' src='https://plausible.io/js/plausible.js'></script> <script src="/assets/application-ae262addf188891de96cc5feb95ac2b17def8a870f262da028f5f707c11d08b0.js" cache="true"></script> <script type="text/javascript" src="https://secure.office-cloud-52.com/js/787021.js" ></script> <noscript><img alt="" src="https://secure.office-cloud-52.com/787021.png" style="display:none;" /></noscript> </head> <body> <div class='menu' id='menu'> <div class='logo'> <a href="/"><img src="/assets/JMG-logo-yellow-56d79d9eb83b0d6ecb60e1233f47809e31f82b1372cc05bf15bccf6f1ef7ddba.svg" /> </a></div> <nav class='links'> <ul> <li><a href="/about">About</a></li> <li><a href="/services">Services</a></li> <li><a href="/pricing">Pricing</a></li> <li><a href="/partners">Partners</a></li> <li><a href="/projects">Projects</a></li> <li><a href="/how-to">How-to</a></li> <li><a class="button yellow call-to-action" href="/contact">Contact</a></li> <li class='icon'> <a id="responsiveMenuButton" href="javascript:void(0);"><img class="bars" src="/assets/icon-bars-8e9e0380b814a08a8c4fbc9638f16e733f3a211c1b274b486a726b12499de881.svg" /> <img class="window-close" src="/assets/icon-window-close-20181f3144c7febd20cf0a260a471399941f909b48cdf831bd3cafadd2d03e4c.svg" /> </a></li> </ul> </nav> </div> <div id='container'> <div id='project'> <div class='content'> <div class='section-padding' id='above-the-fold'> <div class='content'> <div class='left-side'> <div class='image-container'> <img src="/assets/home/LFL_RGB_VerticalLogo@2x_(1)-6abc0602b0b820d56d4f56f597e6298a2349260212cd1f35a724c3045e8e6ec3.png" /> </div> <h1>Little Free Library</h1> <p>An interactive user experience that put data management into the hands of users and eliminated 25 admin hours per week for the Little Free Library nonprofit team.</p> </div> <div class='right-side'> <strong>Services Provided:</strong> <ul class='services'> <li>Strategic Consultation</li> <li>Ruby on Rails Development</li> <li>iOS Development</li> <li>Android Development</li> <li>API Development</li> <li>Salesforce Integration</li> </ul> </div> </div> </div> <section class='detailed-service'> <div class='content right-side-image'> <div class='text-container flex-basis-50'> <div class='header'> <h2>About</h2> </div> <div class='body'> <p>Little Free Library® (LFL) is a 501(c)(3) nonprofit organization that builds community, inspires readers and expands book access for all through a global network of volunteer-led Little Free Libraries. There are more than 125,000 registered Little Free Library book-sharing boxes worldwide in all 50 states, 112 countries and seven continents. To learn more, visit <a href="https://littlefreelibrary.org/">LittleFreeLibrary.org</a></p> </div> </div> <div class='image-container flex-basis-50'> <img class="icon" src="/assets/projects/little-free-library/phone-book-eca60fa77efac22acfa73ce1c966d6312cdfd522115e97ba52a7afd4c96b1307.png" /> </div> </div> </section> <section class='detailed-service'> <div class='content'> <div class='text-container flex-basis-100'> <div class='header yellow-dot'> <h2>Challenge</h2> </div> <div class='body'> <p> Little Free Library’s web-based map for finding book-sharing locations around the world was a popular feature of its website, but the map’s functionality didn’t meet today’s user experience expectations, and patrons often expressed desire for a mobile-friendly version. </p> <p> The Little Free Library nonprofit organization saw this as an opportunity to create iOS and Android apps that were user-friendly mobile maps at their core, yet also served as a valuable business tool for alleviating the administrative burden of managing the ever-changing details of Little Free Libraries. </p> <p> Being a small nonprofit organization, budget was a big deal; but the Little Free Library team also knew that spending more upfront on a great user experience would pay off in the long run. </p> </div> </div> </div> </section> <section class='pull-quote'> <div class='content'> <p class='quote'>“There were cheap and fast ways we could’ve created an app; we could’ve worked with students or let a developer take this on pro bono. But ultimately <strong>we had to prioritize an excellent user experience and ongoing support.</strong> We’re a small organization. If we had hundreds or even dozens of people contacting us daily with tech support problems, we’d be overwhelmed. All that to say, price mattered, but we didn’t expect to get a quality app for dirt cheap."</p> <p class='byline'>MEGAN HANSON, SENIOR DIGITAL PRODUCER</p> </div> </section> <section class='detailed-service'> <div class='content'> <div class='text-container flex-basis-100'> <div class='header yellow-dot'> <h2>Solution</h2> </div> <div class='body'> <p>Little Free Library knew their app would be fairly complex and require several sets of skills, which led them to look for a development team over an individual for building the app. They reached out to one of their long-time partners, Brave North Technology, to ask for guidance, and The Jed Mahonis Group (JMG) was one of their recommendations.</p> </div> </div> </div> </section> <section class='pull-quote'> <div class='content'> <p class='quote'>“We wanted to stay local so that narrowed our search to developers in the Twin Cities area. We put out a RFP and did interviews with a few different teams to understand their approach. The Jed Mahonis Group was a good fit for us!<strong> We liked working with the same small group of developers from start to finish who were clearly excited about our mission and understood what we were trying to build. JMG was the right mix of experience and enthusiasm!</strong>”</p> <p class='byline'>MEGAN HANSON, SENIOR DIGITAL PRODUCER</p> </div> </section> <section class='detailed-service'> <div class='content'> <div class='text-container flex-basis-100'> <h3>JMG developed custom iOS and Android apps with features allowing users to:</h3> <ul> <li>Search for nearby Little Free Libraries</li> <li>Create a mapped route to visit specific Little Free Libraries</li> <li>Track visited Little Free Libraries using check-in</li> <li>Save favorite Little Free Libraries</li> <li>See photos of Little Free Libraries and learn their stories</li> <li>Leave messages for Little Free Library stewards (caretakers of the libraries) in virtual guest books</li> </ul> </div> </div> </section> <section class='detailed-service-white'> <div class='content'> <div class='text-container flex-basis-100'> <h3>JMG also built a Ruby on Rails-powered admin portal that helped Little Free Library stewards manage their data through a Salesforce API integration. The stewards were given the ability to:</h3> <ul> <li>Edit and update library details in real time</li> <li>Upload photos of their Little Free Library</li> <li>Alert users when their library needs book donations or has just added books</li> <li>Post a message for visitors</li> <li>Enable a virtual guest book to interact with visitors</li> </ul> </div> </div> </section> <section class='detailed-service'> <div class='content'> <div class='centered'> <div class='text-container flex-basis-100'> <h3>By giving stewards the ability to create and edit their specific library’s information, LFL staff was relieved of this data management and a valuable resource was returned to its small team: time.</h3> </div> </div> </div> </section> <section class='pull-quote'> <div class='content'> <p class='quote'>“One big cost savings was staff time. Our old, clunky process involved having users submit information through an online form, which then had to go through staff approvals. Any revisions involved resubmitting that same form. It was a mess and very time-consuming. 20 - 25 staff hours per week went into managing it. Plus it wasn’t a good experience for stewards, so that damaged our relationship with them, and stewards are the heartbeat of Little Free Library. <strong>Building the app wasn’t just about streamlining internal processes, it was very much a service to stewards and the LFL community who share books through Little Free Libraries. </strong> ”</p> <p class='byline'>MEGAN HANSON, SENIOR DIGITAL PRODUCER</p> </div> </section> <section class='detailed-service bottom-padding'> <div class='content'> <div class='image-container flex-basis-100'> <img alt="Person holding iPhone using the Little Free Library app" src="/assets/projects/little-free-library/little-free-library-section-img-9b2865d7e751d0d3cd0e227b3785cafd19e3ce103ccb5b7512219220a7f83cec.jpg" /> </div> </div> </section> <section class='detailed-service'> <div class='content'> <div class='text-container flex-basis-100'> <div class='header'> <h2>Results</h2> </div> <div class='body'> <p>The app has been received very positively by the LFL community with App Store reviews calling it “a must-have for LFL users” and “well thought out and easy to use.”</p> <p>When the app publicly launched, it surpassed 18,000 installs in its first two weeks. It continues to see 300 - 700 daily installs and averages over a 4 star rating on the App Store.</p> </div> </div> </div> </section> <section class='pull-quote'> <div class='content'> <p class='quote'>“I think one really telling metric is that only about 2% of people who’ve downloaded the app have contacted us with questions or problems. That’s really amazing. <strong>It means the app is intuitive and the workload for our small staff is manageable.</strong>”</p> <p class='byline'>MEGAN HANSON, SENIOR DIGITAL PRODUCER</p> </div> </section> <section class='detailed-service'> <div class='content'> <div class='centered'> <div class='text-container flex-basis-100'> <h3>The Little Free Library app is available for download on <a href="https://apps.apple.com/us/app/little-free-library/id1555760218">iOS</a> and <a href="https://play.google.com/store/apps/details?id=org.littlefreelibrary.littlefreelibrary">Android</a> devices.</h3> </div> </div> </div> </section> <section class='pull-quote'> <div class='content'> <p class='quote'>“JMG has been awesome to work with, and I highly recommend them!<strong> Working with JMG has been like welcoming a team of developers into our organization. They were always accessible and quick to answer questions.</strong> I particularly appreciated their efforts to take complex decisions about technology and break it down into layman's terms so we could understand the pros and cons.”</p> <p class='byline'>MEGAN HANSON, SENIOR DIGITAL PRODUCER</p> </div> </section> </div> </div> </div> <div class='newsletter-signup' style=''> <div class='content'> <h2> Join our newsletter community </h2> <p class='newsletter-paragraph'> It’s a mixed bag of getting to know us better and best practices for developing mobile-first software. We're never salesy, and we're always mindful of your privacy. </p> <p class='form'> <form class="newsletter-signup-form" action="/newsletter_signup" accept-charset="UTF-8" data-remote="true" method="post"><input name="utf8" type="hidden" value="✓" /> <input type="hidden" name="referring_page" id="referring_page" value="pages-projects/little-free-library" /> <div style='display:flex;justify-content:center;'> <div> <label for="first_name">First Name*</label> <input type="text" name="first_name" id="first_name" placeholder="First Name" required="required" /> </div> <div> <label for="last_name">Last Name*</label> <input type="text" name="last_name" id="last_name" placeholder="Last Name" required="required" /> </div> <div> <label for="email">Your Email*</label> <input type="text" name="email" id="email" placeholder="Email" required="required" /> </div> </div> <input type="submit" name="commit" value="Join" class="button blue-button" data-disable-with="Join" /> </form> </p> <div class='loading'> <div class='loader'> <!-- Just a second... --> </div> </div> <p class='errors'> Oh no, there was an error with your email! </p> <ul class='the-errors'> <li></li> </ul> <p class='success'> Hey, thank you so much for signing up! We've got your address saved, so look forward to an email from us soon. 🎉 </p> <p class='privacy'> <a href="/privacy">We respect your privacy.</a> </p> </div> </div> <footer> <div class='left'> <div class='menu-row'> <p>Quick Menu Links</p> <ul> <li><a href="/home">Home</a></li> <li><a href="/about">About</a></li> <li><a href="/services">Services</a></li> <li><a href="/pricing">Pricing</a></li> <li><a href="/partners">Partners</a></li> <li><a href="/how-to">How-To</a></li> <li><a href="/contact">Contact Us</a></li> </ul> </div> <div class='menu-row'> <p>More from JMG</p> <ul> <li><a href="/blog">Blog</a></li> <li><a href="https://constantvariables.co">Podcast</a></li> <li><a href="/resources">Resources</a></li> <li><a href="/careers">Join our team</a></li> <li><a href="https://clutch.co/profile/jed-mahonis-group#reviews">Client reviews</a></li> </ul> </div> <div class='menu-row'> <p>Connect With Us</p> <ul> <li><a href="/contact">Contact Form</a></li> <li><a href = "mailto: info@jedmahonisgroup.com">Email us</a></li> <li><a href="https://jmg.mn/chat">Schedule a chat</a></li> <li>Call us: <a href="tel:6122083872">612-208-3872</a></li> </ul> </div> </div> <div class='right'> <div class='logo'> <img src="/assets/JMG-logo-black-0087191651dce4487b1613276521cf93cdbcf0cee8b5ca9ebde151e3c923ba45.svg" /> </div> <p class='copyright'> © 2023 The Jed Mahonis Group, LLC. </p> <div class='social-links'> <ul> <li> <a aria-label="JMG on LinkedIn" href="https://linkedin.com/company/the-jed-mahonis-group"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><path d="m416 32h-384.1c-17.6 0-31.9 14.5-31.9 32.3v383.4c0 17.8 14.3 32.3 31.9 32.3h384.1c17.6 0 32-14.5 32-32.3v-383.4c0-17.8-14.4-32.3-32-32.3zm-280.6 384h-66.4v-213.8h66.5v213.8zm-33.2-243c-21.3 0-38.5-17.3-38.5-38.5s17.2-38.5 38.5-38.5c21.2 0 38.5 17.3 38.5 38.5 0 21.3-17.2 38.5-38.5 38.5zm282.1 243h-66.4v-104c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9v105.8h-66.4v-213.8h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"></path></svg> </a></li> <li> <a aria-label="JMG on Facebook" href="https://facebook.com/thejedmahonisgroup"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><path d="m400 32h-352a48 48 0 0 0 -48 48v352a48 48 0 0 0 48 48h137.25v-152.31h-63v-71.69h63v-54.64c0-62.15 37-96.48 93.67-96.48 27.14 0 55.52 4.84 55.52 4.84v61h-31.27c-30.81 0-40.42 19.12-40.42 38.73v46.55h68.78l-11 71.69h-57.78v152.31h137.25a48 48 0 0 0 48-48v-352a48 48 0 0 0 -48-48z"></path></svg> </a></li> <li> <a aria-label="JMG on Instagram" href="https://instagram.com/jedmahonisgroup"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><path d="m224.1 141c-63.6 0-114.9 51.3-114.9 114.9s51.3 114.9 114.9 114.9 114.9-51.3 114.9-114.9-51.3-114.9-114.9-114.9zm0 189.6c-41.1 0-74.7-33.5-74.7-74.7s33.5-74.7 74.7-74.7 74.7 33.5 74.7 74.7-33.6 74.7-74.7 74.7zm146.4-194.3c0 14.9-12 26.8-26.8 26.8-14.9 0-26.8-12-26.8-26.8s12-26.8 26.8-26.8 26.8 12 26.8 26.8zm76.1 27.2c-1.7-35.9-9.9-67.7-36.2-93.9-26.2-26.2-58-34.4-93.9-36.2-37-2.1-147.9-2.1-184.9 0-35.8 1.7-67.6 9.9-93.9 36.1s-34.4 58-36.2 93.9c-2.1 37-2.1 147.9 0 184.9 1.7 35.9 9.9 67.7 36.2 93.9s58 34.4 93.9 36.2c37 2.1 147.9 2.1 184.9 0 35.9-1.7 67.7-9.9 93.9-36.2 26.2-26.2 34.4-58 36.2-93.9 2.1-37 2.1-147.8 0-184.8zm-47.8 224.5c-7.8 19.6-22.9 34.7-42.6 42.6-29.5 11.7-99.5 9-132.1 9s-102.7 2.6-132.1-9c-19.6-7.8-34.7-22.9-42.6-42.6-11.7-29.5-9-99.5-9-132.1s-2.6-102.7 9-132.1c7.8-19.6 22.9-34.7 42.6-42.6 29.5-11.7 99.5-9 132.1-9s102.7-2.6 132.1 9c19.6 7.8 34.7 22.9 42.6 42.6 11.7 29.5 9 99.5 9 132.1s2.7 102.7-9 132.1z"></path></svg> </a></li> <li> <a aria-label="JMG on Twitter" href="https://twitter.com/jedmahonisgroup"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><path d="m400 32h-352c-26.5 0-48 21.5-48 48v352c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48v-352c0-26.5-21.5-48-48-48zm-48.9 158.8c.2 2.8.2 5.7.2 8.5 0 86.7-66 186.6-186.6 186.6-37.2 0-71.7-10.8-100.7-29.4 5.3.6 10.4.8 15.8.8 30.7 0 58.9-10.4 81.4-28-28.8-.6-53-19.5-61.3-45.5 10.1 1.5 19.2 1.5 29.6-1.2-30-6.1-52.5-32.5-52.5-64.4v-.8c8.7 4.9 18.9 7.9 29.6 8.3a65.447 65.447 0 0 1 -29.2-54.6c0-12.2 3.2-23.4 8.9-33.1 32.3 39.8 80.8 65.8 135.2 68.6-9.3-44.5 24-80.6 64-80.6 18.9 0 35.9 7.9 47.9 20.7 14.8-2.8 29-8.3 41.6-15.8-4.9 15.2-15.2 28-28.8 36.1 13.2-1.4 26-5.1 37.8-10.2-8.9 13.1-20.1 24.7-32.9 34z"></path></svg> </a></li> </ul> </div> </div> </footer> <a class='scroll-to-top hidden'> <img style="height: 1rem;" src="/assets/up-arrow-63c56e297bce6337f40a09c7ed8791e6ca02682955ae3d50acfefc4be5184863.svg" /> <br> Back to top </a> </body> </html> <script> const showOnPx = 100; const backToTopButton = document.querySelector(".scroll-to-top") const scrollContainer = () => { return document.documentElement || document.body; }; document.addEventListener("scroll", () => { if (scrollContainer().scrollTop > showOnPx) { backToTopButton.classList.remove("hidden") } else { backToTopButton.classList.add("hidden") } }) backToTopButton.addEventListener("click", scrollToTop); </script>