A fast, minimal CLI project task manager for efficient task and project management
FlowCLI is a Command Line Interface (CLI) app for managing tasks and projects, optimised for fast, fully keyboard-driven workflows. Track priorities, deadlines and statuses of your projects, filter and sort instantly, then export the current view to a TXT file to save your changes. If you’re a fast typer, FlowCLI is perfect for you - save hours on project management as it gets your work done faster than click-heavy apps.
Click here to see my code contributions
add-task, update-task, delete-task, mark, and unmark flows with robust validation so users can reliably manage their work.projectName to projectIndex for better consistency and performance.update task sequence.update task feature to guide future development.The following is an extract from the UserGuide.md that I contributed to.
FlowCLI supports two command modes to suit your preference:
Inline Commands: Provide all arguments in one line for quick execution
list --all.--.YYYY-MM-DD format. Priorities accept low, medium, or high.Interactive Mode: Get guided prompts for missing information
add, create, update) and FlowCLI will ask for each required detailBoth modes work identically - choose whichever feels more comfortable!
create-project <projectName> / create (interactive mode)Adds a new project. If you repeat the command with the same name (any casing), FlowCLI reports a duplicate.
create-project "Birthday Bash"
list --all or list <projectIndex> or list (interactive mode)list --all shows all projects and their indices.list <projectIndex> shows the tasks under a specific project.list 1
add-task <projectIndex> <description> [--priority <level>] [--deadline <YYYY-MM-DD>] or add (interactive mode)Adds a task under an existing project with optional priority and deadline. Priority defaults to medium, deadline defaults to none.
add-task 1 Hang fairy lights --priority high --deadline 2025-01-31
update-task <projectIndex> <taskIndex> [--description <desc>] [--deadline <YYYY-MM-DD|none>] [--priority <level>] or update (interactive mode)Edits the specified task in place. You can change one field or combine multiple options in the same command.
--description replaces the task description.--deadline updates the due date; pass none (or clear) to remove an existing deadline.--priority accepts low, medium, or high.update-task 1 2 --description "Assemble party bags" --deadline 2025-02-15 --priority medium
update-task 1 3 --deadline none
The following is an extract from the DeveloperGuide.md that I contributed to.
The task management system forms the core of FlowCLI, allowing users to create, track, and manage their work within different projects. The implementation follows the command pattern, where each user action is encapsulated in a dedicated command class.
add-task commandThe add-task command allows users to add a new task to a specified project. Users can provide a task description, an optional deadline, and an optional priority.
Command format: add-task <projectIndex> <description> [--priority <level>] [--deadline <YYYY-MM-DD>]
The following sequence diagram illustrates the process of adding a task:

Implementation Details:
CommandParser identifies the add-task command and creates an AddCommand object.AddCommand#execute() is called.Project object and calls project.addTask() to create and add the new task.ConsoleUi then displays a confirmation message to the user.update-task commandThe update-task command modifies the attributes of an existing task, such as its description, deadline, or priority.
Command format: update-task <projectIndex> <taskIndex> [--description <desc>] [--deadline <YYYY-MM-DD|none>] [--priority <level>]
The update process is shown below:

Implementation Details:
UpdateCommand is responsible for parsing the various optional flags that specify which fields to update.project.updateTask(), passing the new values. The updateTask method handles the logic of only changing the fields that were provided in the command.