GoalStream helps you to plan your personal projects with first-class support for expressing the dependencies between tasks.
We built GoalStream around a single idea: no wasted mental effort. Your time and focus are both limited resources. A planning tool should allow you to get more out of your time and focus, and certainly shouldn't detract from them.
Based on these ideas, we have created the following feature set:
- Visualization of your project with tasks positioned automatically.
- Semantics of the dependency relationship drives functionality.
- Keyboard-first interface.
What projects are a good fit for GoalStream?
You can use GoalStream to plan any project. Projects that are especially well suited for GoalStream are those that:
- Can be broken down into many subtasks (or steps)
- Have dependencies between the subtasks (or steps)
Let's use the development of GoalStream itself as an example.
The Upcoming Tasks Panel feature depends on the ability to add deadlines to your tasks and the ability to express dependencies between tasks. (And lots of other stuff too, but we'll keep the example small.)
Now multiply that bit of complexity by many other features, plus all the tasks related to marketing, setting up the cloud infrastructure, managing users, etc. All of the dependencies between the various tasks quickly become difficult to wrap your head around.
That's exactly the problem that GoalStream is designed to solve. GoalStream lets you visualize the structure of your entire project, making it much easier to answer questions such as:
- What can I work on now?
- Are there any major blockers?
- What tasks must be completed before I can start Task X?
How Your Project Is Represented
GoalStream represents your project as a directed graph .
A GoalStream project consists of tasks (nodes in the graph) and connections between tasks (edges in the graph).
The connections each represent a dependency between two tasks.
In the above image, we can interpret the connection between Pick a car and Find the right dealer as: "The Pick a car task must be completed before the Find the right dealer task can be completed.
Functionality Based on Dependency Semantics
GoalStream uses the knowledge of the dependency relationships within your project to save you time and effort.
For instance, GoalStream will detect and prevent circular dependencies (something like: X depends on Y, Y depends on Z, Z depends on X).
Additionally, tasks are automatically placed in Blocked status until all dependencies have been completed.
The knowledge about the dependencies within your project enables some useful features.
Imagine this common use case:
You're running behind schedule and need to push back the deadline for your current task by, say, one week.
If that task gets pushed back, then all of the tasks that depend on it (both directly and indirectly) will likely need to be pushed back as well. With just two key strokes, you can push back both the current task and all downstream tasks.
We mentioned that GoalStream was designed to make the most out of your time and focus.
One of the primary ways in which this is accomplished is via GoalStream's keyboard-first interface. That means that to get the most value out of GoalStream, you need to be using the extensive set of keyboard commands.
What's so great about using the keyboard?
A lot, actually.
The keyboard is, by far, the most efficient way of interacting with your computer. A keyboard-first interface means that you won't have to waste time navigating unwieldy menus.
It allows GoalStream to have a minimalist, distraction-free interface without sacrificing functionality.
Every time you take your hands off of the keyboard to reach for the mouse, your focus has been broken. When you use GoalStream, you can put your hands on the keyboard and keep them there.