Using an App to Reduce Children’s Screen Time

Gamifying language arts like it was a fantasy football league

Michael Barnes
4 min readSep 25, 2020

The App in question, Story Squad, was founded by Darwin Johnson and Graig Peterson. Darwin is a graduate of Lambda School’s inaugural Data Science cohort, and Graig is a former classroom teacher researching at a Ph. D level correlating elementary students’ storytelling with their game theory bargaining.

In today’s day and age of COVID-19, with parents working and kids learning from home, parents are desperate to find ways to keep their children occupied so they can get the work done that they need to do. The easy thing to do would be to just park the kids in front of a screen, but, if you let them, the kids would play Fortnite or watch YouTube all day. It’s already hard enough to get some kids to read for the recommended 30 minutes per day. That’s where Story Squad comes in.

Story Squad aims to make reading, writing, and drawing FUN for upper elementary students all over the world, by “gamifying” their language arts learning through friendly competition. This will maximize kids’ “Time-in-Creative-Mode” offline with pencil and paper, not Time-On-Device. This gives parents a guilt-free break, and teachers another tool for remote learning. The kids start the week off by reading a chapter of an ongoing story, after reading they will be tasked with writing their own “side quest” along with a picture to go with it, all by hand. At the end of the week, kids will be placed in teams and go head-to-head with other teams to win points for themselves by voting for the best stories and illustrations.

Laying the Foundation

Starting from scratch, my team and I had two months to create the foundation of what this app would be. Our first Release Canvas (or RC) was to layout the login and user flow. We knew we would use certain technologies like, React, Okta, ant.design, and we would use an express.js backend. As we were divvying up tasks, I was tasked with creating the dashboard the parents would be interfacing with. The parents would be able to log in with their email and password, add their children to their account, and eventually be able to handle their subscription with the app (coming with our second RC.)

The first question to answer was how the app would navigate the parents and children to the appropriate screen after login? My solution was to create a parent dashboard component that could situationally render the two dashboards depending on who logged in. The first pass worked well, we set state in the app depending on who logged in (whether it was a parent or a child) and rendered the appropriate dashboard from there. But that produced a new question. As this app grows, possibly needing many different types of dashboards (including admin dashboards), is a long if-else block really the best solution? The answer was no. If the need for many pages to be situationally rendered depending on the state arose the if-else block could potentially take a long time to render; which is never favorable. The solution came in the form of a dictionary. We would be able to pass in our user state directly into that dictionary and render the component needed at that time. This not only looks cleaner with less “fluff” but would perform better at render. If the need to render even more pages from this dashboard ever came up, this would allow for easy scaling in the future.

Uploading UGC

The next challenge the team faced was in uploading the user-generated content that would be coming through that app. After much deliberation, we decided to use a combination of the multer library and AWS services in the form of an S3 bucket. The plan was to grab the files from the front end and save everything within the bucket the team had set up with AWS. From there, we would send these files off one by one to our Data Science team, who would analyze the writing and drawings of the users and send back a writing complexity score along with any moderation pings. Surprisingly, this was fairly simple on the backend.

Single file upload with multer.

Multer gave us the ability to upload images through a simple post router by just using their middleware. This in return gave us a way to easily send off all the files needed to the Data Science team for moderation and scoring.

What the Future Holds

At the end of Labs, the App is now able to log users in, children and parents can navigate their respective dashboards. Children can read their short stories in the form of PDF and parents can add their children to their accounts.

The future of this App looks bright, the next step is to allow the children to upload the stories and images they create. We’re working closely with Data Scientists to not only moderate the content that is uploaded but will allow us to group children together based on their writing complexity for more even games. From there the children would be placed in teams to go head-to-head and match up with their peers by allotting points to the stories and images they think are best. All the while the parents will be able to track the progression of their children in a non-intrusive way. Also, there will be options to subscribe to the app using Stripe services.

It has been an absolute honor working with Story Squad and the team of developers associated, and I can’t wait to see where we can take the app in the future!

--

--