FlowCLI

Logo

A fast, minimal CLI project task manager for efficient task and project management

View the Project on GitHub AY2526S1-CS2113-W13-2/tp

Zing Jen - Project Portfolio Page

Overview

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.

Summary of Contributions

Code contributed

Click here to see my code contributions

Enhancements implemented

Contributions to the User Guide (UG)

Contributions to the Developer Guide (DG)

Contributions to team-based tasks

Review/mentoring contributions

Contributions beyond the project team


Contributions to the User Guide (Extracts)

The following is an extract from the UserGuide.md that I contributed to.

Features

General Command Format

FlowCLI supports two command modes to suit your preference:

Inline Commands: Provide all arguments in one line for quick execution

Interactive Mode: Get guided prompts for missing information

Both modes work identically - choose whichever feels more comfortable!

Create a project: 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 projects or tasks: list --all or list <projectIndex> or list (interactive mode)
list 1
Add a task: 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 a task: 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.

update-task 1 2 --description "Assemble party bags" --deadline 2025-02-15 --priority medium
update-task 1 3 --deadline none

Contributions to the Developer Guide (Extracts)

The following is an extract from the DeveloperGuide.md that I contributed to.

Task Management features by Zing Jen

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 command

The 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:

AddTaskSequenceDiagram

Implementation Details:

  1. The CommandParser identifies the add-task command and creates an AddCommand object.
  2. AddCommand#execute() is called.
  3. The command parses the arguments to extract the project index, task description, deadline, and priority.
  4. It validates that the project exists and that a task description is provided.
  5. If validation passes, it retrieves the Project object and calls project.addTask() to create and add the new task.
  6. The ConsoleUi then displays a confirmation message to the user.

update-task command

The 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:

UpdateTaskSequenceDiagram

Implementation Details:

  1. The UpdateCommand is responsible for parsing the various optional flags that specify which fields to update.
  2. It validates the project and task index.
  3. It calls project.updateTask(), passing the new values. The updateTask method handles the logic of only changing the fields that were provided in the command.
  4. The UI displays the updated task details.