Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
77 commits
Select commit Hold shift + click to select a range
68c58c1
Add Gradle support
May 24, 2020
03523ec
Bump gradle and lib version
Eclipse-Dominator Aug 5, 2023
81a9c53
build.gradle: Prevent generating a second JAR file
aureliony Jul 16, 2024
d4f5e4d
Greeting
nicho369 Aug 22, 2025
e05535f
add and list implemented
nicho369 Aug 22, 2025
ad6c1e9
implemented Task class
nicho369 Aug 22, 2025
351fc6c
implemented marking and unmarking
nicho369 Aug 22, 2025
f88df9c
Created subclasses for Task
nicho369 Aug 22, 2025
68ddd48
implemented Deadline, ToDo, Event subclasses
nicho369 Aug 22, 2025
72389d5
chatbot now logs todo, event, deadline
nicho369 Aug 23, 2025
7a978ce
debugged event and deadline
nicho369 Aug 23, 2025
dae5785
added some comments
nicho369 Aug 23, 2025
833de7f
introduced basic error handling
nicho369 Aug 23, 2025
450cce7
more comments
nicho369 Aug 24, 2025
b5dc481
implemented buggy delete keyword
nicho369 Aug 24, 2025
67a9ff3
reimplemented delete keyword, fixed bugs
nicho369 Aug 24, 2025
b0c4273
implemented text ui testing
nicho369 Aug 24, 2025
ebf8fa3
add more comments
nicho369 Aug 31, 2025
5c53a2c
create Storage class
nicho369 Sep 2, 2025
8244b87
create toFileFormat method
nicho369 Sep 2, 2025
34e7bf0
add TaskDecoder class to read tasks from hard disk
nicho369 Sep 2, 2025
685fb4e
implement AngSoonTong to work with new storage feature
nicho369 Sep 2, 2025
e2efa20
merge branch-level-7
nicho369 Sep 3, 2025
5aa8e9e
Implement LocalDate in Event and Deadline subclass
nicho369 Sep 3, 2025
ad7b803
Debug Event class
nicho369 Sep 3, 2025
93c24b1
Implement proper date and time
nicho369 Sep 4, 2025
9766c88
implement Parser class
nicho369 Sep 5, 2025
667ff89
implement Ui class
nicho369 Sep 5, 2025
6845080
integrated Ui into AngSoonTong
nicho369 Sep 5, 2025
9472cef
integrate TaskList into AngSoonTong
nicho369 Sep 6, 2025
b1672fc
backup before changing main method
nicho369 Sep 6, 2025
91ce085
integrate and optimise all new classes to AngSoonTong
nicho369 Sep 6, 2025
8a154ce
minor changes to ui message formatting
nicho369 Sep 6, 2025
c0444d3
package class files part 1
nicho369 Sep 6, 2025
815ef57
debugged packages and imports
nicho369 Sep 6, 2025
25349b7
Merge branch 'branch-gradle'
nicho369 Sep 6, 2025
6e6f705
implement test structure and ParserTest class for JUnit testing
nicho369 Sep 6, 2025
4cc601a
implement tests in TaskListTest class for JUnit testing
nicho369 Sep 6, 2025
61ef0ad
package JAR file
nicho369 Sep 6, 2025
e4166ee
add JavaDoc comments
nicho369 Sep 6, 2025
048cc08
tweak code to comply with coding standard
nicho369 Sep 6, 2025
97fb9c8
implement find feature for chatbot
nicho369 Sep 6, 2025
f7a4a37
Merge branch 'branch-A-JavaDoc' and 'branch-Level-9'
nicho369 Sep 6, 2025
3b7c41d
Merge branch 'branch-A-CodingStandard'
nicho369 Sep 6, 2025
091cd25
setup JavaFX for gui implementation
nicho369 Sep 7, 2025
bfaca7f
create basic gui layout
nicho369 Sep 7, 2025
e8c912d
implement basic user input features
nicho369 Sep 7, 2025
ec2d860
integrate AngSoonTong chatbot to GUI v1.0
nicho369 Sep 8, 2025
b589ef8
optimise build.gradle to make new JAR file
nicho369 Sep 16, 2025
a99a5f8
add assertions
nicho369 Sep 16, 2025
e6f2372
improve code quality
nicho369 Sep 16, 2025
8c938dc
Merge pull request #2 from lanjia0/branch-A-Assertions
nicho369 Sep 16, 2025
d13a139
Merge pull request #3 from lanjia0/branch-A-CodeQuality
nicho369 Sep 16, 2025
a6decb7
add tagging feature
nicho369 Sep 17, 2025
7eb61b0
debug CLI to GUI migration issues
nicho369 Sep 17, 2025
4f5587e
add new image files under resources
nicho369 Sep 17, 2025
cbf2a47
add more unique and personalised replies
nicho369 Sep 17, 2025
a21c2a9
implement untag feature suggested by AI
nicho369 Sep 18, 2025
555de08
implement feature where chatbot plays a song
nicho369 Sep 18, 2025
437c0a4
add songs for sing feature
nicho369 Sep 19, 2025
2581849
edit README.md
nicho369 Sep 20, 2025
f575ef1
edit README.md pt 2
nicho369 Sep 20, 2025
6be9a8d
edit README.md pt 3
nicho369 Sep 20, 2025
2d0852b
add screenshot of GUI
nicho369 Sep 20, 2025
652abdb
edit README.md pt 4
nicho369 Sep 20, 2025
3f256ca
misc.
nicho369 Sep 20, 2025
fe5fc8b
removed JUNIT test that was not needed
nicho369 Sep 20, 2025
74d471e
Add JavaDoc comments for JUNIT test classes
nicho369 Sep 21, 2025
7d2b481
Add JavaDoc comments for Ui, TaskList, TaskDecoder, Task class and it…
nicho369 Sep 21, 2025
89c8d6c
Add JavaDoc comments for Parser, Storage classes
nicho369 Sep 21, 2025
5139617
Add JavaDoc comments for DialogBox, MainApp and MainWindow classes
nicho369 Sep 21, 2025
395b6ec
Update README.md
nicho369 Sep 21, 2025
c21a1bc
Edit README.md to fix mistakes
nicho369 Sep 21, 2025
ebe6f0a
Merge branch 'master' of https://github.com/lanjia0/ip
nicho369 Sep 21, 2025
c6e8adf
Update README.md with screenshot
nicho369 Sep 21, 2025
2154970
Update README.md for better visuals
nicho369 Sep 21, 2025
ce8c806
Update build.gradle dependencies for .jar build
nicho369 Sep 24, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions META-INF/MANIFEST.MF
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
Manifest-Version: 1.0
Main-Class: angsoontong.AngSoonTong

