Table of Contents

1. Introduction

2. Quick Start

3. Features

      3.1 View Command List
      3.2 Add Note
      3.3 List Notes
      3.4 View Note
      3.5 Edit Note
      3.6 Find Notes
      3.7 Pin Note
      3.8 Archive Note
      3.9 Unarchive Note
      3.10 Delete Note
      3.11 Create Tags
      3.12 List Tags
      3.13 Tag/Untag Notes
      3.14 Tag/Untag Events
      3.15 Delete Tags
      3.16 Add Event
      3.17 Edit Event
      3.18 Event Manager
      3.19 Remind
      3.20 Delete Event
      3.21 Exit

4. FAQ

5. Command Summary


1. Introduction

NotUS is a quick and simple, Command Line Interface (CLI) based, note-taking application for keyboard-inclined users. NotUS allows for users to categorize notes by tagging as well as pinning the more important notes. NotUS is also designed to assist in planning timetables to highlight possible clashes.

This document describes the features found in NotUS, along with example usages. It aims to help you get familiarised with the commands used in the application.

Any points with the 💡 emoji represents an additional information. You can access a summary of commands used in the application at the end of this document.

2. Quick Start

  1. Ensure that you have Java 11 or above installed.
  2. Down the latest version of NotUS from here or under releases from the homepage.
  3. Go to the folder of the download and open your command terminal*. Enter the following java -jar Notus.jar. Wait for the program to run.
  4. If the program is running correctly, you should see the following:

startUp

5. Use the command help to get a list of commands and their usages before using the application (if needed).

💡 Supported terminals are: Windows 10 Command Prompt, Windows Powershell, macOS and linux Terminals. Other terminals, such as Cygwin may not support color display.
💡 Recommended to use black background for better color contrast.

3. Features

Parameters listed in [ ] denote optional entries. In some cases, at least one of the [ ] parameters must be listed. When listing the optional entries, the brackets, ‘[ ]’, should be omitted. More information can be found under the respective commands. Texts listed in the following style refer to responses by the console running NotUS.

The following example shows how responses from the console will be displayed in this User Guide.

Example message as seen on the console

3.1 View Command List: help

Shows a list of all the commands that the user can enter.

💡 Even if you input anything beyond help, the program will understand the command. For example, help me please will still result in the program listing the available commands and its usages.

Example of usage:

help

Expected output:

help

help

3.2 Add Note: add-n

Adds a new note to the list of note items (think of it as a notebook).

Format: add-n /t TITLE [/tag TAG_1] [/tag TAG_2]... [/pin ISPIN] [/archive ISARCHIVE]

💡 Each note has to have a UNIQUE title and it is CASE-INSENSITIVE.
💡 As an extension to the above point, new notes cannot have the same title as those archived.
💡 One can choose to add a TAG or/and ISPIN, ISARCHIVE. These parameters are optional.
💡 Set ISPIN to “true” if you want the note to be pinned. Any other input value will leave the note unpinned.
💡 Set ISARCHIVE to “true” if you want the note to be archived. Any other input value will leave the note unarchived.

Subsequently, the application prompts the user to enter the content of the note.

Example of usage:

add-n /t JavaDocs /tag CS2113 /pin true OR

add-n /t JavaDocs /pin true OR

add-n /t JavaDocs /tag CS2113

Enter Note: 
*/del to delete previous line*
*/end on a new line to end note input*

Test Note line 1
Line 2
/end

💡 Note content must have at least 1 line.
💡 Use /del to delete the previous line.
💡 Use /end on a new line to denote the end of the note.

Expected output:

addNote

3.3 List Notes: list-n

Shows a list of all the notes in the notebook.

Format: list-n [/tag TAG_1] [/tag TAG_2]... [/sort DIRECTION] [/archive]

  • Specifying [/archive] will ONLY show archived notes. Even if the other optional parameters are listed, archived notes nor will any other notes be filtered or sorted.
  • Specifying [/tag TAG] will only show the notes with the relevant tag.
  • Specifying [/sort DIRECTION] will show the sorted list in ascending or descending alphabetical order according to the title of the notes.

Example of usage:

list-n /tag CS2113

list-n /sort up

list-n /archive

💡 Use /sort up to display the list of notes in ascending order (A-Z).
💡 Use /sort down to display the list of notes in descending order (Z-A).
💡 The archived notes will ONLY be listed in chronological order.

💡 The content of the note is truncated, thus partial content may be displayed when listing the notes. To view the full content of a particular note, use the view note command.
💡 Even if you input anything beyond list-n or /archive without the command delimiter (/), the program will execute the command. For example, list-n the notes or list-n /archive test example will still result in the program listing the notes/archived notes.

