Git Product home page Git Product logo

21f-breeze's Introduction

Breeze

Welcome to Breeze! We are an iOS app designed to help you reduce your screentime with positive reinforcement. Users can set a total screen time limit, and Breeze will send a notification invitation to our game when users meet that limit. Accepting these notifications means progressing farther in the game and discovering new islands!

Read our Medium article.

Authors

Dartmouth College class of 2022 Computer Science majors Sabrina Jain, John Weingart, Katherine Taylor, Grant Dumanian, Laurel Dernbach (shown left to right).

Architecture

Breeze is an iOS app developed in Xcode 13, written with Swift 5 and Apple SpriteKit.

Deployment

Breeze is designed to run on an iPhone with iOS 14.4 or greater.

Download Breeze on the Apple App Store.

To deploy from this repository:

  1. With a MacOS supported device with Xcode installed, clone this repository locally.
  2. Connect an iOS supported device-preferably an iPhone-to the computer. Xcode iOS simulators are not able to mimick the CoreMortion game behavior.
  3. At the top of the Xcode window, there should be a drop down menu with device options for building the app. Select the plugged in device and build!

Acknowledgments

Thank you Tim Tregubov and the Dartmouth College Department of Computer Science for giving us the time and space in our coursework to problem solve issues we all personally face and pursue our development interests!

21f-breeze's People

Contributors

sab747 avatar jrweingart avatar grantrdumanian avatar kattaylor22 avatar github-classroom[bot] avatar

Watchers

James Cloos avatar Jared Cole avatar  avatar

Forkers

sab747

21f-breeze's Issues

Obstacles

Add randomly generated obstacles to background so that the user has to try to tilt the phone in order to avoid them. Also make sure that the ship interacts with obstacles that it runs into in some manner.

User Persona: Scatterbrain Sally

scatterbrain sally

ADHD Venn Diagram

Background and Demographic Information

  • Nickname: Scatterbrain Sally
  • Demographics: Adolescents and young adults with ADHD
  • Overheard quote: Watching squirrels "Oh look! A social media app!"

Narrative

  • Scatterbrain Sally is a sophomore in college majoring in econ. Like a signficant portion of students at the college, Sally has been diagnosed with ADHD. Having ADHD already makes it hard for Sally to write their papers for the distribs she is taking that term (on top of having to balance recruiting, replying to friends, etc). However, having ADHD also makes Sally susceptible to social media addiction as it's an easy task that offers endless distraction. Furthermore, scrolling through social media apps like TikTok is both mindless and rewarding, which can cause Sally to stay on social media and lose track of time. Not to mention, Sally completely forgets to text back their friend to let them know that they are stuck in the stacks and can't make time for dinner that day.*

Behavioral and Dimensional Information

  • Goals and Motivations:

    • Become more mindful and aware of what they are doing (realizing that they are scrolling through social media and wasting time)
    • Break out of the infinite scroll, which can be even more so of a mind trap for someone with ADHD
    • Combat social media addiction (or any type of digital/internet addiction)
  • Tasks:

    • Super easy, visible reward randomly appearing while using social media (or a different app)
    • Simple, enticing way to exit social media and launch our app
    • Make tasks/game not seem like a chore, which is unfortunately often the case with typical mindfulness activities/apps (meditation, journaling, etc.)
  • Pain Points, Concerns, and Challenges:

    • Scrolling through social media is the type of mindless action that can become extremely addictive for someone with ADHD (what I call "hyperfocus" mode, seems counterintuitive but makes sense since social media is the perfect distraction)
    • The ADHD mind is reluctant to switch to an activity that requires more brain-power/effort compared to what the person is currently doing
    • Meditation, breathing exercises, etc. can seem daunting for someone with ADHD (especially for the hyperactive-impulsive type)
  • User Flow
    (describe a typical scenario of the user interacting with your product – this is a short ordered list of actions)

    1. Sally has a paper due tomorrow at midnight that they want to start working on
    2. Sally pulls out their phone, sees TikTok and opens the app
    3. Sally starts scrolling through TikTok and loses track of time
    4. A push notification appears after at least 15 minutes of scrolling offering an easy reward for a simple, addictive game that Sally just installed
    5. Sally clicks the push notification (super easy to do), which launches Breeze
    6. They earn a reward and are presented with options to earn even better rewards by doing a simple task (which is aimed at improving mindfulness; however, this purpose is not overtly apparent in order to fool Sally)
    7. By opening Breeze and doing a short task (< 5 minutes), the flow of scrolling through social media is broken and Sally now has the oppurtunity to jump to another activity (such as their paper)

