javascriptf / chrome-attention-training

Helps you remain focused on a topic of study for extended periods.
MIT License
1 stars 1 forks source link

Focused task system for attention management, training, tracking, and productivity #1

Open wolfram77 opened 1 year ago

wolfram77 commented 1 year ago

This is a work in progress (WIP). The goal is to create a system that can be used to manage attention, train focus, track time, and increase productivity. The system can be used to manage tasks, track time spent on tasks, and reward users for completing tasks. The system can also be used to track time spent on distractions, and provide feedback to users.

Track time spent on a hierarchy of activities

An activity can be something specific, or something more general like a project or goal. Activities can be nested in a hierarchy. For example, a project can be broken down into tasks, and a goal can be broken down into projects. The hierarchy can be visualized as a tree. Each activity can have a unique name, description, color, and associated tags (sub-activities).

The record format to store activities in an SQL database can be as follows:

CREATE TABLE activities (
    name TEXT PRIMARY KEY,
    description TEXT,
    color TEXT,
    tag1 TEXT,
    tag2 TEXT,
    tag3 TEXT,
    tag4 TEXT,
    FOREIGN KEY (tag1) REFERENCES activities(name),
    FOREIGN KEY (tag2) REFERENCES activities(name),
    FOREIGN KEY (tag3) REFERENCES activities(name),
    FOREIGN KEY (tag4) REFERENCES activities(name)
);

To track the time associated with each activity, a separate table can be used:

CREATE TABLE activity_times (
    activity TEXT
    start_time INTEGER,
    end_time INTEGER,
    FOREIGN KEY (activity) REFERENCES activities(name)
);

Track time spent on distractions

A distraction is an activity that is not productive. This can include things like social media, video games, etc. The goal is to minimize the time spent on distractions. However, it is important to note that distractions are not necessarily bad. They can be used as a reward for completing a task, or as a way to relax.

Distractions are also activities (with one tag as distraction), and can be tracked as such. Note, a distraction can be broken down into sub-distractions as well. For example, social media can be broken down into Facebook, Twitter, Instagram, etc.

Functionality of the timer

We can use a timer to track the time spent on activities. The timer can be used to track the time spent on a single activity, or multiple activities.

Reporting time spent on activities

We can generate a report to display the time spent on activities. The report can be displayed as a pie chart or bar chart. The report can be generated for a day, week, month, or year. The report can also be generated for a specific time period (e.g. 2020-01-01 to 2020-01-31).

Rewards for completing tasks

We can use a reward system to incentivize completing tasks. The reward system can be used to track points and rewards. The points can be used to unlock rewards. The rewards can be virtual (e.g. a badge) or physical (e.g. a gift card). The rewards can be immediate/delayed, or can be choice-based (e.g. choose from a list of rewards) or randomized (e.g. randomly choose a reward from a list of rewards).



References

EntropyDev commented 1 year ago

I think the activities thing is beyond the scope of this project.

EntropyDev commented 1 year ago

We should rather focus on collecting user data about various modes and times spent on those modes. After collecting these data we can give points and gamify it. Compare and rate their performance with other users.

wolfram77 commented 1 year ago

times spent on those modes

This is what i mean by activity, but a bit more general. You can use it to keep track of time spent in towards a given sub-goal/gloat.

wolfram77 commented 1 year ago

I implemented activities in code, but not exposed in UI. I don't plan to expose it in the current phase of the project. Focus you must on the point-based system currently. Items not being tracked this "sprint" will be marked as complete.

wolfram77 commented 1 year ago

The following features have now been shipped (packed on a ship and left port 🚢):

Currently a fixed duration cannot be set, and all modes behave like legendary, i.e., blocklist tabs are closed immediately. Duration limiting and mode-specific behavior need to be added.

wolfram77 commented 1 year ago

Timer is working currently. Behavior or mode selection is pending.

wolfram77 commented 1 year ago

The following happens with modes now: