Skip to content

Requirements

Cotapher edited this page Jun 30, 2022 · 2 revisions

Baseline definition

Our baseline requirements are to have a basic functioning note taking application that runs on a Desktop. For the note-taking functionality, this means that the app must be able to create/edit/delete notes, view the notes, sort the list of notes, and ensure that the user's notes persist once the app is closed. Furthermore, we also had to make the app easy to start with the option to exit once launched. While the app's running, the window also needed to be resizable and our UI components should be fairly responsive. After exiting the app, the window size and position should also be maintained per the user's preferences. Additionally for a good experience, the app should have a straightforward user interface and should be optimized for mouse and keyboard, such as having common keyboard shortcuts (ex. Ctrl-C, Ctrl-V, etc.). Finally, users should always be prompted to save their data if they are closing or app, and be prompted when deleting any sort of data. Eventually, the data could be stored in a database so the user's notes are persisted even after the app is closed.

Functional Requirements

Our team identified some basic functionalities that were essential to a note taking application. Users can create notes, save them and load them when they want to access them again. Within the notes, users can adjust font size, and add rich text formatting, which includes bolding, italicizing and underlining to name a few. Moreover, you can search for a word within your notes and replace all instances of it. Then, the user can save their note so that after the application is closed, the user can go back to that note and continue editing it. Finally, all of these features can be accessed through a menu bar at the top of the application.

Our team also identified some additional features that are more unique to our note app to help it stand out. Firstly, users can choose to work in the default light theme, or they can switch to use a dark theme. Their theme preference will also be saved so that the next time the user opens the app, it will be in the theme that they last chose. Furthermore, while they are creating their notes, users can check their usage statistics - number of words, number of characters, etc. Then, when users are finished writing their nicely formatted notes, we have the option to let the users export their notes into a PDF and save it in their local file system, as a PDF is more readable file format than an HTML file. Finally, to have our application catered more towards software developers, we integrated code block syntax highlighting, where users can choose a block of text in their note, and the app will apply syntax highlighting according to the user's programming language of choice.

Additionally, to go beyond local saving of the notes, we also added a backup and restore option where users can back up their notes to the H2 database that is hosted by a local server. Once the notes are backed up, then if for some reason the user's computer crashes or their local files get corrupted, they can restore their notes from their most recent backup, to obtain their notes again!

Non-Functional Requirements

Our application is very simple to navigate, and has a straightforward user interface, which increases the usability of the app. Moreover, it can run on all Desktop operating systems as we are able to create the Kotlin installer for Linux, Mac, and Windows. For our app, there is an installer for the Linux OS, and for the other operating systems, users need to install the jar file in order to run the program (we unfortunately ran into a lot of issues creating installers for Mac and Windows). Finally, another non-functional requirement that our team identified is robustness. The main functionalities of our app runs fully offline, as we create an internal .paninotes folder in the user's home directory to store local copies of all their notes and notebooks. And then, when users have internet connection, they can backup their data into the database which is hosted on our local web server.

Clone this wiki locally