Skip to content

[RandomNerd01] iP#682

Open
RandomNerd01 wants to merge 67 commits into
nus-cs2103-AY2526S1:masterfrom
RandomNerd01:master
Open

[RandomNerd01] iP#682
RandomNerd01 wants to merge 67 commits into
nus-cs2103-AY2526S1:masterfrom
RandomNerd01:master

Conversation

@RandomNerd01

Copy link
Copy Markdown

MeowTheCat 😺

“Time spent with cats is never wasted.”

MeowTheCat is your purr-fect companion for managing tasks and deadlines—because who said productivity can't be cute?

It’s:

  • 🐾 user-friendly
  • 🧶 fun to use
  • 🚀 FAST. REALLY FAST.

To get started:

  1. Download it from here
  2. Run the app
  3. Start adding tasks
  4. Let MeowTheCat organize your life for you! 🐱

Features

  • Add tasks
  • Mark tasks as done
  • Delete tasks
  • Set deadlines (coming soon)
  • Add reminders (coming soon)

Sample Code

If you're a Java programmer, you can use MeowTheCat to practice Java as well. Here's a snippet from the Main.java file:

Meow

damithc and others added 30 commits July 11, 2024 16:52
In build.gradle, the dependencies on distZip and/or distTar causes
the shadowJar task to generate a second JAR file for which the
mainClass.set("seedu.duke.Duke") does not take effect.
Hence, this additional JAR file cannot be run.
For this product, there is no need to generate a second JAR file
to begin with.

Let's remove this dependency from the build.gradle to prevent the
shadowJar task from generating the extra JAR file.
…d 'list' command to display all stored tasks. Also allowed adding of tasks to list.
…mented 'mark' and 'unmark' commands to update task completion status. Updated task display format to show [X] for done and [ ] for not done. Introduced a Task class to encapsulate task data and behavior.
…out date/time. Deadline: Tasks with a deadline using /by. Event: Tasks with a start and end time using /from and /to.
… descriptions with error message, Handled unrecognized commands with error message

@Lzkkuan Lzkkuan left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The code is awesome and the kitty is cute (●'◡'●). Just some small styling issues and it'll be perfect :D

String cmd = CommandParser.commandType(line);

switch (cmd) {
case "bye":

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Case clauses should not be indented (no extra indent under switch). probably can align case with switch per project style.

Comment thread src/main/java/meowthecat/MeowCat.java Outdated
for (int i = 0; i < all.size(); i++) {
sb.append((i + 1)).append(".").append(all.get(i)).append("\n");
}
sb.append("____________________________________________________________");

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Magic string repeated many times. Can you consider extracting them to private static final String SEPARATOR = "_____..."; and reuse for maintainability?

public void initialize() {
scrollPane.vvalueProperty().bind(dialogContainer.heightProperty());
System.out.println("Classpath root -> " + getClass().getResource("/"));
System.out.println("Check cat.png -> " + getClass().getResource("/cat.PNG"));

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Probably can remove debug System.out prints from production code and use a logger (or delete) to keep GUI output clean.

meowImage = new Image(this.getClass().getResourceAsStream("/cat.PNG"));
}

/** Injects the Duke instance */

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Can change the Duke to meow to match the class

fxmlLoader.load();
} catch (IOException e) {
e.printStackTrace();
System.out.println("Dialog.fxml");

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Although we know which file it is pointing at, but probably can consider a more straightforward path, like "/view/DialogBox.fxml". This better match the actual resource.

@@ -0,0 +1,12 @@
package meowthecat;

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Can add a blank line between package and import. Also works for other files

RandomNerd01 and others added 29 commits September 7, 2025 10:56
Current situation: Some public methods lack defensive assertions and can
be used incorrectly by callers (e.g. null/invalid inputs). This makes
the project more brittle and harder to debug.

Why change: Add targeted assertions to catch programmer mistakes early
and to provide clearer failures during development and testing.

What is done:
Add assertions in MainWindow, DialogBox and MeowCat where necessary.
Current situation: A lot of the code does not follow
java coding standard

Why change: Improve developer experience by making
code more readable

What is done:
Add Javadoc to public methods where missing.
Follow java coding standard.
Current situation: Several places use imperative loops that are
harder to understand.

Why change: Streams express intent more clearly,
making the code easier to reason about and test.

What is done:
Replace manual iteration with Stream pipeline in TaskCollection
and MeowCat.
Add assertion checks so certain points in code no errors
Fix imports
Fix conflict issues
Fix conflict issues again
Use Java Streams to simplify collection processing.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants