By: Team CS2103T-W11-1
Since: Sep 2019
Licence: MIT
1. Introduction
AlgoBase (AB) is a one-stop management platform for Computer Science students preparing for technical interviews. With AlgoBase, say goodbye to tough interview days!
Tired of having to manually track your progress across multiple websites like Kattis, Hackerrank and Leetcode? AlgoBase allows you to pull practice questions from these online repositories (and more!) and consolidates them into a single application.
Do you have to prepare for mutliple interviews, and want to customize your preparations for each of them? We got you covered! AlgoBase also allows you to create highly flexible training plans to tailor to your individual needs.
Are you a guru that has completed many problems, and want a powerful way to filter through your problems? No worries! AlgoBase comes equipped with a comprehensive tag system and a flexible filtering mechanism for your needs.
Are you used to the speed of Command Line tools and find that GUI applications are too slow? Not a problem! AlgoBase is designed for those who prefer to use a desktop app for managing algorithm problems, equipped with a robust Command Line Interface (CLI) while still maintaining the benefits of a Graphical User Interface (GUI).
Interested? Jump to the Section 2 to get an "Overview" of the AlgoBase, or Section 3 “Quick Start” to get started with AlgoBase!
2. Overview
AlgoBase is primarily a problem management application, where users can add different algorithm problems from all kinds of sources. Within the application, users can create training plans consisting of tasks, where each task is a problem that the user has to complete. Upon completing a task, users can mark it as done, which contributes to the progress of their plan.
The figure below illustrates the layout of the AlgoBase application:

