Skip to content
fudge22 edited this page Dec 12, 2014 · 12 revisions

Description:

The Dream Catcher web app allows anyone to create new Dreams, add sub-goals to that dream, and monitor progress towards reaching each of the sub-goals and ultimately the dream itself. It is an easy way to make and set goals with the intent to help people more easily reach their dreams. Our app allows them to create a dream, and fill it with the goals that they need to reach to make their dreams come true. With only about two full weeks to work on the implementation, and the loss of one of our group members half way through, we were limited to implementing only the core functionality. The landing page gives a description of the different attributes of our product, and urges new visitors to "Create your first Dream."

From the landing page a user can either register or sign in. We have a fully functional authentication system, which only allows a user who is logged in to access any of the data in our database. Users are also limited to viewing only the goals and dreams that they have created themselves.

The user home page features an overview of their progress in completing each dream, and after creating their first dream, shows a pie chart which visualizes the different categories of dreams they have created. The goal of the pie chart is to motivate them to diversify their goals, to encompass more aspects of their lives.

From the home page, the user can use the navigation bar along the left to go deeper into the levels of dreams and goals. Due to the complexity of calculating and updating goal progress, we have limited the amount of nested goals to just the base level. However, the ability to create nested goals to any depth has been fully implemented on the front end, and can be tried out by simply removing the HTML comments around the "add a goal" button from the goal page.

In order to create a goal or a dream, just click on the "Add a dream" button from the home page. This will route you to either the dream or goal creation pages. From within each page, you can specify the details of the dream or goal, as well as instantly create sub-goals with the same level of detail. Clicking "Submit Dream" will save your changes to the server, and your new dream should appear on the home page.

Database Schema:

Dream Catcher Database Diagram

For our database we chose to use MongoDB. The above diagram shows how we implemented this database into our project. The database stores log in information for each user. It also stores information for each of the different dreams as well as each of the different goals. Each user corresponds to specific dreams and each dream corresponds to different goals, which allows us to create a hierarchical database schema for each user.

Future Work:

Currently, the Dream Catcher web app is limited to basic functionality. In future updates, the app will include the ability to add goals to an already existing dream. This functionality was implemented and works well, but has been disabled for the moment because of complications with calculating the progress of subgoals.

An additional feature that can be implemented is a timeline for each dream, allowing the user the ability to see the overall progress of the dream and each sub goal from one place and allows the user the ability to click on any sub-goal listed in the timeline to view more details on that goal.

Along with having the ability to create dreams, another additional feature that can be implemented in the future is the ability to create and join groups of users. Each user can share their goal with other users or even create collective goals between multiple users. This is an easy way for families, groups of friends, or colleagues to monitor progress towards collective dreams and goals.