cis3296f24 / applebaum-final-project-section-005-applebaum

cis3296f24-classroom-applebaum-final-project-project-proposal-template created by GitHub Classroom
0 stars 0 forks source link

growe: tend to yourself #17

Open gutbash opened 3 weeks ago

gutbash commented 3 weeks ago

header

Abstract

A collaborative habit-building app that leverages social accountability to help users establish and maintain positive routines. Users join groups centered around specific habits—such as cleaning, going to the library to study, or exercising—and participate in check-ins that require evidence of their progress in the form of photos (like BeReal). Group members validate each other's check-ins, creating a supportive community that fosters commitment and consistency. If users cumulatively miss the required number of check ins, not only does the streak visibly reset but a beautiful unique plant that was once growing is uprooted and reset (like Forest), adding a gentle layer of peer accountability. To motivate ongoing participation, consistent users earn badges and unlock new plants. By combining habit tracking with peer validation, this idea transforms personal goal-setting into a shared journey, enhancing motivation through collective encouragement and accountability.

Keywords: 005, accountability, habits, social, expo, firebase

High Level Requirement

A collaborative habit-building app that leverages social accountability to help users establish and maintain positive routines.

Conceptual Design

This app uses React Native Expo as a frontend mobile framework, Firebase as a backend for storing user data, assets, and group data. It also will likely use Stable Diffusion 3.5 Large to generate assets.

Early Experimentation with SD 3.5 Large for Asset Generation

Examples of generating plant assets with Stable Diffusion 3.5 Large.

Setting Value
Prompt isolated {plant_name} plant at the {growth_stage}, white background, isometric perspective, 8-bit pixel art style
Aspect Ratio 1:1
CFG 3.5
Prompt Strength 0.85 (1.0 might be better)
Steps 40 (35 might be better)
Seed 227468720
Output Format webp
Output Quality 90

The settings to generate the previous examples. Curly brackets indicate arguments to the template prompt. Growth stages indicate the progression of the plant at a certain life cycle.

Stage Description
Sprouting sprouting stage where it germinates and grows its first leaf
Seedling seedling stage where a small green shoot emerges above the soil with tiny leaves starting to spread
Vegetating vegetating stage where the plant grows taller with thickening stems and broadening leaves
Budding budding stage where the plant is transitioning to blooming and small buds appear signaling flower formation
Flowering flowering stage where the plant displays fully opened and prominent flowers
Fruiting fruiting stage where the plant produces fruits as the flowers fade
Dying dying stage where the plant turns brown and wilts
Yucca

Bird of Paradise

Mechanics

Credits

Users earn credits in a few ways:

  1. Each time the user logs a habit for the week (even if the plant dies at the end of the week). User earns extra credits if they log more habits than necessary for the week.
  2. Each time the team successfully grows a plant for the week.
  3. Every day each plant in the garden is kept alive users can collect a small amount of credits from each plant.

Users can use their credits to buy things for the garden, like pets, paths, decorations, and food to keep the existing plants and animals in the garden alive.

Here are the items planned so far: Item Description
Pets Animated NPCs that allow plants to live longer without Fertilizer
Decorations Purely cosmetic items that spruce up the users' garden
Kibble Food for Pets that keep them alive and healthy
Fertilizer Food for plants that keep them alive and healthy
Gaia A magic stone that allows users a 50% chance to save a plant that died
Unique Events

Events that allow users to skip feeding their existing plants for the week.

Habit Guidance

Provide guidance on how to choose and formulate a good habit.

Nudges

If users are not meeting goals consistently or are constantly exceeding goals, give nudges for recommendations to adjust.

Reflection

Users can write an optional reflection that gives them the opportunity to write about their high and low of the week. Pair this with rewarding animations of the plant and pets.

Badges

Certain badges are rewarded for unique accomplishments.

Streaks

Streaks of multiple weeks of successfully growing a plant give users the opportunity to keep growing. Maybe give the opportunity to plant a tree at long term streak?