AlgoBase is split into following 3 panes:
-
Display Tabs – displays a list of items (problem, tag, plan or findrule)
-
Details Tabs – shows details of a specific item
-
Plan Tab – shows details of the current plan
3. Quick Start
-
Ensure you have Java
11
or above installed in your Computer. -
Download the latest
algobase.jar
here. -
Copy the file to the folder you want to use as the home folder for your AlgoBase application.
-
Double-click the file to start the app. The GUI should appear in a few seconds.
-
Type the command in the command box and press Enter to execute it.
e.g. typinghelp
and pressing Enter will list all possible commands in the result window and open the help window. -
Some example commands you can try:
-
listprob
: lists all problems -
addprob
n/factorial d/define a function factorial that takes in a number and n and returns the factorial of the number t/recursion a/Halim
: adds a problem called 'factorial' tagged with 'recursion' and authored by 'Halim' -
editprob
1 src/LeetCode
: edits the first problem displayed and sets its source to 'LeetCode' -
switchtab
tt/display i/2
: switches to tag tab -
switchtab
tt/display i/3
: switches to plan tab -
findplan
n/CS2040
: finds plans that with name 'CS2040' -
clear
: resets Algobase -
exit
: exits the app
-
-
Refer to Section 4, “Features” for details of each command.
4. Features
Command Format
-
Words in
UPPER_CASE
are the parameters to be supplied by the user e.g. inaddprob n/NAME
,NAME
is a parameter which can be used asaddprob n/Two Sequences
. -
Items in square brackets are optional e.g
n/NAME [t/TAG]
can be used asn/factorial t/recursion
or asn/factorial
. -
Items with
…
after them can be used multiple times including zero times e.g.[t/TAG]…
can be used ast/recursion
,t/recursion t/dynamic-programming
etc. -
Parameters can be in any order e.g. if the command specifies
n/NAME a/AUTHOR
,a/AUTHOR n/NAME
is also acceptable. -
If there are duplicate parameters, AlgoBase will only consider the last parameter and ignore previous parameters (with the same parameter name). e.g.
addprob n/nameA n/nameB
will add a problem with namenameB
.
4.1. Problems
4.1.1. Adding a problem: addprob
Generates a new problem.
Format: addprob n/NAME [a/AUTHOR] [w/WEBLINK] [d/DESCRIPTION] [diff/DIFFICULTY] [src/SOURCE] [t/TAG]…
-
DIFFICULTY
should be an integer or decimal in the range of (0, 5] (If no difficulty is provided, AlgoBase will internally store the difficulty as 0)
Don’t provide extreme values like 5.00000…01 as difficulty as computers can’t store decimals exactly and some round-off error is unavoidable.
|
A problem can have any number of tags (including 0) |
Examples:
-
addprob n/Sequences a/Tung Kam Chuen w/https://open.kattis.com/problems/sequences d/Find the sum of the number of inversions of the 2k sequences, modulo 1000000007 (109+7). diff/3.0 src/Kattis t/recursion
4.1.2. Deleting a problem : deleteprob
Deletes an existing problem.
Format: deleteprob INDEX [f/]
-
Deletes the problem at the specified
INDEX
. -
The index refers to the index number shown in the displayed problem list.
-
The index must be a positive integer 1, 2, 3, …
-
The command will fail if the problem identified by
INDEX
is used in some task(s) in existing plans. Addf/
to force AlgoBase to delete all tasks associated with the problem.
Examples:
-
listprob
deleteprob 2
Deletes the 2nd problem in the displayed list. -
findprob n/factorial
deleteprob 1
Deletes the 1st problem in the results of thefindprob
command.
4.1.3. Editing a problem : editprob
Edits an existing problem.
Format: editprob INDEX [n/NAME] [d/DESCRIPTION] [a/AUTHOR] [t/TAG]…
-
Edits the problem at the specified
INDEX
. The index refers to the index number shown in the displayed problem list. The index must be a positive integer 1, 2, 3, … -
At least one of the optional fields must be provided.
-
Existing values will be updated to the input values.
-
When editing tags, the existing tags of the problem will be removed i.e adding of tags is not cumulative.
-
You can remove all the problem’s tags by typing
t/
without specifying any tags after it.
Examples:
-
editprob 1 a/John Doe
Edits the author of the 1st problem to beJohn Doe
respectively. -
editprob 2 n/permutations t/
Edits the name of the 2nd problem to bepermutations
and clears all existing tags.
4.1.4. Listing all problems : listprob
Displays a list of all existing problems.
Format: listprob
4.1.5. Sorting problems: sortprob
Sorts the current list of problems by a specified method and order.
Format: sortprob m/METHOD [ord/ORDER]
-
METHOD
can bename
,author
,weblink
,difficulty
orsource
. -
ORDER
can beascend
ordescend
representing ascending and descending order. The default is in ascending order. -
String-based values (i.e.
name
,author
, etc.) are sorted alphabetically.
If sorted by ascending order (i.e. the default order), empty fields will have the highest priority, which means if you execute sortprob m/weblink , the first few results would be (if any) without web links.
|
Examples:
-
sortprob m/name
Sorts the current list of problems in ascending order of names. -
sortprob m/author ord/descend
Sorts the current list of problems in descending order of author names. -
sortprob m/difficulty ord/ascend
Sorts the current list of problems from lowest to highest difficulty.
4.2. Searching Problems
4.2.1. Locating problems: findprob
Finds problems fulfilling all provided constraints.
Format: findprob [n/NAME] [a/AUTHOR] [d/DESCRIPTION] [src/SOURCE] [diff/LOWER_BOUND-UPPER_BOUND] [t/TAG]…

