Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
80 commits
Select commit Hold shift + click to select a range
df6bb71
added new entities
stickycorner Nov 2, 2024
cd8991c
updated entities
stickycorner Nov 2, 2024
207bd65
added jenna to readme
stickycorner Nov 4, 2024
f82ef11
use case -> use cases rename file
stickycorner Nov 4, 2024
cfa25a9
package name change
stickycorner Nov 4, 2024
9dad988
added my name and github username to the README.md
iguehi-akhimien1 Nov 4, 2024
4efcfc0
edited the README.md
iguehi-akhimien1 Nov 4, 2024
8213ac0
Merge pull request #1 from PrishaPatel24/jenna
PrishaPatel24 Nov 4, 2024
1905022
Update README.md
PrishaPatel24 Nov 4, 2024
a43be40
added my user stories to the README.md
iguehi-akhimien1 Nov 4, 2024
923d41b
Merge remote-tracking branch 'origin/main'
iguehi-akhimien1 Nov 4, 2024
5fa5b2f
added my user stories to the README.md
iguehi-akhimien1 Nov 4, 2024
6e2695a
Update README.md
PrishaPatel24 Nov 4, 2024
bce7bfb
Update README.md
PrishaPatel24 Nov 4, 2024
9b9f4ed
Update README.md
PrishaPatel24 Nov 4, 2024
2e7dc9a
created view, added CA classes/interfaces for AI use cases
stickycorner Nov 9, 2024
52d3f6e
add_task use case initial work
PrishaPatel24 Nov 9, 2024
72df6c5
Merge remote-tracking branch 'origin/main'
iguehi-akhimien1 Nov 9, 2024
792a2d6
updated view package
stickycorner Nov 9, 2024
535a8d6
fix api key
stickycorner Nov 9, 2024
a242fa4
add_task view progress
PrishaPatel24 Nov 9, 2024
6ee4f1b
I am setting up the Notes view actions: save, view, delete...
iguehi-akhimien1 Nov 9, 2024
dfe8799
I am setting up the Notes view actions: save, view, delete...
iguehi-akhimien1 Nov 9, 2024
d3de711
dsajkda
stickycorner Nov 9, 2024
532d336
Merge remote-tracking branch 'origin/iguehi.akhimien' into iguehi.akh…
iguehi-akhimien1 Nov 10, 2024
eb85edf
I added the functionalities for add title, clear, upload and delete. …
iguehi-akhimien1 Nov 11, 2024
30e4489
added the views and updated the main note application to use them. st…
stickycorner Nov 11, 2024
98cf48e
Merge pull request #2 from PrishaPatel24/jenna
PrishaPatel24 Nov 11, 2024
26bea7d
interactor test for add_task use case
PrishaPatel24 Nov 11, 2024
ab11a50
committing my changes before git pull
PrishaPatel24 Nov 11, 2024
a73bd02
merged changes
PrishaPatel24 Nov 11, 2024
6492b11
connected my ChecklistView to Main
PrishaPatel24 Nov 11, 2024
bd667e7
Merge branch 'main' into iguehi.akhimien
iguehi-akhimien1 Nov 11, 2024
359809b
finalized checklist view and updated main to sync changes
PrishaPatel24 Nov 14, 2024
eb34e1d
added and completed entity tests
stickycorner Nov 18, 2024
066f4bf
Merge pull request #4 from PrishaPatel24/prisha.patel
stickycorner Nov 18, 2024
84dde9f
Merge branch 'main' of https://github.com/PrishaPatel24/ZenTask into …
stickycorner Nov 18, 2024
903d046
This is many commits in one commit.
iguehi-akhimien1 Nov 21, 2024
80bf70a
I am working on the Interactor now. I am fixing the current implement…
iguehi-akhimien1 Nov 21, 2024
62db340
completed ai use case updated the main application builder to take in…
stickycorner Nov 22, 2024
97d58b1
updated code for the calendar data and added service account credentials
stickycorner Nov 22, 2024
70183fd
refactored ChecklistView, modified Task entity test, implemented States
PrishaPatel24 Nov 24, 2024
632308c
Merge branch 'main' into iguehi.akhimien
iguehi-akhimien1 Nov 25, 2024
daf7961
added calendar API implementation (somewhat rudimentary) for the cale…
stickycorner Nov 25, 2024
2673ad2
deleted file
stickycorner Nov 25, 2024
a1a0b23
set up all the CA files for calendar use case
PrishaPatel24 Nov 25, 2024
0948154
Merge pull request #8 from PrishaPatel24/prisha.patel
stickycorner Nov 25, 2024
cf85f76
Merge branch 'main' into jenna
stickycorner Nov 25, 2024
eea8edb
Merge pull request #7 from PrishaPatel24/jenna
PrishaPatel24 Nov 25, 2024
40cd7cc
I implemented CA and deleted NoteAppBuilder.
iguehi-akhimien1 Nov 25, 2024
e709e86
Merge branch 'main' into iguehi.akhimien
iguehi-akhimien1 Nov 26, 2024
b3f6949
updated TaskState to use Task entities
PrishaPatel24 Nov 26, 2024
18fbe2e
I have started editing the README file as per the instructions on Que…
iguehi-akhimien1 Nov 27, 2024
f58231a
Merge remote-tracking branch 'origin/iguehi.akhimien' into iguehi.akh…
iguehi-akhimien1 Nov 27, 2024
031bc3a
I have started editing the README file as per the instructions on Que…
iguehi-akhimien1 Nov 27, 2024
53f0674
added text translation class and test
lizakochel Nov 12, 2024
0ec20ba
fixed package name
lizakochel Nov 12, 2024
59ee66a
added controller for translate button
lizakochel Nov 12, 2024
ee00b43
deleted some lines that were just for debugging
lizakochel Nov 12, 2024
9b47f52
note translation implemented
lizakochel Nov 25, 2024
45f5d19
added input boundary, output boundary, controller, presenter, interac…
lizakochel Nov 28, 2024
2c59fc6
Merge pull request #9 from PrishaPatel24/iguehi.akhimien
iguehi-akhimien1 Nov 28, 2024
bb86c1a
changed TranslationNoteTest to TranslationInteractorTest and fixed so…
lizakochel Nov 29, 2024
36330b7
fixed pom.xml
lizakochel Nov 29, 2024
97104c7
I am still working on the README.
iguehi-akhimien1 Nov 29, 2024
4502c3c
I am done with the content of the README.md. I need to include screen…
iguehi-akhimien1 Nov 30, 2024
c550403
Merge remote-tracking branch 'origin/iguehi.akhimien' into iguehi.akh…
iguehi-akhimien1 Nov 30, 2024
1983d85
wrote accessibility report
lizakochel Nov 30, 2024
59792c5
bug fixes
stickycorner Nov 30, 2024
11af58e
I started writing my tests for the interactor. I need to fix some thi…
iguehi-akhimien1 Dec 1, 2024
d93901c
One test works. I will add a test for failure.
iguehi-akhimien1 Dec 1, 2024
903d182
Merge pull request #10 from PrishaPatel24/prisha.patel
stickycorner Dec 1, 2024
f14d42b
Merge pull request #11 from PrishaPatel24/iguehi.akhimien
stickycorner Dec 1, 2024
21492ed
Merge branch 'main' into lizakochel
lizakochel Dec 1, 2024
fa2edd6
Update README.md
PrishaPatel24 Dec 1, 2024
26faa93
merge
stickycorner Dec 1, 2024
cde0d44
Merge pull request #3 from PrishaPatel24/lizakochel
stickycorner Dec 1, 2024
575df7a
completed calendar use case, updated event entity -> Events to reduce…
stickycorner Dec 2, 2024
779cad3
Merge pull request #13 from PrishaPatel24/jenna
PrishaPatel24 Dec 2, 2024
b85b7cc
complete interactor test for AI use case and started an implementatio…
stickycorner Dec 2, 2024
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
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ out/
!**/src/main/**/out/
!**/src/test/**/out/
.idea/easycode.ignore
.env

target/

Expand Down
15 changes: 15 additions & 0 deletions .idea/jarRepositories.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

132 changes: 106 additions & 26 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,36 +1,116 @@
# Note Application
# ZenTask

This is a minimal example demonstrating usage of the
password-protected user part of the API used in lab 5.
## Authors of the Project
1. Iguehi Akhimien - GitHub username: iguehi.akhimien
2. Jenna Zhang - GitHub username: stickycorner
3. Prisha Patel - GitHub username: PrishaPatel24
4. Liza Kochel - GitHub username: lizakochel

You can find more information about the API endpoints in
[the documentation](https://www.postman.com/cloudy-astronaut-813156/csc207-grade-apis-demo/documentation/fg3zkjm/5-password-protected-user).
## Summary of the Project
This project focuses on building a productivity app that allows the user to take notes, make a checklist list, and add events to their calendar.
This project was made to serve students, working professionals or anyone who want to better manage life.
Life can be hectic. Our goal is to create peace for the user, allowing them to manage life from one point.
From the onset of the project, the vision was to find a way to make a student's productivity convenient and all in one place.
So, the authors of the project created a "one-stop" life-management dashboard.

If your team is considering an application for which it would be convenient to
store data in something like a database, you may find that the API calls demonstrated
here will be useful in your project, as this will allow you to store
an arbitrary JSON object associated with a username and password.
### User Benefits:
* As a user, you can create a note within the program (although not save it permanently) to probably note down things you do not want to forget.
To help you, we have included a couple of features, such as translating text to a preferred language and completing your notes using Artificial Intelligence.
* As a user, you can also make a checklist of all your important tasks or things you do not want to procrastinate.
To keep track of things, you can tick off tasks as you go about completing them.
* As a user, you can see your upcoming events at a view while planning to complete your tasks on your checklist or when you are planning time to revisit what you noted down.

In this application, a single note has a name (the "username" in terms of the API) and the note
can be read by anyone who knows the name — but only edited by someone who
knows the password for it.
**ZenTask brings everything together!**

You can see the documentation in the various files for more information.
## Table of Contents
1. Features of the Software ([Jump to Features of the Software](#features-of-the-software))
2. Installation Instructions ([Jump to Installation Instructions](#installation-instructions))
3. Usage Guide ([Jump to Usage Guide](#usage-guide))
4. License ([Jump to License](#license))
5. Feedback ([Jump to Feedback](#feedback))
6. Contributions ([Jump to Contributions](#contributions))

## Testing

The repo also includes an example of a use case interactor test, as well as
an example of an end-to-end test which automates button clicks and inspects
the contents of the actual views. This is something we discussed in the lectures
about testing in CA but had not provided a code example of before. Note, one
could also inspect the contents of the ViewModel objects instead when testing
CA to make a similar test which would be less dependent on the details of the
specific UI implementation.
## Features of the Software
There are three major components of this software: Calendar, Checklist and Notes.
So, upon running the program, the user first sees "Welcome to your Dashboard"
__// TODO: add a screenshot__
On the left of the Dashboard, the user sees three tabs: Calendar, Notes and Checklist.

## Project Starter Code
### Calendar
The user can easily migrate to the Calendar tab by clicking on it.
__// TODO: add a screenshot__
Now, the user is on the Calendar tab. They are prompted to enter their __Google Email__.
__// TODO: add a screenshot__
This displays the upcoming events the user has added in on their Google calendar.
The details displayed are the event summary, location, start time, and description.

Your team may choose to use this repo as starter code for your project. You could
also use the lab 5 code — or start from an empty repo if your team prefers.
__Note regarding Calendar Usage:__ Since we are unable to release our private project credentials, you should add your
own service account credentials in a json file somewhere in the project and add the path to the file in the CalendarRequest section.
Change the SERVICE_ACCOUNT_KEY_FILE attribute to the path and the calender should be properly
integrated to use your new own Google project credentials.

If you choose to use one of the repositories we have provided, you can either make
a fork of it or copy the subset of code you want into a completely new repository.
### Notes
The user can also go to the Notes tab by clicking the menu on the left of their view.
__// TODO: add a screenshot__
Now, the user is on the Notes tab.
On the left side of the user's view, they can create a new note by simply typing into the provided area that says "*_Create Note_*"
The user also has the option of uploading text from an already existing file.
__// I am thinking of any style functions and undo, and redo...//__
As additional functionalities, the user can translate existing text on their notes to either French, Spanish, Russian.
Also, the user can prompt AI to complete the note based on what the user has written.

### Checklist
The user can move to the Checklist tab by clicking the menu on the left of their view.
__// TODO: add a screenshot__
Now, the user is on the Checklist tab.
On the user's view, the user will see add task.
__// TODO: add a screenshot__
This will allow the user to make a new checklist or add new tasks to an already existing checklist.


## Installation Instructions
As the user, you should ensure that their IDE is working and already setup. If you need any help setting up,
[visit here](https://www.jetbrains.com/help/idea/getting-started.html). The program can be run on any OS.
To run the program, there are two options:
1. __Through the IDE:__
1. First, you have to clone the repo, by using [this URL](https://github.com/PrishaPatel24/ZenTask.git).
2. Then, run the MainNoteApplication found in the src/main/java/app of the project through the IDE.
2. __Through the terminal:__
1. First, you have to clone the repo, by using [this URL](https://github.com/PrishaPatel24/ZenTask.git).
2. Navigate to the directory where the MainNoteApplication is on, in your File Manager
(ensure the directory is like .../ZenTask/src/main/java/app).
3. Then, open the terminal there.
4. In you terminal, compile the program by using `javac MainNoteApplication.java`
5. Then, run the application, using `java MainNoteApplication`
6. You should see your Dashboard. __// TODO: add a screenshot__

## Usage Guide
To use the software, the user should navigate the tabs using the menu found on the left of the view.
__// TODO: add a screenshot__

## License
To view the License consistent with the details and use of this program, please refer to the file name **LICENSE** in the project directory.

## Feedback
As a user, you can give feedback on the software, using [this link](https://forms.gle/mA2Q9dh3G84v8RdW7).
Please, take your time to carefully fill out the form and should expect a follow-up with 2-3 business days.

## Contributions
All contributions to the project are welcome.
To contribute to the project, you have to follow these steps:
1. Make a fork of the [project](https://github.com/PrishaPatel24/ZenTask) on GitHub by right-clicking _Fork_ found on the top right of the GitHub page.
Then, create a new fork. __// TODO: add a screenshot__
2. Then, clone the repo and work from your IDE.
3. Do not forget to add a branch protection rule, especially if you are working with other people. Ensure everyone has their branch.
Then, they will need to make a pull request on your own fork of the repository ([do this through the IDE](https://www.jetbrains.com/help/idea/work-with-github-pull-requests.html#create-pull-request)),
explaining in detail what changes they have made, and perform a [code review](https://swimm.io/learn/code-reviews/ultimate-10-step-code-review-checklist).
4. To add your contributions to this project, you have to make a merge request.
5. To make a merge request, first navigate to the back to [this project's repository](https://github.com/PrishaPatel24/ZenTask).
6. Then, on top of the GitHub page, click on _Pull Requests_. __// TODO: add a screenshot__
7. Click on the green button on the left of the GitHub page to create a _New pull request_.
8. Then, set the base repository to [this project's repository](https://github.com/PrishaPatel24/ZenTask) and set base to _main_.
9. Similarly, set the head repository to be your fork of the repository and set base to main.
10. Then, click on the green button, _Create pull request_. __// TODO: add a screenshot__
11. In the pull request, add a title that properly summarizes the content of the "contribution".
Also, add a proper description that contain what changes you made or things you added, what files your worked on and why this contribution is meaningful and beneficial.
39 changes: 39 additions & 0 deletions accessibility-report.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
## 1. Principles of Universal Design
- Equitable Use: The translation feature allows users who speak other languages to interact with our program. Since the
interface is easy to use and straightforward, users with varying levels of technical knowledge can use the program.
- Flexibility in Use: The program has multiple functionalities, including note-taking, checklists for tasks, a calendar
for event management, language translation, and AI-assisted completion. Users can choose how they interact with the
program, whether they organize tasks, translate content, or write notes. This accommodates different workflows and
user needs.
- Simple and Intuitive Use: The program has clearly-labeled buttons like "Translate", "Complete Notes With AI", and "Add
Task" so that users can intuitively navigate the app. The checklist and calendar are straightforward and allow users to
add tasks or events without much effort.
- Perceptible Information: Information is presented visually through text areas, dropdown menus, and buttons, which makes
the program easy to understand. For example, the dropdown menu for language selection is simple and easy to locate,
and the translation output is displayed in a separate area so that users can distinguish between the original text and
the translated text.
- Tolerance for Error: If users attempt to translate notes that are too long, the program provides feedback ("Exceeded
character limit") instead of crashing. The checklist and calendar features allow users to update or remove entries so
that mistakes can be easily fixed.
- Low Physical Effort: Tasks such as adding events to the calendar, updating the checklist, or translating text are
simplified and made more efficient for the user. The AI-assisted note completion feature helps users save time and effort
by automatically filling in ideas or suggestions, so that users don’t have to type it all out themselves.
- Size and Space for Approach and Use: The program can be used on standard desktop or laptop screens and has well-spaced
buttons and input fields that are easy to access. The dropdown menu and text areas are appropriately sized so that it's
user-friendly.

## 2. Marketing
If we were to sell or license ZenTask to customers, we would primarily market our program to students and professionals.
Since it has note-taking and translation features, our program would be particularly useful for multilingual users,
exchange students or students studying foreign languages, and professionals who are working in multicultural environments
or abroad. The "Complete Notes with AI" feature is helpful for students and writers needing additional assistance, and
the checklist and calendar features can be used by anyone with a busy schedule that could benefit from organizing their
tasks, deadlines, and scheduled events.

## 3. Demographic Challenges
This program may be less likely to be used by those who are visually impaired since this program does not have
screen readers or voice navigation to make it more suitable for those users. Implementing a text-to-speech feature
would help reach a wider audience of users and make it more accessible. This program is also less likely to be
used by those with dyslexia or reading impairments since it does not include spell-checking and the size of the text cannot
be increased. To accommodate for these users, in the future we could implement a feature that allows people to create
text by speaking instead of typing.
96 changes: 96 additions & 0 deletions pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,98 @@
<artifactId>note-application</artifactId>
<version>1.0-SNAPSHOT</version>

<repositories>
<repository>
<id>central</id>
<url>https://repo.maven.apache.org/maven2</url>
</repository>
<repository>
<id>google-maven-repository</id>
<url>https://maven-central.storage-download.googleapis.com/maven2/</url>
</repository>
<repository>
<id>dynomakeRepository</id>
<url>https://maven.dynomake.space/releases</url>
</repository>
</repositories>

<dependencies>
<dependency>
<groupId>io.github.cdimascio</groupId>
<artifactId>dotenv-java</artifactId>
<version>3.0.0</version>
</dependency>

<dependency>
<groupId>com.cohere</groupId>
<artifactId>cohere-java</artifactId>
<version>1.4.1</version>
</dependency>

<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.13.0</version>
</dependency>

<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-core</artifactId>
<version>2.13.0</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-annotations</artifactId>
<version>2.13.0</version>
</dependency>

<dependency>
<groupId>com.google.oauth-client</groupId>
<artifactId>google-oauth-client</artifactId>
<version>1.34.1</version>
</dependency>

<dependency>
<groupId>com.google.api-client</groupId>
<artifactId>google-api-client</artifactId>
<version>1.34.0</version>
</dependency>

<dependency>
<groupId>com.google.oauth-client</groupId>
<artifactId>google-oauth-client-java6</artifactId>
<version>1.23.0</version>
</dependency>

<dependency>
<groupId>com.google.oauth-client</groupId>
<artifactId>google-oauth-client-jetty</artifactId>
<version>1.34.1</version>
</dependency>

<dependency>
<groupId>com.google.apis</groupId>
<artifactId>google-api-services-calendar</artifactId>
<version>v3-rev20240705-2.0.0</version>
</dependency>

<dependency>
<groupId>com.google.http-client</groupId>
<artifactId>google-http-client-jackson2</artifactId>
<version>1.34.0</version>
</dependency>

<dependency>
<groupId>org.mortbay.jetty</groupId>
<artifactId>jetty</artifactId>
<version>6.1.26</version>
</dependency>

<dependency>
<groupId>com.google.cloud</groupId>
<artifactId>google-cloud-aiplatform</artifactId>
<version>3.35.0</version>
</dependency>

<dependency>
<groupId>org.json</groupId>
Expand All @@ -27,6 +118,11 @@
<version>4.13.1</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>space.dynomake</groupId>
<artifactId>libretranslate-java</artifactId>
<version>1.0.9</version>
</dependency>

</dependencies>

Expand Down
Loading