Page Designs

Proof of Concept

growe (demo branch)

Background

This is the life cycle of a user on this app for a three person group with the goal to workout 3 days a week:

  1. User creates account.
  2. Add friends by username.
  3. Create group.
  4. Choose a habit. A good example is to go for a run 3 days a week. A bad example is run 1 mile three days a week. It shouldn't need to be quantified, only specific enough that can be verified from a simple photo. qualitative > quantitative.
  5. Set minimum frequency of check-in (i.e. work out 3 days a week).
  6. Invite friends to join.
  7. At the start of every period (i.e. week), given a library of plants to choose from (will auto-pick if not chosen). plants are standard and take minimum frequency (i.e. 3 users 3 days = 9 total check-ins for the week), while accessories to the garden may take a multiplier of more check-ins (i.e. 3 users 3 days + 3 extra = 12 total check-ins for the week).
  8. Users take a picture of their workout (not from camera roll) at their discretion three times on separate days of the week.
  9. Users must endorse it as valid, can also upvote and comment.
  10. Every time a user's check-in is endorsed as valid by everyone, the plant or accessory grows or progresses respectively.
  11. If users do not collectively reach the required number of check-ins, the plant that was growing dies.
  12. Repeat from step 9.

References

https://bereal.com/ https://www.forestapp.cc/ https://expo.dev/ https://openai.com/index/dall-e-3/

JRheeTU commented 3 weeks ago

Hey Sebastian,

Your proposal was one of the best in the class. To be honest, I thought the idea was a little unoriginal at first, but your suggestion of implementing AI-generated images spiced it up a lot (and not from just a buzzword perspective). I think by harnessing someone's reward system, you can get a fulfilling and addicting app project. I use my own image generator (Flux Dev), and it's addicting to see what result you can get. It's like loot boxes or slot machines. "Maybe this time I'll generate something really cool."