findprob
is shown in the problems list
When providing the search restrictions, you should ensure that keywords are non-blank and difficulty range is valid (as specified in addprob command). Also at least one search restriction should be provided.
|
-
Name
-
is case-insensitive. e.g.
henz
will matchHenz
-
is considered a match as long as one word matches. (e.g.
Henz Ben
matches bothMartin Henz
andBen Leong
) -
is matched word by word. e.g.
hello
will matchhello world
but nothelloworld
-
-
Author requires an exact match.
-
Description
-
is case-insensitive
-
is matched word by word
-
is considered as a match only when the problem’s description includes all words in the constraint. e.g.
wordA wordB
matcheswordC wordB wordA
notwordD wordA
-
Words are separated by empty spaces. Thus if we have a sentence "Hello, world!", we have two words Hello, and world! .
|
-
Source requires an exact match.
-
Tag
-
Constraints are separated by spaces. (e.g.
findprob t/Recursion Brute-Force
will display all problems with both tagRecursion
andBrute-Force
) -
Constraint tag set is a subset of matching problems. (e.g.
findprob t/Recursion Brute-Force
will match problem with tagsRecursion
+Brute-Force
+Playful
but notRecursion
+Adhoc
) -
Two tags are considered equal only when their tag strings are exactly matched.
-
-
Difficulty
-
matches problems with
LOWER_BOUND <= difficulty <= UPPER_BOUND
-
If you want to match problems with exact difficulty 1.5 , please use diff/1.5-1.5 .If you want to match problems with with difficulty no lower than 1.5 , please use diff/1.5-5.0 because 5.0 is the upper limit of difficulty.
|
Ensure that - only appears once as the connective between two bounds (i.e. negative difficulty is not allowed, as mentioned before). Otherwise the command is considered invalid.
|
Examples:
-
findprob n/Sequences
Returns any problem with wordSequences
(case-insensitive) in its name. -
findprob t/algorithm diff/2.0-4.0
Returns any problem withalgorithm
as one of its tags AND with a difficulty between 2.0 and 4.0 (inclusive). -
findprob a/Hentin Marz src/Kattis
Returns any problem fromKattis
that’s authored byHentin Marz
.
4.2.2. Storing a problem-finding rule: addfindrule
Saves a problem-finding rule from provided constraints.
Format: addfindrule RULE_NAME [n/NAME] [a/AUTHOR] [d/DESCRIPTION] [src/SOURCE] [diff/LOWER_BOUND-UPPER_BOUND] [t/TAG]…
Alias: afr