User Persona: Fomo Franny

UserPersonaNickName

sketch/picture

Background and Demographic Information

  • Nickname: Fomo Franny
  • Demographics: middle-to-high-school aged, middle to upper class, on social media a lot
  • Overheard quote: "Instagram always makes me sad and feel like I am missing out on everything, but I just can't stop scrolling on it."

Narrative

Fomo Franny is always on social media - Snapchat, Instagram, TikTok, you name it. Without fail it makes her sad – endless streams of "friends" hanging out with each other in beautiful places makes Franny feel left out and insecure. Despite being aware of the effect these apps have on her, it's really hard for Franny to stop - she has nothing to help her break the cycle of scrolling and getting sadder.

Behavioral and Dimensional Information

  • Goals and Motivations:

    • Franny really wants to be on social media less. When she can feel herself getting sad, she'd like to be better at saying "no, I'm done for today."
  • Tasks:

    • Wants Breeze to alert her frequently (every 10/15 minutes) when she's on social media
    • Must accept push notifications after too much time on social media
    • Plays Breeze for a bit and then decides whether to go back to the social media app or take a break for a bit
  • Pain Points, Concerns, and Challenges:

    • Social media has a huge pull - it might be hard to break her of the habit
    • If Franny is really down in the dumps, a game might not be what she needs to calm her / get her into a better headspace
    • Swiping away the Breeze notification might become just another part of Franny's scrolling ritual
  • User Flow

    • Franny is scrolling on a social media app for a bit, gets a Breeze notification
    • Franny accepts the notification, plays Breeze for ~ 5 minutes
    • At the end of the level, Franny is able to return to Instagram/Snapchat/TikTok or just leave the app entirely

week 6 scrum master - Laurel

responsibilities:

  1. write and turn in the sprint summary on Sunday
  2. update README.md with progress from the week

Add Levels

Add levels that user can reach by playing the game so there is a legitimate sense of progress/motivation to keep playing the game. Ideally, each level (or set of levels) would unlock something such as a new island.

Sound Effects

Integrate sound effects into the game in order to make gameplay more enjoyable and natural.

User Persona: Productive Penny

Productive Penny

Penny with guitar

Background and Demographic Information

  • Nickname: Productive Penny
  • Demographics: Penny is a junior in college.
  • Overheard quote: "Ugh I haven't played my guitar all term"

Narrative

Productive Penny started learning to play the guitar a few months ago. She feels centered, calm, and happy when she sets aside the time to practice her music. But, Penny practices far less often than she wishes. When Productive Penny gets back to her dorm after a long day of being a student, she has the engrained habit of lying in her bed and opening up Instagram. Productive Penny feels that this time she spends on her phone is a waste of time and she wishes that she spent this time doing other things that bring her more joy, like playing guitar or even getting more sleep, but Penny finds it very hard to break this habit!

Behavioral and Dimensional Information

  • Goals and Motivations:
    • Be more productive and mindful with her time (i.e. actually take the time to practice guitar, which is something she genuinely wants to do and enjoys doing)
    • Waste less time on her phone, not doing anything productive
  • Tasks:
    • In order to be more productive/mindful with her time, Penny needs to break her habit of endless scrolling right when she gets home
    • In order to waste less time on her phone, Penny needs to be given a reminder to get off her phone after being on her phone for above an allotted amount of time and Penny needs to be incentivized to stop scrolling
  • Pain Points, Concerns, and Challenges:
    • Penny is worried about wasting so much of her time and her life doing things she doesn't find fulfilling (scrolling on her phone)
    • Penny is worried about how going on her phone has become such an instinct that is hard to stop
    • Penny has trouble breaking her habits
    • Penny has trouble recognizing when she is "endless scrolling"
  • User Flow
    • Penny gets back to her dorm and opens up Instagram
    • After 5 minutes scrolling on the app, she receives a push notification from Breeze
    • Penny clicks on the notification and opens the Breeze App
    • Penny spends <5 minutes on the Breeze app (the app provides an activity that takes no more than 5 minutes)
    • After the 5 minutes, Breeze reminds her of her goal to be more productive with her time and spend it on things she actually enjoys
    • Productive Penny practices her guitar!!

