SnoozeSense
A mobile application that helps users maintain a more consistent sleep schedule.
Product Experience
Problem Space
How can we help individuals managing stress and various factors establish a more consistent sleep routine, leading to enhanced overall well-being?
Problem Background
I sometimes have a hard time falling asleep. I am a university student who has to pull all-nighters to complete assignments, study for exams and so on. This has led to me having an inconsistent sleep schedule. Occasionally I sleep at 10pm, other times I could struggle to sleep at 3am. In order to get a better and healthier sleep schedule, an application will need to be made that can purposely set schedules and reminders for sleep and also actively encourage you to go to bed. This application will be called SnoozeSense.
In today's fast-paced world, an increasing number of individuals are grappling with sleep-related issues that can have a profound impact on their physical health, mental well-being, and overall quality of life. Modern lifestyles, demanding schedules, and the prevalence of digital devices have contributed to disrupted sleep patterns and poor sleep quality for many. Insufficient sleep and irregular sleep schedules have been linked to a range of health concerns, including fatigue, decreased cognitive performance, mood disturbances, and even chronic conditions like obesity and cardiovascular diseases.
Research Insights
User Pain Points
From the interviews conducted, these are the pain points we realised:
- It is hard to maintain a consistent sleep schedule due to school or work demands.
- High phone usage leads to procrastination which leads to late nights
- It is difficult to feel motivated to sleep on time
Feedback
We conducted many interviews and these are our findings:
- The respondents all had an inconsistent schedule.
- The respondents did not use sleep tracking applications.
- The respondents had a routine before they sleep.
From the interviews that were conducted, people tend to have an inconsistent sleep schedule due to phone usage, work requirements or studies. These are all life activities that could cause us to not sleep at the time that we should. Another reason. From the interviews, why people do not sleep on time is due to stress. In a recent article, it is stated that stress is one of the main factors of sleep deprivation due to it stopping the mind and body from relaxing. The stress could come from work, school, relationships, and so on and so forth.
Solution Explanation
Based on our target users’ pain points, we knew we wanted to work on the following features:
- In order to alert the users when they need to get ready to sleep, we have implemented a feature that lets them set their pre-sleep routines like brushing their teeth, taking off their make-up, etc and also lets them set their bedtime and wake up time. It also sends them a notification when it is time for them to start their routine and also when it is their bedtime.
- In order to motivate the users to sleep better, we have implemented a feature that gives them challenges daily/weekly to complete.
- In order to help the users curb procrastination, we have implemented a feature that lowers the brightness of the phone when it is bedtime and increases the brightness of the phone when it is wake up time.
Lofi Mockups
Hifi Mockups
Iterative Design Learnings
Users responded well to:
- Visual Design: users enjoyed the dark mode, color palette and icons. Felt it made the app enjoyable to use, and added personality to the app.
- Simple and Straightforward Steps: Specifically in the onboarding steps, and task creation users felt that each step was necessary with great visual cues and clear information as to what to do and what step the user was at.
- Making Changes: Users appreciated the ability to either edit or “set up later” when setting up their alarms, creating a task or editing their sleep schedule.
Users didn’t respond well to/were confused about:
- Having set times for night routine: Some users felt that having a set “start” and “end” time when creating a task for their night routine felt too strict and not realistic in terms of their daily night routine.
- How to improve: With this, it may be best to have users input a start time for the task, and have the end time optional so that users can have a flexible routine and not feel tied down to certain schedule while still keeping the user accountable in their tasks by reminding them when the task starts.
- Challenges: When some users first opened the app, they asked the question to themselves, “what are the challenges?” but then when they looked through the Challenges page more they realised what it is and meant.
- How to improve: To improve this, maybe having a short description or either an example of a challenge on the home page show up (for users with no challenges started) so that at first glance, visually they get an understanding of what the challenges are and how they would look when the user starts one.
Implementation Details
Technical implementation
Where is it hosted?
In development, it is hosted on Expo Go if one of the devs has it running. We are currently working on getting the paperwork in order to submit the app to the Google Play Store. The app will be available for Android only.
What is your tech stack?
Authentication: Firebase Authentication
Database: Firestore
Front end: React Native & Expo
High level journey of a request
Conceptualization: A key feature is identified by the team (i.e. user authentication)
Planning:
- Feature is prioritised based on necessity (i.e. authentication = high priority)
- Devs decide who will start the feature.
- Dev researches available tech, requirements & constraints (i.e. Firebase Authentication pros and cons)
Development: Dev codes up the feature. If one hits a snag, they do more research or ask the other dev for support. If they get very stuck, the devs swap tasks. If a task is still stuck, it will be shelved in favor of starting more features
Testing: Devs test each other’s features before merging it into the main project
Merge: If everything looks ok we merge the feature into the main project.
Technical challenges
What was the hardest part of development?
Learning a whole new framework and tech stack while building an app
Does your app have any scaling issues?
- One of the biggest scaling issues for now is the lack of a well-defined API. We currently have several ways to get/post to and from the database or authentication services, and methods that restrict the data that can be sent, but they can be easily sidestepped even accidentally.
- Firebase will charge us money if we surpass a certain amount of read/write requests per day and we don’t have a budget.
What are some key takeaways?
- Iterative Development: breaking down features into manageable, incremental steps where we can ensure each component receives enough attention before moving onto the next.
- Effective Prioritisation: Prioritising features based on their impact and importance to let us allocate our resources more efficiently
- Regular Refinement: Continuous evaluation and refinement of our project roadmap so we can adapt to requests and our own learning curves
Future Steps
We will be continuing in the development of the application, and adding more features to make sure it meets all the needs of the users.
Learnings
Product Manager Learnings:
Bolu Yomi-Adeyemi
Co.lab was a very interesting experience for me. I not only learnt, but was able to work in a team to conduct user research, prioritise features and produce spec documents. I really enjoyed writing spec documents. It was good interviewing potential users to understand their pain points and formulate user stories. I also enjoyed working with the designer and developers. They are very talented people who know what to do and how to do it. This experience showed me how much communication and teamwork are important in order to properly work in a product team.
Designer Learnings:
Lea Inouye
Having the opportunity to work in a cross functional team through Co.Lab has helped me grow as a designer. Working with our product manager and developers, it has helped shape my understanding as to what goes into creating and shipping out a well rounded product- a product that not only meets users needs from a product designer perspective, but one that aligns with the “company’s” vision and is technically feasible. I am grateful for this experience, getting to be a part of a team where we can support, learn and challenge one another to do our best to create a product that solves a problem and is meaningful to users.
Designer Learnings:
Jo Sturdivant
- Adapting to an Established Team: Joining the team in week 6 of 8 was challenging, as I had to quickly adapt to existing workflows, dynamics, and goals. This mirrors real-world situations where you often integrate into teams mid-project, and flexibility is essential.
- Work-Blocking for Efficiency: With only two weeks to complete the project, I learned the importance of a structured work-blocking system. This approach allowed me to manage my time effectively and meet deadlines under pressure.
- Making Data-Driven Design Decisions: Unlike my past projects, I had to rely on research conducted by others. This was a valuable experience in using pre-existing data to guide design decisions, helping me focus on the core insights without starting from scratch.
Developer Learnings:
Maria Panagos
Taking on the full development of an app was quite the challenge. It really highlighted the importance of teamwork and keeping each other accountable. Our Project Manager's weekly meetings and daily check-ins kept us on track, while the creative input from our designers brought a great aesthetic to the project. As a dev team, we learned to lean on each other, helping out where one of us had weaknesses. It was a collaborative effort that helped us navigate through the challenges and move the project forward.
Developer Learnings:
Vanady Beard
&
As the back-end developer, I learned how important it is to create efficient and reliable systems that support the entire application. This experience also taught me the importance of optimising the database and ensuring the backend is scalable and easy to maintain.
Developer Learnings:
Stephen Asiedu
&
As a back-end developer, I've come to understand the importance of being familiar with various database systems and modules. This knowledge enables me to build diverse applications and maintain versatility in my work. I've also learned that the responsibility for making the right choices rests on my shoulders, guided by my best judgement.
Developer Learnings:
Josh Guttierez
&
Co.Lab has been an invaluable learning journey! Being part of a cross-functional team has enriched my understanding of collaboration and working together to refine our product’s vision. Our product manager and designer’s work elevated my understanding of a genuinely user-centric design, and their thoroughness and attentiveness made many parts of development easier. As a dev, I learned the importance of effectively communicating with technical specs, vision boards, and regular check-ins to prioritise key features and keep the team on the same page. During development, it was both demanding and fulfilling to learn new technologies and apply them on the fly, and I am excited to take those hard skills with me as well. I’m very grateful to have been part of this project and am looking forward to seeing what my very capable teammates do next!
Developer Learnings:
Maurquise Williams
&
- Process of Creating an MVP: Developing a Minimum Viable Product (MVP) taught me how to focus on delivering core functionalities balancing between essential features and avoiding scope creep.
- Collaboration in a Real-World Tech Setting: This experience taught me how to collaborate efficiently in a fast-paced tech environment, keeping the team aligned and productive, even while working remotely across time zones.
- Sharpening Critical Thinking and Problem-Solving Skills: This experience honed my ability to think critically and solve problems efficiently. By tackling challenges and finding quick solutions, I sharpened my decision-making and troubleshooting skills in a dynamic, real-world setting.
Developer Learnings:
Jeremiah Williams
&
All in all this experience was very awesome I learned that in coding with others being transparent is key
Developers Learnings:
Justin Farley
&
I learned how important communication is when working with a team. Communication provides understanding, advice, ideas, and much more. While working with the product team, I’ve found that communication keeps everything flowing smoothly. Working with a team also showed me that every member brings something different to the table and we all have to work together in order to align and meet our end goal.
Full Team Learning
As a team, we learnt how to communicate very well and also prioritise functions. We also learnt that everyone’s ideas and contributions are valuable and nobody can do everything on their own without others.