Expected output:

listNote

3.4 View Note: view-n

View the selected note.

Format: view-n [/i INDEX] [/t TITLE]

  • Views the note at that index or with the specific title entered. The index refers to the index number shown in the displayed note list. The index must be a positive integer (1, 2, 3, …).
  • At least one of the optional fields must be provided.
  • If both the fields are provided, only the first one entered will be used to search for the note.

Example of usage:

view-n /i 1

view-n /t JavaDocs

Expected output:

viewNote

3.5 Edit Note: edit-n

Edits an existing note.

Format: edit-n /i INDEX [/t TITLE] ([/add INDEX STRING] OR [/ln LINE_INDEX CONTENTS] OR [/del INDEX]) [/c CONTENT] [/tag TAG TAG_COLOR /tag TAG1 TAG_COLOR...]

  • Edits a note at the specified INDEX. The index refers to the index number shown in the displayed note list. The index must be a positive integer (1, 2, 3, …).
  • Only multiple use of the same type prefix [/add LINE_INDEX CONTENT], [/ln LINE_INDEX CONTENT], [/del LINE_INDEX] can be used per edit.
  • [/add LINE_INDEX CONTENT] inserts the CONTENT at the specified LINE_INDEX to the note.
  • [/ln LINE_INDEX CONTENT] edits the CONTENT of the specified LINE_INDEX in the note.
  • [/del LINE_INDEX] deletes the CONTENT of the specified LINE_INDEX in the note.
  • 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 will be removed, while the non-existing tags will be added.

💡 Each note has to have a UNIQUE title and it is CASE-INSENSITIVE.
💡 As an extension to the above point, new notes cannot have the same title as those archived.
💡 Note content must have at least 1 line.

Example of usage:

edit-n /i 2 /t JavaDocs Notes

edit-n /i 2 /ln 1 Line 1 /c @param refers to parameters

edit-n /i 2 /add 2 Line 2.1 /add 3 Line 2.2

edit-n /i 2 /del 1 /del 2

Expected output:

editNote

3.6 Find Notes: find-n

Finds the notes and return a list of notes that contain the keyword(s) in the title.

Format: find-n KEYWORDS

Example of usage:

find-n C++ to Java

find-n Java

Expected output:

findNote

3.7 Pin Note: pin-n

Pins an unpinned note to the top of the note list or unpin a pinned note.

Format: pin-n [/i INDEX] [/t TITLE]

  • Pins a note to the top of the list. A pinned note will be unpinned. The index refers to the index number shown in the displayed note list. The index must be a positive integer (1, 2, 3, …).
  • At least one of the optional fields must be provided.
  • If both fields are provided, only the first one will be used to pin the note.

Example of usage:

pin-n /i 1

pin-n /t JavaDoc

Expected output:

pinNote

3.8 Archive Note: archive-n

Archives a note.

Format: archive-n [/i INDEX] [/t TITLE]

  • The content of archived notes are unable to be viewed. To view the content, you would need to unarchive the notes first.
  • The archived note will no longer be visible in the main notebook. To view the list of archived notes refer to list-n.
  • The index refers to the index number shown in the displayed note list. The index must be a positive integer (1, 2, 3, …).
  • At least one of the optional fields must be provided.

Example of usage:

archive-n /i 1

archive-n /t JavaDoc

Expected output:

archiveNote

3.9 Unarchive Note: unarchive-n

Unarchives a note.

Format: unarchive-n [/i INDEX] [/t TITLE]

  • The index refers to the index number shown in the displayed note list. The index must be a positive integer (1, 2, 3, …).
  • At least one of the optional fields must be provided.

Example of usage:

unarchive-n /i 1

unarchive-n /t JavaDoc

Expected output:

unarchiveNote

3.10 Delete note: delete-n

Deletes an existing note.

Format: delete-n [/i INDEX] [t/TITLE]

  • Deletes the note at that index or with the specific title entered. The index refers to the index number shown in the displayed note list. The index must be a positive integer (1, 2, 3, …).
  • At least one of the optional fields must be provided.

💡 Partial title input is NOT possible.

Example of usage:

delete-n /i 1

delete-n /t JavaDocs

Expected output:

deleteNote

3.11 Create Tags: create-t

Create tags.

Format: create-t /tag TAG [TAG_COLOR] [/tag TAG]...

  • Creates a tag with the name TAG. TAG can only be a single word.
  • [TAG_COLOR] is an optional input to specify the tag color to display. The possible colors are red, green, blue, yellow, purple, cyan, white. If no color is specified, or an invalid input is entered, the color of the tag will be set to the default white color. This applies to all other inputs that have /tag TAG [TAG_COLOR] as an optional field as well.
  • The user can create multiple tags within a single line.

