Zhu Hanming | A0196737L
This application was written for CS2103 - Software Engineering, as part of its Individual Project. Through this project, students are expected to learn more about managing a medium-sized project and get used to SE practices.
- Extensive Testing Using JUnit and Mockito
Close to 90 JUnit tests were written to test each individual part of the program, ensuring that everything operates as expected. Due to time constraints, there are still parts that are missing tests.
It was a good learning experience for me, as I had never worked with JUnit and Mockito prior to this project.
- Data Storage using Gson and JSON
All data exchanged in the application are properly stored in JSON format using the Gson library by Google. This data is persisted between sessions, and allow users to keep a copy of their tasks with them at all times.
This was also my first time in working with the Gson library and with JSON files in Java, and was a good experience too.
- Responsive JavaFX UI with Dark and Light Mode
It was also my first time using JavaFX to design user interfaces for Java. Having prior experience with UI/UX design, I sought to bring about the best design I could with my limited knowledge of JavaFX. As such, I extended on the default UI to arrive at the above app, and built a Dark Mode as well for the sake of my eyes.
The app is also fully reponsive, and supports full-screen usage.
- Command Line Interface for the Command Line Lovers
For those of you who love command lines and terminals, fret not - Duchess fully supports CLI usage as well! Simply run the program via CLI with the flag -mode console
and you will be able to utilise the CLI version of the app!
- And PLENTY of features built to enhance your experience!
There are lots of features built to support your task management, which includes:
- Undo - We all make mistakes!
- Archive - Clean up your list of tasks without deleting these tasks completely!
- Set Recurring Deadlines - Don't worry about ever missing your weekly lessons again!
- Find specific tasks - Simply search for keywords to instantly find your task!
- Statistics - Get data about how you're performing instantly!
And MORE! Get started with Duchess now to explore all of its options!
You can download a working, cross-platform JAR file containing the application right here at the Releases page. You can launch the app by either double clicking it, or running it in the command line with the command: java -jar duke-0.2.2.jar -mode console
.
Prerequisites
- JDK 11
- Recommended: IntelliJ IDE
- Fork this repo to your GitHub account and clone the fork to your computer
Importing the project into IntelliJ
- 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.
- Click
Configure
>Structure for new Projects
(in older versions of Intellij:Configure
>Project Defaults
>Project Structure
). - If JDK 11 is listed in the drop down, select it. If it is not, click
New...
and select the directory where you installed JDK 11. - Click
OK
.
- Click
- Click
Import Project
. - Locate the project directory and click
OK
. - Select
Create project from existing sources
and clickNext
. - Rename the project if you want. Click
Next
. - Ensure that your src folder is checked. Keep clicking
Next
. - Click
Finish
.
Duke Increment | Tutorial |
---|---|
A-Gradle |
Gradle Tutorial |
A-TextUiTesting |
Text UI Testing Tutorial |
Level-10 |
JavaFX tutorials: → Part 1: Introduction to JavaFX → Part 2: Creating a GUI for Duke → Part 3: Interacting with the user → Part 4: Introduction to FXML |
- If you have feedback or bug reports, please post in se-edu/duke issue tracker.
- We welcome pull requests too.
- Gson by Google - For saving tasks into a JSON file.
- JUnit by JUnit Team - For testing classes and components in Duchess.
- Mockito by Mockito - For creating mocks in JUnit tests.
- JavaFX by OpenJDK - For creating user interfaces.
All images used in this project have been properly licensed for use. The photos are namely:
- Grumpy cat by fotyma
- Beautiful Young Red Shiba Inu Puppy Dog Sitting Outdoor In Sandy by Grigory_bruev
The photos have all been licensed under the Envato Elements License for CS2103 usage.