Progeny

A website that connects distanced family members through virtual storytime.

Overview

Project Brief

This project was completed as a part of the Codeup Full Stack Web Development program. Progeny is a full-stack web application that allows users to create and save recordings of children’s stories to be played for their kids and grandkids. It uses Java with a SpringBoot framework. This project saves the stories in a MySQL database and implements many different APIs to offer a high-quality user experience.

The Challenge

During the last few weeks of the course, you’ll work in a group of 3-4 developers to build a full-stack web application from the ground up. In addition to building the application, you’ll also compile a presentation for Developer Day, a public event organized by Codeup staff to help you network with employers and community members.


The Problem

During a time of distancing, it has become apparent that virtual communication between family members is crucial to maintaining our healthy relationships.

The Goal

The progeny application would allow distanced family to record audio bites of themself reading a story to their child/grandchild, which can then be played/downloaded by their connections to be used during storytime. Distanced family would include relatives, deployed military parents, divorced parents, and parents who travel long distances for work trips. The application will also provide certified storytellers the opportunity to read stories to the progeny communities — think reading rainbow.

My Team

My team members included,

My Role

My Front End Developer role collaborated with other developers to conduct create style guidelines, sketch wireframes, build a full-stack web application, and present website to key stakeholders.

My role responsibilities included,

  • Logo Design

  • Book Mockups

  • User Personas

  • Color palette

  • Typography

  • Low-fidelity Wireframes

  • Wireflow

  • Connection Between Users Development

  • Home Page Development

  • Library Page Development

  • Account Details Development

  • Website Deployment

Research / Observe

Stage One - Empathize

Identifying Competitors

We identified some direct and indirect competitors to study how they approach the topic of virtual storytime. This research was conducted through numerous google searches that utilized various keywords related to our problem. We tried to search for these sights as a parent would search for a solution to this particular problem.

For this search we used keywords such as,

  • Children

  • Audio

  • Family

  • Storytime

  • Bedtime

  • Listen

  • Record

Key Findings

  • My Storytime, a direct competitor, allows its families to pre-record stories from anywhere, and play them back with the Google Assistant.

  • My Moonlight, an indirect competitor, combines traditional storybooks with modern technology — HD projections, sound effects, read-a-long features and more.

Hypothesize

Stage Two - Define

Hypothesis

We believed that creating a web application that enabled distanced family members to share their audio recordings with loved ones or publicly to others registered on the site and allow for the ability to maintain downloadable files of elder stories, terminally ill family member readings, etc. would give families the opportunity to build/maintain bonds during the COVID-19 pandemic.

Persona Hypothesis

Based on our collective experiences I set up two user personas. We referred to them throughout the entire product development process.

These personas defined two audience segments — adult family members and professional storytellers.

User Stories

For our user stories, we had three different user roles that we kept in mind when developing to ensure we built the site with features that served the users desired outcome. We used the template,

As a (who wants to accomplish something)

I want to (what they want to accomplish)

So that (why they want to accomplish that thing)

These are the user stories we used to guide our sites functionality,

Unregistered User (Visitor)

  • As a visitor, I would like to view a list of public stories as well as listen to public stories so that I can see what stories are available before I sign up.

  • As a visitor, I would like to create a private account so I can record private audio bytes for my kids and share them with friends and family.

  • As a visitor, when I complete the registration form I expect/want to be told that I have successfully registered and be directed to a welcome screen (my profile).

Registered User

  • As a user when I click on the forgot my password link I expect/want the ability to fill out my email address and have a password reset email sent to me that allows me to reset my password.

  • As a user I would like to navigate to my profile from any page by clicking a link in the navigation bar.

  • As a user I would like to listen to my own recordings and view my connections recordings

  • As a user I would like to delete my own recordings if I so choose to

  • As a user I would like to receive notifications that I received a new story sent to me

  • As a user I would like to search for different users and family members to connect with and send a request to be a connection

  • As a user I would like to confirm or deny connections request so that I can filter who friends me

  • As a user I would like to view a list of all my connections

  • As a user I would like to remove a connection

  • As a user I would like to view my account information

  • As a user I would like to update my account information

  • As a user I would like to delete my account

  • As a user I would like to sign out of our account

Admin

  • As an admin I would like to delete users

  • As an admin I would like to add stories to the story catalog

  • As an admin I would like to view a list of all users

  • As an admin I would like to delete a book from the catalog

  • As an admin I would like to see a list of all books currently in the catalog

Database Design

This was a critical step in our process as it defined how the backend portion of our web application would operate. The design for our database when through dozen of reviews and iterations before we finalized it.

The most difficult part was nailing down how we were going to connect user accounts to one another.


Ideate

Stage Three - Ideate

Wireframes

As we progressed in our process, I created the low-fidelity wireframes using wireframe.cc. These wireframes informed each page layout as we developed the website.

Wireflow

The use of a wireflow helped the team understand user interactions as it is a combination of a user flowchart and wireframes. These wireflows also increased our collaboration as everyone understood the ideal flow of user interactions throughout the site. We referred back to this flow on numerous occasions to check our work.

Implement

Stage four - Test

Result

The final web application was completed within our timeframe. We opted to save some features for future development due to the tight schedule.

To present the web application to our live virtual audience, we created a video recording of our introductions and segmented our demonstration video by various user stories objectives. These video clips were then processed by Codeup staff and presented to a live virtual audience via Zoom.

You can view the website we developed by clicking here.

You can view our presentation video on Youtube by clicking here.

What I learned from this project

My biggest fear during this project was that our team was too small for the task at hand. However, our use of the Kanban method helped us organize and stay on top of deadlines — reducing the amount of delays and confusion.

Two major problems we faced were developing this project virtually and finding a good EPUB reader API. We overcame the virtual aspect with continuous zoom calls and slack messaging. The EPUB reader API took some trial and error. The first version we tried was in japanese. The Google page translation helped a tad but we ran too close to our deadline trying to figure this out and went with an alternate plan b embedded iframe EPUB reader.