💡 Creating a tag that already exists will override the tag color.

Example of usage:

create-t /tag CS2113

create-t /tag important red /tag CS2113 blue

Expected output:

createTag

3.12 List Tags: list-t

Shows a list of tags that have been created.

Example of usage:

list-t

Expected output:

listTag

3.13 Tag/Untag Notes: tag-n

Tags or untags a note with the given tag name.

Format: tag-n /i INDEX /tag TAG [TAG COLOR] [/tag TAG]...

  • Tags a note with a given TAG. If the note already contains the TAG, the tag will be removed from the note.The index refers to the index number shown in the displayed note list. The index must be a positive integer (1, 2, 3, …).
  • The user can create tag or untag multiple tags to a note within a single line.

💡 If the user tries to tag a non-existing tag to a note, the application will automatically create a new tag, and add the tag to the note.

Example of usage:

tag-n /i 1 /tag CS2113

tag-n /i 1 /tag CS2113 /tag important

Expected output:

tagNote

3.14 Tag/Untag Events: tag-e

Tags or untags an event with the given tag name.

Format: tag-e /i INDEX /tag TAG [TAG COLOR] [/tag TAG]...

  • Tags a note with a given TAG. If the event already contains the TAG, the tag will be removed from the event.The index refers to the index number shown in the displayed event list. The index must be a positive integer (1, 2, 3, …).
  • The user can create tag or untag multiple tags to an event within a single line.

💡 If the user tries to tag a non-existing tag to an event, the application will automatically create a new tag, and add the tag to the event.

Example of usage:

tag-e /i 1 /tag CS2113

tag-e /i 1 /tag CS2113 /tag important

Expected output:

tagEvent

3.15 Delete Tags: delete-t

Deletes a tag from the list of tags and remove the tag from the related notes and events.

Format: delete-t /tag TAG [/tag TAG]...

  • Deletes the tag with the name TAG.
  • The user can delete multiple tags within a single line.
  • Notes and events with the tag, will have the tag removed.

Example of usage:

delete-t /tag CS2113

Expected output:

deleteTag

3.16 Add Event: add-e

Adds an event to the list.

Format: add-e /t TITLE /timing DATETIME [/end DATETIME] [/repeat REPEAT] [/stop REPEAT_END] [/remind REMIND] [/tag TAG_1] [/tag TAG_2]...

  • Events have a default duration of 1 hour if [/end] is not specified.
  • Events must end on the same day they start.
  • Events cannot end before they start
  • Specifying [/end DATETIME] will set the event to end a specific time.
  • Specifying [/repeat RECURRING] will set the event as a recurring event.
  • Specifying [/remind REMIND] will set the program to remind the event.

💡 DATETIME format pattern “yyyy-MM-dd HH:mm”
💡 Repeat inputs can be daily, weekly, monthly, yearly
💡 Remind inputs can be [1-7]-day or 1-week
💡 Remind inputs can be chained to indicate multiple reminders

Example of usage:

add-e /t CS2113 Tutorial /timing 2020-10-30 13:00 /end 2020-10-30 19:00 /repeat weekly /remind 1-day 3-day

Expected output:

addEvent

3.17 Edit Event: edit-e

Edits an existing event in the event list/timetable.