If you want to "keep a list of problems" that fulfills certain conditions, say "graph theory questions from Kattis", you may store these rules using addfindrule and apply them later.Unlike plans, as you add new questions to AlgoBase, so long as the new questions fulfill the search rule, they will show up if you apply that rule.
|
The rules for constraints are the same as those described in findprob command. Note that keywords in a find rule may be less restrictive than the fields (e.g. name, source, etc.).
|
Examples:
-
addfindrule MediumDiffAlgo t/algorithm diff/2.0-4.0
Adds a new find rule namedMediumDiffAlgo
that when applied, returns any problem withalgorithm
as one of its tags AND with a difficulty between 2.0 and 4.0 (inclusive). -
addfindrule Kattis src/Kattis
orafr Kattis src/Kattis
Adds a new find rule namedKattis
that when applied, returns any problem fromKattis
.
4.2.3. Applying a problem-finding rule: apply
Applies a problem-finding rule.
Format: apply INDEX
-
Applies the find rule at the specified
INDEX
. -
The index refers to the index number shown in the displayed find rule list.
-
The index must be a positive integer 1, 2, 3, …
You can find problem-finding rules that you can apply with in the "Find Rules" panel by clicking on the "Find Rules" tab.
|
apply a problem-finding rule is essentially the same as executing a pre-filled findprob command.
|
Examples:
-
apply 2
Applies the 2nd find rule in the displayed list.
4.2.4. Deleting a problem-finding rule: deletefindrule
Deletes a problem-finding rule.
Format: deletefindrule INDEX
Alias: dfr
-
Deletes the find rule at the specified
INDEX
. -
The index refers to the index number shown in the displayed find rule list.
-
The index must be a positive integer 1, 2, 3, …
Examples:
-
deletefindrule 2
ordfr 2
Deletes the 2nd find rule in the displayed list.
4.3. Tags
4.3.1. Creating new tags: addtag
Generates a new tag.
Format: addtag t/NAME [c/COLOR]
Examples:
-
addtag t/graph
-
addtag t/sssp c/BLUE
Tag color can only be "RED" "ORANGE" "YELLOW" "GREEN" "BLUE" "PURPLE" "TEAL" "BLACK" or "DEFAULT". |
4.3.2. Listing tags: listtag
Displays a list of all existing tags.
Format: listtag
4.3.3. Deleting current tags: deletetag
Deletes an existing tag.
Format: deletetag INDEX
Examples:
-
deletetag 1
4.3.4. Editing tags: edittag
Edits an existing tag.
Format: edittag INDEX [t/NAME] [c/COLOR]
Examples:
-
edittag 1 t/difficult c/BLUE
4.4. Training Plans
Training plans consist of wrapped-up problems which we call task
s.
4.4.1. Adding a plan: addplan
Generates a new plan.
Format: addplan n/NAME [d/DESCRIPTION] [start/START_DATE] [end/END_DATE]
-
Plans cannot have duplicate names.
-
START_DATE
andEND_DATE
should be in the format ofyyyy-MM-dd
-
START_DATE
should be before or equal toEND_DATE
. -
START_DATE
will beLocalDate#now()
if not specified, andEND_DATE
will be one month fromSTART_DATE
if not specified.
Examples:
-
addplan n/CS2040 d/past year questions in practical exams start/2019-01-01 end/3019-12-12
4.4.2. Deleting a plan : deleteplan
Deletes an existing plan.
Format: deleteplan INDEX
-
Deletes the plan at the specified
INDEX
. -
The index refers to the index number shown in the displayed plan list.
-
The index must be a positive integer 1, 2, 3, …
Examples:
-
listplan
deleteplan 2
Deletes the 2nd problem in the displayed list. -
findplan n/CS2040
delete 1
Deletes the 1st problem in the results of thefindplan
command (will be introduced in the next section).
4.4.3. Editing a plan : editplan
Edits an existing plan.
Format: editplan INDEX [n/NAME] [d/DESCRIPTION] [start/START_DATE] [end/END_DATE]
-
Edits the plan at the specified
INDEX
. The index refers to the index number shown in the displayed plan list. The index must be a positive integer 1, 2, 3, … -
At least one of the optional fields must be provided.
-
Existing values will be updated to the input values.
-
START_DATE
should be before or equal toEND_DATE
.
Examples:
-
editplan 1 d/past year questions of sit-in labs
Edits the description of the 1st plan to bepast year questions of sit-in labs
respectively. -
editplan 2 start/2019-08-13
Edits the starting date of the 2nd plan to be2019-08-13
.
4.4.4. Listing all plans : listplan
Displays a list of all existing plans.
Format: listplan
4.4.5. Locating plans: findplan
Finds plans fulfilling all provided constraints.
Format: findplan [n/NAME] [d/DESCRIPTION] [start/RANGE_START] [end/RANGE_END] [task/TASK_NAME]
-
Name
-
is case-insensitive.
-
is considered a match as long as one word matches.
-
is matched word by word.
-
-
Description
-
is case-insensitive
-
is matched word by word
-
is considered as a match only when the problem’s description includes all words in the constraint.
-
-
Start and end range
-
is considered a match when there exist overlaps in time. (e.g. a plan with start date of
2019-01-01
and end date of2019-03-03
matches a plan with start date of2019-02-02
and end date of2019-04-04
) -
both
RANGE_START
andRANGE_END
should be specified. -
RANGE_START
should be before or equal toRANGE_END
.
-
-
Task name
-
is case-sensitive.
-
is matched word by word.
-
is considered a match only when there is a task whose name is exactly the same as the given task name.
-
Examples:
-
findplan start/2019-08-05 end/2019-12-07
Finds plans whose duration overlaps with NUS AY 19/20 Semester 1. -
findsplan task/Sequences
Finds plans that contain a task names 'Sequences'.
4.5. Task Management
4.5.1. Adding a new task to a plan: addtask
Adds a task to a specified plan.
Format: addtask plan/PLAN_INDEX prob/PROBLEM_INDEX [due/DUE_DATE]
-
DUE_DATE
should be in between plan’sstartDate
andendDate
(inclusive).
Examples:
-
addtask plan/1 prob/1 due/2019-12-12
4.5.2. Copying a task from one plan to another: copytask
Copies a specified task from one plan to another.
Format: copytask task/TASK_INDEX from/PLAN_INDEX to/PLAN_INDEX
-
Task identified by
TASK_INDEX
should have a due date in between plan’sstartDate
andendDate
(inclusive).
Examples:
-
copytask task/1 from/1 to/2
4.5.3. Deleting a task from a plan: deletetask
Deletes a specified task from a specified plan.
Format: deletetask plan/PLAN_INDEX task/TASK_INDEX
Examples:
-
deletetask plan/1 task/1
4.5.4. Marking a task as done: donetask
Marks a specified task in a specified plan as done.
Format: donetask plan/PLAN_INDEX task/TASK_INDEX
Examples:
-
donetask plan/1 task/1
4.5.5. Editing due date of a task from a plan: edittask
Edits the due date of a specified task from a specified plan.
Format: edittask plan/PLAN_INDEX task/TASK_INDEX due/DUE_DATE
-
DUE_DATE
should be in between plan’sstartDate
andendDate
(inclusive).
Examples:
-
edittask plan/1 task/1 due/2019-12-12
4.5.6. Marking a task as undone: undonetask
Marks a specified task in a specified plan as undone.
Format: undonetask plan/PLAN_INDEX task/TASK_INDEX
Examples:
-
undonetask plan/1 task/1
4.5.7. Moving a task from one plan to another: movetask
Moves a specified task from a specified plan to another.
Format: movetask task/TASK_INDEX from/PLAN_INDEX to/PLAN_INDEX
-
Task identified by
TASK_INDEX
should have a due date in between plan’sstartDate
andendDate
(inclusive).
Examples:
-
movetask task/1 from/1 to/2
4.5.8. Setting the plan to be used in main display: setplan
Sets a specified plan as the current display plan.
Format: setplan PLAN_INDEX
Examples:
-
setplan 10
4.6. Graphical User Interface (GUI) Enhancements
AlgoBase currently supports several GUI features with an intuitive layout, including the following:
-
Opening, Closing and Switching between Tabs
-
Editing a Problem or Plan
-
Deleting a Problem or Plan
4.6.1. Managing Tabs
There are 3 types of tabs in AlgoBase, 2 of which (Display and Details) are shown in the figure below.