36 changes: 15 additions & 21 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,26 +1,20 @@
# Duke project template
### Ang Soon Tong Chatbot ###
> **Ang Soon Tong is a secret society and gang based in Singapore and Malaysia which has been active since the 1950s, mainly in the Sembawang area of Singapore.**

This is a project template for a greenfield Java project. It's named after the Java mascot _Duke_. Given below are instructions on how to use it.
[Soon Tong](https://soundcloud.com/21ast/21-ast-pht-gss-18siaokimtian) is your friendly neighbourhood ah beng, he can help you:

## Setting up in Intellij
- Keep track of your daily tasks/commitments
- Entertain you
- Lend a listening ear
- Talk to you ~politely~

Prerequisites: JDK 17, update Intellij to the most recent version.
Here's 3 fun facts about Soon Tong

1. Open Intellij (if you are not in the welcome screen, click `File` > `Close Project` to close the existing project first)
1. Open the project into Intellij as follows:
1. Click `Open`.
1. Select the project directory, and click `OK`.
1. If there are any further prompts, accept the defaults.
1. Configure the project to use **JDK 17** (not other versions) as explained in [here](https://www.jetbrains.com/help/idea/sdk.html#set-up-jdk).<br>
In the same dialog, set the **Project language level** field to the `SDK default` option.
1. After that, locate the `src/main/java/Duke.java` file, right-click it, and choose `Run Duke.main()` (if the code editor is showing compile errors, try restarting the IDE). If the setup is correct, you should see something like the below as the output:
```
Hello from
____ _
| _ \ _ _| | _____
| | | | | | | |/ / _ \
| |_| | |_| | < __/
|____/ \__,_|_|\_\___|
```
1. He knows 2 languages - hokkien and java
2. **Humsup**
3. Likes Matcha 🍵🍃 and Clairo

**Warning:** Keep the `src\main\java` folder as the root folder for Java files (i.e., don't rename those folders or move Java files to another folder outside of this folder path), as this is the default location some tools (e.g., Gradle) expect to find Java files.
His hobbies

- [x] Legal activities
- [ ] Listen to his [favourite song](https://soundcloud.com/nicholas-chong-19/crazy-baby-nightcore-remix?si=4a9cc4d856c940eab66aadf5184fc5b4&utm_source=clipboard&utm_medium=text&utm_campaign=social_sharing)
69 changes: 69 additions & 0 deletions build.gradle
Original file line number Diff line number Diff line change
@@ -0,0 +1,69 @@
plugins {
id 'java'
id 'application'
id 'com.github.johnrengelman.shadow' version '7.1.2'
}

repositories {
mavenCentral()
}

dependencies {
testImplementation group: 'org.junit.jupiter', name: 'junit-jupiter-api', version: '5.10.0'
testRuntimeOnly group: 'org.junit.jupiter', name: 'junit-jupiter-engine', version: '5.10.0'
implementation 'org.openjfx:javafx-controls:22.0.2'
implementation 'org.openjfx:javafx-fxml:22.0.2'
implementation 'org.openjfx:javafx-controls:22.0.2'
implementation 'org.openjfx:javafx-media:22.0.2'
testImplementation 'org.junit.jupiter:junit-jupiter:5.10.0'


String javaFxVersion = '17.0.7'

implementation group: 'org.openjfx', name: 'javafx-base', version: javaFxVersion, classifier: 'win'
implementation group: 'org.openjfx', name: 'javafx-base', version: javaFxVersion, classifier: 'mac'
implementation group: 'org.openjfx', name: 'javafx-base', version: javaFxVersion, classifier: 'linux'
implementation group: 'org.openjfx', name: 'javafx-controls', version: javaFxVersion, classifier: 'win'
implementation group: 'org.openjfx', name: 'javafx-controls', version: javaFxVersion, classifier: 'mac'
implementation group: 'org.openjfx', name: 'javafx-controls', version: javaFxVersion, classifier: 'linux'
implementation group: 'org.openjfx', name: 'javafx-fxml', version: javaFxVersion, classifier: 'win'
implementation group: 'org.openjfx', name: 'javafx-fxml', version: javaFxVersion, classifier: 'mac'
implementation group: 'org.openjfx', name: 'javafx-fxml', version: javaFxVersion, classifier: 'linux'
implementation group: 'org.openjfx', name: 'javafx-graphics', version: javaFxVersion, classifier: 'win'
implementation group: 'org.openjfx', name: 'javafx-graphics', version: javaFxVersion, classifier: 'mac'
implementation group: 'org.openjfx', name: 'javafx-graphics', version: javaFxVersion, classifier: 'linux'
implementation group: 'org.openjfx', name: 'javafx-media', version: javaFxVersion, classifier: 'win'
implementation group: 'org.openjfx', name: 'javafx-media', version: javaFxVersion, classifier: 'mac'
implementation group: 'org.openjfx', name: 'javafx-media', version: javaFxVersion, classifier: 'linux'
}

test {
useJUnitPlatform()

testLogging {
events "passed", "skipped", "failed"

showExceptions true
exceptionFormat "full"
showCauses true
showStackTraces true
showStandardStreams = false
}
}

application {
mainClass.set("angsoontong.gui.Launcher")
}

shadowJar {
archiveBaseName = "angsoontong"
archiveClassifier = null
}

run {
standardInput = System.in
enableAssertions = true
}



4 changes: 4 additions & 0 deletions data/tasks.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
T | 1 | listen manyao#hailoksan, #airportkia
T | 0 | orbital
D | 0 | test | 2025-09-15
T | 0 | test
1 change: 1 addition & 0 deletions data/test-data.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
T | 0 | read book
126 changes: 112 additions & 14 deletions docs/README.md
Original file line number Diff line number Diff line change
@@ -1,30 +1,128 @@
# Duke User Guide
# Ang Soon Tong User Guide
> **Ang Soon Tong is a secret society and gang based in Singapore and Malaysia which has been active since the 1950s, mainly in the Sembawang area of Singapore.**

// Update the title above to match the actual product name
<img width="798" height="1248" alt="image" src="https://github.com/user-attachments/assets/99b6e451-8c52-49ec-8737-5dfc7d67d119" />

// Product screenshot goes here
[Soon Tong](https://soundcloud.com/21ast/21-ast-pht-gss-18siaokimtian) is your friendly neighbourhood ah beng, he can help you:

// Product intro goes here
- Keep track of your daily tasks/commitments
- Entertain you
- Lend a listening ear
- Talk to you ~politely~

## Adding deadlines
Here's 3 fun facts about Soon Tong

// Describe the action and its outcome.
1. He knows 2 languages - hokkien and java
2. **Humsup**
3. Likes Matcha 🍵🍃 and Clairo

// Give examples of usage
His hobbies

Example: `keyword (optional arguments)`
- [x] Legal activities
- [x] Listen to his [favourite song](https://soundcloud.com/nicholas-chong-19/crazy-baby-nightcore-remix?si=4a9cc4d856c940eab66aadf5184fc5b4&utm_source=clipboard&utm_medium=text&utm_campaign=social_sharing)

// A description of the expected outcome goes here
## The 3 Types of Tasks

Soon Tong can help you keep track of 3 different kinds of tasks.

### 1. ToDo
Just plain, simple tasks - where the name is just enough.

Example: `todo go for class`

### 2. Deadline
Painful tasks you need to complete before a certain date.

Example: `deadline tutorial sheet /by 2025-09-15`

### 3. Event
For the events with start and end dates.

Example: `event aunt's funeral /from 2025-02-15 /to 2025-02-16`

## Delete
Remove added tasks easily, with the delete feature.

Example: `delete 2`\
Returns:
```
expected output
Ok la! I delete already ah:
[T][] task A
Now you got 1 task only.
```

## Feature ABC
## List
Shows you the current task list.

Example: `list`\
Returns:
```
Oi! This one your list:
1. [T][] task A
2. [D][X] task B (by: 16 Aug 2025)
```

## Mark/Unmark
This feature allows you to mark your tasks
as done when you finish them...

Example: `mark 2`\
Returns:
```
Ok la! Do already
[T][X] go for class
```

Or unmark marked tasks if you've made a mistake.

Example: `unmark 2`\
Returns:
```
Huh why haven't do?!
[T][] go for class
```

## Tag/Untag
Add more information to your tasks! By using tags #yay

Example: `tag 2 #fun #holiday`\
Returns:
```
Ok tag already! :
[T][] go bali { #fun, #holiday }
```

On the converse, use untag to remove tags.

Example: `untag 2 #fun #holiday`\
Returns:
```
Removed tags liao! :
[T][] go bali
```

## Find
Allows you to search for tasks with keywords.

Example: `find CS2100`\
Returns:
```
This one your matching tasks! :
[T][] CS2100 lecture
[T][X] CS2100 tutorial
```

## Sing
Arguably the best feature here - listen to Soon Tong sing a song for you.

Example: `sing`

// Feature details
Try it for yourself to find out what it does! Soon Tong knows quite a few songs!

## Bye
And finally, when you are done chatting with Soon Tong. Bye lets you quit the chatbot.

## Feature XYZ
Example: `bye`\
Returns: `Bye. You still here for what?!`

// Feature details
The chatbot closes automatically afterward.
Binary file added docs/Ui.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added gradle/wrapper/gradle-wrapper.jar
Binary file not shown.
7 changes: 7 additions & 0 deletions gradle/wrapper/gradle-wrapper.properties
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-7.6.2-bin.zip
networkTimeout=10000
validateDistributionUrl=true
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
Loading