ip

View the Project on GitHub adi-kd0021/ip

Developer Guide

First, fork this repo, and clone the fork into your computer. If you plan to use Intellij IDEA (highly recommended):

  1. Configure the JDK:
    • Ensure you have the correct JDK version installed in your computer. (JDK 11 & above!)
    • Open IntelliJ (if you are not in the welcome screen, click File → Close Project to close the existing project dialog first).
    • Set up the correct JDK version for Gradle.
    • Click Configure → Project Defaults → Project Structure
    • Click New… and set it to the directory of the JDK.
  2. Import the project as a Gradle project:
    • IntelliJ IDEA by default has the Gradle plugin installed. If you have disabled it, go to File → Settings → Plugins to re-enable them.
    • If your project involves GUI programming, similarly ensure the JavaFX plugin has not been disabled.
    • Click Import Project (or Open or Import in newer version of Intellij).
    • Locate the build.gradle file (not the root folder as you would do in a normal importing) and select it. Click OK.
    • If asked, choose to Open as Project (not Open as File).
    • Click OK to accept the default settings but do ensure that the selected version of Gradle JVM matches the JDK being used for the project.
    • Wait for the importing process to finish (could take a few minutes).
    • Note: Importing a Gradle project is slightly different from importing a normal Java project.
  3. Verify the setup:
    • Run the java -jar A0177810A_Duke.jar and try a few commands.

      Design

Architecture

Architecture Diagram

The Architecture diagram above gives an overview of the high-level design.

Duke is the main class.

Commons holds a collection of frequently used static messages used by multiple other components.

Implementation

Component Interaction

Find Feature Sequence Diagram

Sequence Diagram

The above Sequence Diagram shows the component interaction for the scenario where the user inputs find keyword.

Storage Class Diagram

Storage Diagram

The Storage Component:


Appendix: Requirements

Product Scope

Target User: Students

User Stories

Priorities: High (must have) - * * *, Medium (nice to have) - * *, Low (unlikely to have) - *
Priority Version As a … I want to … So that I can …
* * * v1.0 Student add a task track various tasks daily/ monthly/ weekly
* * * v1.0 Student view a list of tasks reference current tasks added and am aware of them
* * * v1.0 Student remove a task remove unwanted tasks and or re-add them as needed
* * * v1.0 Student view a help page reference the commands needed to interact with the application
* * * v1.0 Student mark a task as complete / incomplete be aware of the task’s completion status
* * * v1.0 Student save my list of tasks have a persistent list of tasks that I can modify as necessary
* * v1.0 Student find a task using a keyword find a task using partial or full keywords
* * v1.0 Student add a event be aware of upcoming or past events
* * v1.0 Student add a deadline be aware of upcoming or past deadlines

Use Cases

Use Case Diagram

Non-Functional Requirements

Glossary


Appendix: Instructions for manual testing

  1. Launch
    1. Download the A0177810A_Duke.jar into preferred directory/ folder.
    2. Open terminal / command prompt window and type java -jar A0177810A_Duke.jar
    3. A GUI window should appear.
  2. Shutdown
    1. Close the app using the close button [X] at the top right, or type exit and press enter.
  3. Add a Task
    1. While the application GUI window is open, type todo [task description without brackets] and press enter
      1. E.g. todo return textbook
  4. Tag a task
    1. While the application is open, and with tasks added, type tag [Task index number according to list] #[tag description without brackets] and press enter.
      1. E.g. tag 1 #Chore Add # right before the description text.