-
Display tabs give a high level overview of the contents of a list of items
-
Details tabs give a more detailed description of an item in a display tab.
Much like tabs you see in other applications, tabs in AlgoBase work the same way.
-
To Switch Tabs – Click on a tab to switch tabs
-
To Open a Tab – Double click on an item in the Display tab to open it in the Details tab
-
To Close a Tab – Click on the
x
button next to a Details tab to close it.
Display Tabs cannot be closed. |
4.6.2. Editing a Problem or Plan
The following steps show how a user can edit problems or plans from the GUI.
Step 1: Select the problem or plan you want to delete by double clicking on it.

Step 2: Make changes to the problem or plan by editing the fields directly.

Step 3: Save changes to the problem or plan by clicking on the Edit Problem or Edit Plan button.

The Edit Plan Button cannot be clicked if there are no changes made to the plan. |
4.6.3. Deleting a Problem or Plan
The following steps show how a user can delete problems or plans from the GUI.
Step 1: Select the problem or plan you want to delete by double clicking on it.

Step 2: Click on the red Delete Problem or Delete Plan button at the bottom right. To prevent accidental deletion, a warning dialog will appear to confirm if you would like to delete the item. Click on the "confirm" button.

Step 3: Click on Confirm.

4.6.4. Switching Tabs: switchtab

