Project Deployment via Expo.io
Comfy Classroom is intended to be a moble resource for teachers as their student retrun to the classroom. It has the ability for tecahers to jot down notes about their students (which are then rendered in an easy-to-access scrollable list), refer back to them on an as-needed basis, and additionally flag which students may require additional academic assistance.
Comfy Classroom's component hierarchy is straight-forward. App.js imports Welcome.js, Headerbar.js and StudentAdd.js, the latter hosting the "meat" of the application. StudentAdd.js was the most demanding to build. I My data (here, a given class' students) is stored as an array of objects. The appropriate indicies are matched using a filter function so that the user selection corresponds with the intended student. The roster is passed into the details modal, displaying the inputed strings from when the object was created by the user.
In Welcome.js, two buttons at the top of the home page allow the user to access the instruction and resource modals. This code was straightforward, albeit somewhat rote to write. All resources are accessed via React Native's linking component and are wrapped in a Touchable Opacity component to mimic a traditional hyperlink.
In the below section I document the development process for this application.
This app was inspired by conversations with my sister, an 8th Grade Civics teacher in Chelsea, MA. Having told me on numerous times how many of her students are apprehensive about returning to in-person instruction, I built this app to serve as a go-to dashboard for teachers as their classrooms return to normalacy. Her students were hit incredibly hard by the COVID-19 pandemic, both in-terms of the personal
Given my interest in purusing a role in product management, I chose to approach this project in a manner, that based on my current understanding of the role, would provide a simulation of what a PM's role in such a product may be. Obviously my focus was still on engineering this application, but I chose to monitor my progress with the project, and in a somewhat contrived manner, held myself accountable as a PM might do for their team. Following discussion of my code I've prepared some brief thoughts regarding my experience "managing" this product. For more detail thoughts, feel free to look at my Dev.to post.
To the extent possible, I wanted this project's ultimate outcome to be delivery of a product that satisfied users' needs. How did I identify these needs? Prior to beginning design / development of my application, I leaned on my network to solicit input from actual teachers. I used SurveyMonkey with the intention of assesing the following:
- Can I identify my userbase? Do survey respondants intend to use my app, and with what frequency? What would inhibit usage?
- Can I categorize how respondants believe their students feel about returning to in-person instruction?
- What features would educators find most valuable to include in an application that target teachers providing in-person instruction?
First and foremost, it's important to state that my survey's utility suffered from:
- A smaller than anticipated (n=10) sample size
- Fewer than 40% of respondents know me personally and that may have introduced bias into my results
- Inability to ask more than 10 questions and use all question formats (I did not pay for a premium product from SurveyMonkey), forcing me to rely on more qualitiative questions
Regarding the above survey objectives, I feel as though I was most successful in
- Learning how my respondants percieve the shift back to in-person instruction and how they believe their students feel about this transition
- Learned which proposed features my users would find most valuable
I was surpised to learn that my respondants did not feel that their students were particularly concerned about returning to the classroom. The majority of respondants believe their students are neutral/ambivalent about returning to class.
I was surpised to learn that my respondants did not see any use in a chat feature in the application. As detailed in my original project proposal, I had originally wanted to use Socket.io to incorporate a live chat where students could anonymously communicate their concerns to teachers. Not a single respondant prioritized this feature. Rather, my sample equally weighted the importance of my other three proposed features. Needless to say, this dictated my design and engineering process greatly (and admittedly) made me feel a little less concerned about shipping my app by the 04/11 deadline.
Lastly, my survey confirmed the utility of this application (albeit, as mentioned above, answers could have been shaped by bias). Just under 80% of my respondants said that this application, if shipped with the proposed features, would provide a better understanding of how their studetns are feeling.
The above survey provided me with a springboard for figuring out what my userbase (teachers) would find useful in my app. Based on the survey results, I drafted the following User Stories to guide my build:
As a user, I want
- to use an application that lets me know which students require additional emotional and academic support.
- to have a clean and seamless mobile experience.
- to have an app that displays students' status, whether it be pertaining to academics or emotional state.
I added the following user stories to supplement the above: As a user, I want
- to be provided with accurate (no political bias) and useful resources for educators
- to be provided with clear instructions for app usage
- to have the ability to take detailed notes about my students
Having worked through my user stories, I developed the following description of my MVP:
Comfy classroom will be a mobile application intended to serve as a quick reference and aid for teachers. The app will revolve around an "attendance-like" list where teachers can set statuses for their students and refer back to them on an as-needed basis. The application will additionally have easy-to-access resources (perhaps Youtube videos from CDC, DOE, local shool district, etc) and an instruction section. This application must be shipped by 10 AM EST 04/12
I consulted the resources below as I built this application. I've attempted to categorize them to serve as a future React Native resource for myself.
- React Native - The Practical Guide [2021 Edition] Created by Academind by Maximilian Schwarzmüller , Maximilian Schwarzmüller
- Setting up the React Native Environment
- Expo Documentation
- Stack Overflow - Rendering two items in flatlist
- Stack Overflow - Index Manipulation w/ React Hooks
- React Native Hooks - Best Practices