If I ended up working on this project, I would contribute by ensuring the generation process. To be honest, I don't know the extent the user has control over the generation (steps, noise, LoRas, Positives, Negatives, etc.), but I am willing to dive into whatever DALL-E offers. I could also look into the specifics of the guidelines for prompting DALL-E. I would've suggested image-to-image of certain plants (possibly assigning those to certain users and having certain keywords added depending on the user's preferences), but I'm not sure if DALL-E offers that. I could also help in the actual programming and implementation of all these features. I could also help with the user flow and storyboarding of the program, but this sounds kinda boring (so only if necessary). I have a deep interest in psychology and self-help, so I could also help make suggestions on user experience (not just UI).

Suggestions:

What would level up the project a lot, would be unique seeds and keys for each user depending on their personality. This would create specific generations of plants that fit them, making them unique. For example, one user may really like Sakuras, which would bias the image generations to have more or less Sakuras depending on their performance.

Allowing the users to save images of their generations would give room for a personal connection to their achievements (you could even monetize this). This also provides free marketing (for when they share them with friends or social media)

When the streak ends, "a beautiful unique garden that was once growing is uprooted and reset." This seems to play on dark psychology. You make an extremely negative association. This can help, but from what I've read from the psychology of reinforcement of behaviors, severe punishment being used as the only motivator only serves as a short-term solution. From both a business and psychological perspective, I would advise against using this strategy. You would lose out on more long-term users (If their streak ends, they would give up on future endeavors entirely and uninstall, and/or associate very negative feelings with the app). Try to lessen the severity of the punishment (their garden is a little less filled that week). Use more positive reinforcement E.g: Having the details of their generations (perhaps in terms of image size, steps, repeated tr, and more modifiers) change largely based on their performance. Maybe having their gardens become even more legendary/beautiful when they surpass their goal.

BIGGEST SUGGESTION: I would recommend you don't constrict your project to gardens. Because you are working with AI Image generation, you can increase your scope even larger. If I was on a team with my friends for a workout, I would want to have an epic dojo with my friends instead. If I was on a team for studying, I'd want a super mythical wizard library, ranging from one tiny bookshelf to a layered multi-leveled grand magician spire of bookcases with various gadgets and multicolored books. This is not to say that you would give your users full freedom to generate anything (as you'd just become the middleman for free DALL-E), but it'd be more appealing if you gave more options, especially because it wouldn't be much harder to implement.

gutbash commented 3 weeks ago

Hi @JRheeTU, thank you for your extensive feedback. I agree that the organic asset generation of plants and growth stages is the most integral part that separates this type of app from the rest. It must be a clean and frictionless implementation that avoids image diffusion's ugly pitfalls and stereotypes.

I used Flux 1.1 and was quite impressed, but found that the adherence to directions was not good enough for what we needed. I instead turned to Stable Diffusion 3.5 Large, released about a week ago, and was quite impressed with the adherence. I've posted the updated results above.

The generation process should be a button that a user presses and shouldn't require the user to use any advanced controls at all. I am impressed that you are familiar with the advanced hyperparameters and methods of diffusion models, though.

I thought about image-to-image, but we would need access to a database of plants at different growth stages captured with some relative consistency. In addition, I think it would be cool for users to generate plants that don't exist.

I think I am pretty good at the design of the app, but the psychology of the design and mechanics for the actual app should be peer-reviewed and iterated on by the whole team. So the user experience and psychological methodology would be a great help.

To your suggestions:

What would level up the project a lot, would be unique seeds and keys for each user depending on their personality. This would create specific generations of plants that fit them, making them unique. For example, one user may really like Sakuras, which would bias the image generations to have more or less Sakuras depending on their performance.

This is interesting. How would you determine their personality and how that corresponds to certain seeds? I was thinking that each period, someone would randomly or rotationally get to choose their own plant to grow by typing in a real or fake plant name.

Allowing the users to save images of their generations would give room for a personal connection to their achievements (you could even monetize this). This also provides free marketing (for when they share them with friends or social media)

This is a good idea. Great way to spread the app.

When the streak ends, "a beautiful unique garden that was once growing is uprooted and reset." This seems to play on dark psychology. You make an extremely negative association. This can help, but from what I've read from the psychology of reinforcement of behaviors, severe punishment being used as the only motivator only serves as a short-term solution. From both a business and psychological perspective, I would advise against using this strategy. You would lose out on more long-term users (If their streak ends, they would give up on future endeavors entirely and uninstall, and/or associate very negative feelings with the app). Try to lessen the severity of the punishment (their garden is a little less filled that week). Use more positive reinforcement E.g: Having the details of their generations (perhaps in terms of image size, steps, repeated tr, and more modifiers) change largely based on their performance. Maybe having their gardens become even more legendary/beautiful when they surpass their goal.

Yes that was one of my old ideas, I also agree it is too harsh and I have opted to just kill the plant the group is growing that week, but they get to keep their garden so far. I think this is less harsh but also I feel like it is a little too nice and I don't want the group to get complacent with not growing anything and getting to keep their garden. I was thinking about adding mechanics where you have to obtain water and water the plants to keep them alive but I'm not sure.

BIGGEST SUGGESTION: I would recommend you don't constrict your project to gardens. Because you are working with AI Image generation, you can increase your scope even larger. If I was on a team with my friends for a workout, I would want to have an epic dojo with my friends instead. If I was on a team for studying, I'd want a super mythical wizard library, ranging from one tiny bookshelf to a layered multi-leveled grand magician spire of bookcases with various gadgets and multicolored books. This is not to say that you would give your users full freedom to generate anything (as you'd just become the middleman for free DALL-E), but it'd be more appealing if you gave more options, especially because it wouldn't be much harder to implement.

I resonate with the sentiment that the possibilities are quite vast when it comes to diffusion models for asset generation. In my experience, however, a huge negative connotation is attributed to AI images being used for large scopes and compensating for lacking quality. So, the larger the scope, the more room for error in these models. As I said, we want to make this experience so frictionless that the user doesn't even notice it is AI.

I like the idea of plants because it is analogous to personal growth, it is natural and calming, it is aesthetically pleasing, etc. I think there is room in scope for accessories and pets though! Like i said in the presentation, users could earn pets to place in their garden like a bunny that hops around, or a bench or archway or fountain or gazebo, etc.

tuo62395 commented 3 weeks ago

Sebastian,

Really cool idea! Your project stood out the most to me out of all the presentations. Not only was it the most clear and fleshed out idea, but it sounds like something I could see myself and my friends using. It also seems like something that doesn't exist yet, so it could be a really useful project. I'm a fan of idle games. I grew up playing cookie clicker and similar games, and I loved the addicting sense of progression that come with them. I think it could be really powerful to tie one of these games to good habit forming.

One question I have is: Would the app work for quitting negative habits too? I think it could, which would allow it to be applied to many more people's needs, but it may come with a challenge. It's difficult to prove a negative. For example, you can't take a picture every week that proves you haven't smoked any cigarettes. I guess this type of garden would have to be more based on honesty, but I think it would still be worth including in the app.

One other suggestion. Is there a possibility to create a garden with a few friends where you all have different goals? You could still all motivate each other to complete your goals, but maybe one is exercise related, one is diet related, and one is meditating or something. This could expand the use of the app much more, whereas someone may not otherwise use the app if they don't have friends that also work out.

I also agree with JRheeTU that I think we have to be very careful about how we deal with failed goals. If the punishment is too harsh, the user might quit using the app completely. It shouldn't be a hard reset, but as long as they have something to show for their previous progress, they probably wouldn't give up.

I don't have much experience with the platforms you plan on using, but I have no problem learning, and I can hop on any task you need me to. I have experience with the UX design process, so I could research our user personas, user stories, and make prototypes for the UI as well.

gutbash commented 3 weeks ago

Hi @tuo62395, thank you for the great feedback. I think if we balance the addictive aspects of idle games and apply it to a healthy thing, it would be very beneficial.

To your question about negative habits, this is something that I thought about too. I think it will be important to add directions for creating a good habit to follow. Even though I believe positive habits help mitigate negative ones, I understand people will still want to use this for quitting something, and I'm not sure how I will address that yet. I'm open to ideas.

I think it would work for everyone to have their own goals, but I feel like it would defeat the purpose of doing this a bit. imagine you're the only one who has to train for a marathon and everyone is just going to the library to study once a week. I feel like it wouldn't be as motivating for the person training for the marathon and I think they would feel alone. But again, it could work despite this.

I agree with the punishment not being too harsh. It shouldn't reset their progress entirely. It would just kill the plant the group is currently trying to grow.

If you are to join this project, just study React, which everyone should eventually know anyway. And UX help would be awesome too.

Joshua-Varkey12 commented 3 weeks ago

Hey Sebastian,

I really like this project and it is a really cool original Idea. I would definitely download something like this on my own and would love to be a part of making something like this. I really like the art that you suggested in the project and I like the use of AI tools that would allow users to create more unique plants in their garden. I saw your comments on helping users break out of bad habits. I did some research and found some APIs that deal with that and some notable ones I found that we should look more into are Productive API, and Mindful API. Productive API allows users to track habits and give back analytics on their habits. I don't know what the data would look like but it's something that we can look into. Mindful API helps users meditate and focuses on forming mindful habits. The Mindful API focuses on helping users break bad habits like stress-eating, overthinking, and procrastination. I'm sure we can look into this API and see if it can be implemented into our project.

I could help by trying to implement these APIs into the project and seeing where we can improve upon them in some way. I know a little bit about react and I have worked with other APIs in the past so I can help in this aspect of the project.

Some suggestions that I have, Is maybe implementing a system that can track how hard a goal can be. Maybe we can assign metrics to goals so that when a group completes a harder goal we give them more rewards like maybe a flash sale in the shop or something.