Format: edit-e /i INDEX [/t TITLE] [/timing DATETIME] [/end DATETIME] [/repeat REPEAT] [/stop REPEAT_END] [/remind-add REMIND] [/remind-drop REMIND] [/remind-clear]

  • Edits the event at the specified INDEX. The index refers to the index number shown in the displayed events list. The index must be a positive integer (1, 2, 3, …).​
  • At least one of the optional fields must be provided [/t TITLE], [/timing DATETIME], [/end DATETIME], [/repeat REPEAT], [/stop REPEAT_END], [/remind-add REMIND], [/remind-drop REMIND], [/remind-clear] [.
  • Existing values will be updated to the input values.
  • End date time must be on the same day as start date time.
  • Specifying [/timing DATETIME] without [/end DATETIME] will have event duration maintained and end datetime changed. If end datetime would be past 2359, end datetime would be set at 2359.
  • Specifying [/repeat RECURRING] will set the event that type of event.
  • Specifying [/remind-add REMIND] will add that reminder to the event if it does not exist.
  • Specifying [/remind-drop REMIND] will delete that reminder from the event if it exists.
  • Specifying [/remind-add REMIND] will remove all reminders in the event if any exists.

💡 DATETIME format pattern “yyyy-MM-dd HH:mm”
💡 Repeat inputs can be none, daily, weekly, monthly, yearly
💡 Remind inputs can be [1-7]-day or 1-week
💡 Remind inputs can be chained to indicate multiple reminders

Example of usage:

edit-e /i 1 /t CS2113 Lecture /timing 2020-10-30 16:00 /stop 2020-12-01 12:00 /remind-clear

Expected output:

editEvent

3.18 List Events: list-e

Display the module timetable on the current day.

Format: list-e [/timing Year] [/timing Year-Month]

  • You can only specify either [/timing Year] or [/timing Year-Month] not both. If both is included, only the last one will be read.
  • Having no optional prefixes will display all events stored. Recurring events will only display once. Index shown is the index used when deleting or editing events.
  • Specifying [/timing Year] will display all events for the year. Will include repeated events.
    💡 Year format pattern “YYYY”.
  • Specifying [/timing Year-Month] will display all events for that month. Will include repeated events.
    💡 Year format pattern “YYYY-MM”.

Example of usage:

list-e /timing 2020-10

Expected output:

listEvent

3.19 Remind: remind-e

Reminds the specified event from the timetable.

Format: remind-e

  • Shows all reminders for today.

Example of usage:

remind-e

Expected output:

remindEvent

3.20 Delete Event: delete-e

Adds a new item to the list of todo items.

Format: delete-e INDEX

  • Deletes the event at the specified INDEX. The index refers to the index number shown in the displayed event list (list-e). The index must be a positive integer (1, 2, 3, …).

Example of usage:

delete-e 1

Expected output:

deleteEvent

3.21 Exit: exit

Exits the program.

💡 Even if you input anything beyond exit, the program will terminate. For example, exit the program will still result in the program being terminated.

Example of usage:

exit

4. FAQ

Q: How do I transfer my data to another computer?

A: The notes along with the list of all the notes and event are automatically saved in a human editable text file, whenever there is a change made. Once exported, you can transfer the file over to the new computer and load the data.

Q: What if the app crashes half way through what happens to my data?

A: All the data is saved in a text file whenever there are changes made throughout the program. Hence, you can start NotUS again and the updated data will be loaded in.

Q: What if I don’t remember some of the commands?

A: Type the command help for a list of useful commands.

5. Command Summary

Target Action Example Code(s)
View command list help
Add note add-n /t JavaDocs /tag CS2113 /pin true
add-n /t JavaDocs /pin true
add-n /t JavaDocs /tag CS2113
add-n /t JavaDocs

@param refers to param
@return refers to item to be returned
Archive note archive-n /t JavaDocs
archive-n /i 1
Unarchive note unarchive-n /t JavaDocs
unarchive-n /i 1
List notes list-n
list-n /archive
list-n /tag CS2113
list-n /sort up
Or any combination with /tag and /sort
View note view-n /i 1
view-n /t JavaDocs
view-n /i 1 /t JavaDocs
Edit note edit-n /i 2 /t JavaDocs Notes
edit-n /i 2 /ln 1 /c @param refers to parameters
edit-n /i 2 /tag Notes
Or any combination with /t, [/ln + /c] and /tag
Target Action Example Code(s)
Find notes find-n Java
Pin note pin-n /t JavaDocs Notes
pin-n /i 1
Delete note delete-n /t JavaDocs Notes
delete-n /i 1
Create tag create-t /tag Important red
create-t /tag NUS /tag CEG yellow
List tags list-t
Tag/Untag tag /i 1 /tag Important
tag /i 1 /tag Important red
tag /i 1 /tag Important red /tag NUS /tag CEG yellow
Delete tag delete-t /tag Important
delete-t /tag Important red
delete-t /tag NUS /tag CEG yellow
Add event add-e /t CS2113 /timing 2020-10-16 16:00
add-e /t CS2113 Lecture /timing 2020-10-16 16:00 /repeat ...
add-e /t CS2113 Lecture /timing 2020-10-16 16:00 /end 2020-10-16 18:00 /remind ...
Or any combination with /end, /repeat, /stop and /remind
Edit event edit-e /i 1 /t CS2113 Lecture
edit-e /i 1 /timing 2020-10-16 15:55
edit-e /i 1 /repeat ...
edit-e /i 1 /remind ...
Or any combination with /t, /timing, /end, /repeat, /stop and /remind
Target Action Example Code(s)
Event Manager list-e
list-e /timing 2020-02
Remind remind-e
Delete event delete-e 1
Exit exit