SwitchTab
commandSwitches between tabs in the GUI
Format: switchtab tt/TAB_TYPE i/TAB_INDEX
Format: st tt/TAB_TYPE i/TAB_INDEX
-
Tab Type
-
can be display or details
-
Alternatively, display and details can be replaced by 1 and 2 respectively
-
Examples:
-
switchtab tt/display i/3
– Switches to the third display tab (i.e. plans tab). -
st tt/1 i/3
– Same effects as the previous command but in a shorter format. -
switchtab tt/details i/3
– Switches to the third details tab -
st tt/2 i/3
– Same effects as the previous command but in a shorter format.
4.6.5. Opening Tabs: opentab

OpenTab
commandOpens a new Details tab in the GUI
Format: opentab m/MODEL_TYPE i/MODEL_INDEX
Format: ot m/MODEL_TYPE i/MODEL_INDEX
-
Model Type
-
can be problem, tag, plan and findrule
-
Alternatively, problem, tag, plan and findrule can be replaced by 1, 2, 3 and 4 respectively
-
Examples:
-
opentab m/problem i/2
– Opens the 2nd problem in the list of problems. -
ot m/1 i/2
– Same effects as the previous command but in a shorter format. -
opentab m/plan i/3
– Opens the 3nd plan in the list of plans. -
ot m/3 i/3
– Same effects as the previous command but in a shorter format.
4.6.6. Closing Tabs: closetab
Closes a details tab in the GUI
Format: closetab i/DETAILS_TAB_INDEX
Format: ct i/DETAILS_TAB_INDEX
Examples:
-
closetab i/3
– Closes the third details tab -
ct i/1
– Same effects as the previous command but in a shorter format.
4.7. Data Management
4.7.1. Importing data: import
Imports external data of a specified format (e.g. JSON) into local storage.
Format: import format/FORMAT path/FILE_PATH
-
Format can only be
JSON
. -
File path refers to the relative path of the input file.
Examples:
-
import format/json path/./steven_halim_secret.json
4.7.2. Exporting data: export
Exports data into a specified format (e.g. JSON).
Format: export format/FORMAT path/DIRECTORY_PATH
-
Format can only be
JSON
. -
Directory path refers to the relative path of the directory to store the output file.
Examples:
-
export format/json path/.
4.8. Miscellaneous
4.8.1. Viewing help : help
List all possible commands or find command usage using the command word.
Format: help [COMMAND_WORD]
-
help
Shows all possible commands. -
help addprob
Shows command usage foraddprob
command.
help command only searches commands' full command word. (i.e. aliases is not supported by help )
|
4.8.2. Clearing all entries : clear
Clears all entries from AlgoBase.
Format: clear
4.8.3. Exiting the program : exit
Exits the program.
Format: exit
4.8.4. Navigating the command history
You can press ↑ to navigate back or ↓ to navigate forward in the command history.
4.8.5. Saving the data
AlgoBase data is saved in the hard disk automatically after any command that changes the data.
There is no need to save manually.
5. FAQ
Q: How do I transfer my data to another Computer?
A: Install the app in the other computer and overwrite the empty data file it creates with the file that contains the data of your previous AlgoBase folder.
6. Command Summary
-
Problems
-
Add Problem
addprob n/NAME [d/DESCRIPTION] [a/AUTHOR] [t/TAG]…
e.g.addprob n/factorial d/define a function factorial that takes in a number n and returns the factorial of the number t/recursion a/Wee Han
-
List Problems :
listprob
-
Edit Problems :
editprob INDEX [d/DESCRIPTION] [a/AUTHOR] [t/TAG]…
e.g.editprob 2 n/permutations t/
-
Delete Problem :
deleteprob INDEX
e.g.deleteprob 3
-
Sort Problems :
sortprob m/METHOD [ord/ORDER]
e.g.sortprob m/difficulty ord/ascend
-
Find Problems :
findprob [n/NAME] [a/AUTHOR] [d/DESCRIPTION] [src/SOURCE] [diff/LOWER_BOUND-UPPER_BOUND] [t/TAG]…
e.g.findprob t/algorithm diff/2.0-4.0
-
Add Find Rule:
addfindrule RULE_NAME [n/NAME] [a/AUTHOR] [d/DESCRIPTION] [src/SOURCE] [diff/LOWER_BOUND-UPPER_BOUND] [t/TAG]…
e.g.addfindrule MediumDiffAlgo t/algorithm diff/2.0-4.0
-
Apply Find Rule:
apply INDEX
e.g.apply 2
-
Delete Find Rule:
deletefindrule INDEX
e.g.deletefindrule 2
-
-
Tags
-
New Tag :
addtag t/NAME [c/COLOR]
e.g.addtag t/sssp c/BLUE
-
List Tags :
listtag
-
Delete Tag :
deletetag INDEX
e.g.deletetag 3
-
Edit tag :
edittag INDEX [t/TAGNAME] [c/COLOR]
e.g.edittag 1 t/sort c/BLUE
-
-
Plans
-
Add Training Plan :
addplan n/NAME [d/DESCRIPTION] [start/START_DATE] [end/END_DATE]
e.g.addplan n/CS2040
-
Edit Training Plan :
editplan INDEX [n/NAME] [d/DESCRIPTION] [start/START_DATE] [end/END_DATE]
e.g.editplan 1 n/training start/2020-02-02
-
Find Training Plans :
findplan [n/NAME] [d/DESCRIPTION] [start/RANGE_START] [end/RANGE_END] [task/TASK_NAME]
e.g.find n/CS2040 start/2019-03-01 end/2019-03-31
-
List Training Plans :
listplan
-
Delete Training Plan :
deleteplan INDEX
e.g.deleteplan 2
-
-
Tasks
-
Add Task to Training Plan :
addtask plan/PLAN_INDEX prob/PROBLEM_INDEX
e.g.addtask plan/1 prob/2
-
Copy Tasks among Plans :
copytask task/TASK_INDEX from/PLAN_INDEX to/PLAN_TASK
e.g.copytask task/1 from/1 to/2
-
Delete Task from Training Plan :
deletetask plan/PLAN_INDEX task/TASK_INDEX
e.g.deletetask plan/1 task/2
-
Edit Due Date of Task :
edittask plan/PLAN_INDEX task/TASK_INDEX due/DUE_DATE
e.g.edittask plan/1 task/2 due/2019-12-12
-
Mark Task as done :
donetask plan/PLAN_INDEX task/TASK_INDEX
e.g.donetask plan/1 task/2
-
Mark Task as undone :
undonetask plan/PLAN_INDEX task/TASK_INDEX
e.g.undonetask plan/1 task/2
-
Move Tasks among Plans :
movetask task/TASK_INDEX from/PLAN_INDEX to/PLAN_TASK
e.g.movetask task/1 from/1 to/2
-
Set Current Plan :
setplan PLAN_TASK
e.g.setplan 10
-
-
Tabs
-
Switch Tab :
switchtab tt/TAB_TYPE i/TAB_INDEX
e.g.switchtab tt/display i/3
-
Open Tab :
opentab m/MODEL_TYPE i/TAB_INDEX
e.g.opentab m/problem i/2
-
Close Tab :
closetab i/DETAILS_TAB_INDEX
e.g.closetab i/3
-
-
Storage
-
Exporting data :
export format/FORMAT path/DIRECTORY_PATH
e.g.export format/json path/.
-
Importing data :
import format/FORMAT path/FILE_PATH
e.g.import format/json path/./steven_halim_secret.json
-
-
Miscellaneous
-
Help :
help
-
Clear :
clear
-
Exit :
exit
-