Push Notifications

Once the user has spent the predetermined amount of time on an app, send them an enticing push notification to pull them out of the app they are currently on an into Breeze.

App Scaffolding

Create new XCode project for our app with scaffolding using the SwiftUI interface. Scaffolding for our app should be configured to support the use of SpriteKit, which we will most likely be using for our game as it easily integrates with CoreMotion. Additionally, we should make sure that the scaffolding can support SceneKit with minor/zero changes if we decide to go that route. Everyone should be able to clone the repository and run the app (in a simulator) on their computer.

Configure initial app settings

Upon downloading and/or opening for the first time, allow the user to select which apps they would like monitored by Breeze and how much time they would like to give to these apps before Breeze intervenes.

Create a "punishment" system

If a user exits Breeze and immediately returns to a social app, design a way to "punish them" -- either by sending a new push notification or by taking away progress

the scatterbrain

the scatterbrain

ADHD Venn Diagram

Background and Demographic Information

  • Nickname: the scatterbrain
  • Demographics: Adolescents and young adults with ADHD
  • Overheard quote: Watching squirrels "Oh look! A social media app!"

Narrative

The scatterbrain is a sophomore in college majoring in econ. Like a signficant portion of students at the college, the scatterbrain has been diagnosed with ADHD. Having ADHD already makes it hard for the scatterbrain to write their midterm papers for the two distribs they are taking that term, on top of having to balance recruiting, doctor's appointments and replying to texts from friends/family. However, having ADHD also makes the scatterbrain suspectible to social media addiction as it's an easy task that offers endless distraction. Furthermore, scrolling through social media apps like TikTok is both mindless and rewarding, which can cause the scatterbrain to stay on social media and lose track of time. This makes it so the scatterbrain procrastinates writing their papers until the deadline is only hours away. Not to mention, the scatterbrain completely forgets to text back their friend to let them know that they are stuck in the stacks and can't make time for dinner that day.

Behavioral and Dimensional Information

  • Goals and Motivations:

    • Become more minful and aware of what they are doing (realizing that they are scrolling through social media and wasting time)
    • Break out of the infinite scroll, which can be even more so of a mind trap for someone with ADHD
    • Combat social media addiction (or any type of digital/internet addiction)
    • Prevent social media from being the perfect distraction that it currently is (mindless, easy)
  • Tasks:

    • Super easy, visible reward randomly appearing while using social media (or a different app)
    • Simple, enticing way to exit social media and launch our app
    • Options to earn more rewards (or any reward in the first place) by being more mindful
    • Make tasks/game not seem like a chore, which is unfortunately often the case with typical mindfulness activities/apps (meditation, journaling, etc.)
    • Reminder of consequences/psychological processes regarding social media use and of benefits of being more mindful
  • Pain Points, Concerns, and Challenges:

    • Scrolling through social media is the type of mindless action that can become extremely addictive for someone with ADHD (what I call "hyperfocus" mode, seems counterintuitive but makes sense since social media is the perfect distraction)
    • The ADHD mind is reluctant to switch to an activity that requires more brain-power/effort compared to what the person is currently doing
    • Meditation, breathing exercises, etc. can seem daunting for someone with ADHD (especially for the hyperactive-impulsive type)
    • Social media addiction makes it even harder for someone with ADHD to complete their work when it is already hard regardless.
  • User Flow
    (describe a typical scenario of the user interacting with your product – this is a short ordered list of actions)

    1. The scatterbrain has a paper due tomorrow at midnight that they want to start working on
    2. Scatterbrain pulls out their phone, sees TikTok and opens the app
    3. Scatterbrain starts scrolling through TikTok and loses track of time
    4. A push notification appears after at least 15 minutes of scrolling offering an easy reward for a simple, addictive game that the scatterbrain just installed
    5. The scatterbrain clicks the push notification (super easy to do), which launches our app
    6. They earn a reward and are presented with options to earn even better rewards by doing simple tasks (which are aimed at improving mindfulness; however, this purpose is not overtly apparent in order to fool the scatterbrain)
    7. Scatterbrain does at least one of these extra tasks (e.g. getting up to complete a short AR task, pausing to take a breath, etc.)
    8. By opening the app and doing a short task, the flow of scrolling through social media is broken and the scatterbrain now has the oppurtunity to jump to another activity (such as their paper)

User Persona: Overworked Owen

Overworked Owen

stress

Background and Demographic Information

  • Nickname: Overworked Owen aka Double O, closely related to Burnout Billy
  • Demographics: Anyone who is stressed and/or overworked. Often, when the to-do list piles up, it's difficult to pause or make time for yourself.
  • Overheard quote: "These days I can barely hear myself think!"

Narrative

Overworked Owen doesn't have a problem scrolling endlessly through social media-- he doesn't have time! He barely has time to take a break between meetings, and when he does, he often spends them staring at the bubbles in the office water cooler. He's tried other mindfulness apps, but they're simply not engaging or fun enough.

Behavioral and Dimensional Information

  • Goals and Motivations:
    • Owen wants to be able to take short breaks in his day that help him be more mindful and grounded as he goes about his busy day.
  • Tasks:
    • Wants to open his phone and immediately begin using Breeze (maybe gets a push notification at a designated time predetermined by him)
    • Takes <5 minutes to calm mind and think about something other than busy day
    • Exit the app feeling refreshed
  • Pain Points, Concerns, and Challenges:
    • He has trouble remembering to take time for himself
    • He gets bored easily with traditional mindfulness activities
    • His mind is going a million miles an hour and he really struggles to be present
  • User Flow
    • He opens the app (or is prompted to open the app at a certain time)
    • He engages with Breeze briefly -- plays 1 "level," approx. 5 minutes
    • He closes the app and gets back to work, feeling less stressed

week 8 scrum master - Grant

responsibilities:

  1. write and turn in the sprint summary on Sunday
  2. update README.md with progress from the week

Sprint Retrospective Term 1 - Sprint 1

  • members in attendance:

    - [x] Laurel
    - [x] Katherine
    - [x] Sabrina
    - [x] Grant
    - [x] John
    • what worked well
      • progess!!
      • Family Activity Picker View
      • Connected to Amplify successfully
      • Setup gmail and AWS password
      • Talking to Apple Support
      • Presenting mockups and getting feedback (in class, Natalie Svoboda, figma comments)
    • what didn't
      • Dartmouth wifi sucks):
      • Transitioning between views
      • Info.plist is annoying
      • Setting up on proper software (MacOS, Xcode, Apple family account(s))
    • self assessment on progress
      • where are you in relation to progress towards product and milestones?
        • collectively group feels a little behind
        • still laying down app foundation, difficulty getting everyone set up on proper software/dev tools
      • lay out each of the following weeks till end of term with brief goals for each
        • week 7:
          • setup testFlight
          • push notifications
          • screentime API
          • continuing to sharpen Swift skills
          • get familiar with AWS
          • transitioning between views/ getting buttons working
          • document git/plist.info work around
          • research SpriteKit
          • everyone make at least 1 PR
          • more pair coding!
        • week 8:
          • gyroscope functionality
        • week 9:
          • iterate design within the bounds of Spritekit
        • week 10:
          • have a demo-able game
    • briefly summarize any other topics/discussions
      • very inspiring and exciting meeting with Natalie Svoboda. notes here

Exit View

Create a view that allows (or encourages) user to exit the app upon completion of the game/after allotted amount of time playing the game. Potentially offer multiple options (e.g. exit Breeze, exit Breeze + block the app the user was previously on, return to homescreen, etc.). There would be no option to replay the game.

Initial View

Opt #1: Add a play button to the initial view of the game itself (this would be more of a MVP feature ideally).

Opt #2: Create a home screen so that the user doesn't have to jump straight into game play upon opening the app. Can also give them the option to check progress, stats, map, etc. But mainly should have a button to start playing the game.

Question: Primary or secondary feature? Also should we separate the two options into a primary feature and a secondary feature?

  • some sort of introduction/loading screen into the app should be a primary feature. We would definitely want to the first thing they see to be calming and a shift from whatever app the user was on before.

Create a counter to keep track of "progress"

Maintain a count of how many times a user successfully follows the push notification, exits their current app, and enters Breeze. This value should be maintained over time/app use and will affect the user's progress in the game of the app.

Reward system for time away from apps

In the spirit of reducing screen time, how might Breeze reward time away from socials/ Breeze itself? Think WoW characters recharging (thus more prepared to make progress) while app is closed.

Scrolling Samuel

Scrolling Sam

scrollingSam

Background and Demographic Information

  • Nickname: Scrolling Samuel
  • Demographics: 35 year old inattentive husband
  • Overheard quote: "Sam spends all of his time on social media when we go out to eat! - his wife"

Narrative

Sam is a 35-year old husband, who comes home after work every day and scrolls for several hours on TikTok. Originally, he only scrolled for a few minutes and it was a quick break after work. Gradually, that has increased to hours online. He has two young children, and while he initially spent a lot of time with them, he has grown more and more inattentive as his scrolling addiction progressed. He wants to change, but has become entrenched in the routine of coming home, sitting on the couch, and scrolling through these apps as he drinks his beer. Sam knows that it is a terrible habit, and wants to change, but is unable to muster the willpower to delete the app. His wife is growing really frustrated that he isn't spending enough time with the family, and doesn't know what to do about it.

Behavioral and Dimensional Information

  • Goals and Motivations:
    To gain a closer relationship with his family
    To curb his alcohol habit

  • Tasks:
    1. In order to detox from work, Sam wants a small amount of downtime after work on TikTok and FaceBook
    2. Sam needs to get alerted after this downtime goes on too long, so that he is able to spend time with his family
    3. He needs a reason to stay away from TikTok and not go back after this alert; otherwise it would be no better than the Apple 'screentime' settings, which are no better
    *4. Sam wants his brain to "reset" and get back to daily interactions with family, when he is entrenched in the phone. He has tried meditation, but never really stuck with it, and needs motivation and rewards for making it a daily routine.

  • Pain Points, Concerns, and Challenges:
    Samuel is concerned that he will simply stop using the app or delete it the second it gets in the way of his habits
    It could be tough to design something rewarding enough to quit such an entrenched habit

  • User Flow
    1. He opens the app, it gives him a list of his apps, and allows him to set time limits on each
    2. Sam spends >15 minutes on an app, which breaks the time limit. A push notification is triggered
    3. He clicks the notification, which takes him to Breeze
    4. His ship makes progress on his quest within Breeze, and gives him an option to play a quick mindfulness 'game' or 'breathing exercise' to gain rewards in the game
    5. After playing, he is refreshed and ready to go spend quality time with his family. He has only wasted 15 minutes on Instagram, and 3 minutes on Breeze, instead of 3 hours on Instagram

Offer Individualized Alternate Activities

On the exit screen, offer alternate activity options to users to remind them of their goals to decrease time wasted on technology. This would involve another (optional) set-up step where the user specifies their goals, habits, and things they would like to spend time on rather than social media. We could then display these goals (or spin-offs of the goals) on the exit screen to encourage users.

Screen Time Tracking for 1+ App

This feature is crucial to the functionality of Breeze. For this feature, we will need to create some sort of authorization flow in which the user allows Breeze to access their screentime data, then Breeze can use it to trigger a push notification.

Initially, we can hardcode this for a specific app and a specific amount of time spent on that app.

Ideally, the app will eventually allow the user to select with apps they would like to track their screen time on, and how much time they would like to pass before a notification.

week 9 scrum master - John

responsibilities:

  1. write and turn in the sprint summary on Sunday
  2. update README.md with progress from the week

Track Game Progress

Keep track of game progress over time and have some way to tell a user how much progress they've made (still need to decide specifics)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.