Requirements
Technical Requirements
In order to fulfill my goal of releasing something into the world, I decided to take advantage of the software engineering knowledge I already had:
- I would build an app for Mac OS X.
- It was clear from the beginning that the system would also require some back end systems work, and I had expertise using PHP and MySQL.
- The system would also require occasional SMS messages, so I would use Twilio.
Functional Requirements
Before starting on any wireframes, I wrote up a set of functional requirements:
User Accounts
- A user account is not required to use the application.
- A user account is required to network with other users through the application.
- Users must be able to create accounts.
- User accounts require a username and a password.
- User accounts can also include a real name.
- Users must be able to request their password to be reset.
Tracking
- The app will track a user’s activity over a specified period of time (e.g., one hour)
- The app must keep track of the active application.
- If the active application is a browser, the app must keep track of the active URL.
- Every activity will be marked as distracting or not distracting.
- The user must be able to set whether an activity is distracting or not.
- The amount of time spent on non-distracting activities compared to distracting activities over the specified period of time will be the distraction level.
Distraction Catalog
- The system will periodically collect whether activities are marked as distracting or not.
- The collection will be used to determine whether activities are distracting or not by default.
- A user marking an activity as distracting or not will take priority over the catalog.
Milestones
- Users can enter short descriptions of their progress throughout the day, called milestones.
Social
- Users can follow other system users by username.
- Users must symmetrically follow each other to share data.
- Distraction level will be visible to users who follow each other.
- Milestones will be visible to users who follow each other.
- The app will provide a way for users to contact each other through other applications or media.
Breaks
- Users can take breaks over the course of the day.
- The app will not track activity during breaks.
- Breaks will be limited in frequency and duration.
Mini-Visualization
- A mini-visualization will be available that shows the distraction level over the specified period of time.
- The mini-visualization will appear every time the user switches activities.
- The mini-visualization will show whether the current activity is distracting or not.
- The mini-visualization will stay visible if the activity is distracting.
- The mini-visualization will hide if the activity is not distracting.
- If the user switches to a distracting activity, the mini-visualization will provide an option to return to the most recent non-distracting activity.
Main Window
- The app will have a main window.
- The main window will allow users to log in to their accounts.
- The main window will allow users to follow each other.
- Users will be able to enter milestones from the main window.
Distraction Level Visualization
- The main window will show a visualization of the user’s distraction level over the past day.
- The visualization will include the distraction level of followed users.
- Milestones (including those from followed users’) will be visible on the visualization.
Activity Visualization
- The main will include a visualization that compares the distracting and non-distracting activities the user participates in over the day.
Intervention
- When the distraction level falls below a certain threshold, the app will prevent access to distracting applications.
Users must be able to bypass the intervention.
Copyright © 2010 - 2011 Eric St. Onge
Please send questions or comments to eric at ericstonge dot com.