Inspiration

At the start of 2024, I found that it was really hard for me to stay on top of my new years resolutions and divide these goals up in a way that was manageable. These challenges inspired me to create an app that helps users tackle the very problems I faced, and have a better chance of achieving their New Year's resolutions.

What it does

My app allows the user to enter a set of New Year's resolutions that they have for the year, and the user can add labels for how they want to measure it. Then the app prompts the user to click on a resolution, and once they do it asks the user for the goal that they have for that particular resolution. Once they set the goal, the app shows a set of 4 checkpoints that divide the goal into 4 more manageable parts. The user is then able to click on any one of the checkpoints, and log how they feel about their progress and reflect on their goals. Once they finish this, they can hit the back button and choose a different New Year's resolution to work towards.

How we built it

I built this using the CMU Cs Academy Graphics library, and coded in python. First I created groups for the different scenes, like the main screen, and goals screen which I could alternate between by toggling the visibility. Then I created buttons which were called in the built in onMousePress function, and enabled features like going back. One other built in function critical to my project was the getTextInput function, which allowed me to get the user's names for their resolutions, their goals, the answer to questions etc. One function that I created that was vital to my project was the startMinigame function, which asked the user to give a response to the question "give me a fun fact about your Resolutions", and allowed them to talk about their progress.

Challenges we ran into

The first challenge that I ran into was adding new resolutions, when the "Add Resolution" button was pressed. The problem I faced was that when I tried to create a new label for the resolution, the program would overlay these labels on top of each other. In order to fix this, I created a set of labels beforehand and set the fill to None, and when the user clicked the button and entered the name of their resolution, I edited the label to match the name they entered and toggled the visibility to True. Another challenge I faced was when I had the code for the "minigame" embedded into the onMousePress function. The problem was that I was unable to fix a bug that was occurring when I tried to get text input, and the code was too messy to read. To fix this I created a separate function called startMinigame, and simply called this function.

Accomplishments that we're proud of

One accomplishment that I am proud of, is that I was able to organize my code well and implement my knowledge from my prior classes to be able to use things like Groups, and the Enumerate function. Additionally I am glad that my project was able to showcase the effective use of the terminal to run my python ide project.

What we learned

One thing I learnt was that commenting your code and making it very easy to read is important. By doing this it becomes much easier to find errors in your code, and track which parts of your code are responsible for specific features.

What's next for GoalGuide

In the future I plan to add more interactive features to the app, and upload it to the Google App Store for consumers to use.

Built With

Share this project:

Updates