Compare commits

..
Author SHA1 Message Date
github-actions[bot] 1bb59dcbc5 chore: bump api version to 26 [skip ci] 2026-05-18 20:15:27 +00:00
rmcamposGitHubcopilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>RMCampos
a6bdd104d5 feat: add last activity date time (#57)
* feat: add last activity date time

* chore: update missing files

* chore: improve last seen message to inclute timezone

* chore: remove the formatting from backend

* chore: fix client issues

* fix: add utd to formatting in the client

* fix lint issue

* chore: fix lastLogin always showing the current login

* fix: address sidebar and sign-in review comments

Agent-Logs-Url: https://github.com/RMCampos/tasknote/sessions/04a13c25-87ea-44cc-ac53-cfefd16e0262

Co-authored-by: RMCampos <2219519+RMCampos@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: RMCampos <2219519+RMCampos@users.noreply.github.com>
2026-05-18 17:15:01 -03:00
github-actions[bot] 9bf0f400fe chore: bump api version to 25 [skip ci] 2026-05-17 20:54:25 +00:00
rmcamposandGitHub 84f6a00572 feat: prevent user form login before conforming his email (#56)
* feat: prevent user form login before conforming his email

* chore: update files and improve things

* feat: fix errors issue and improve logs
2026-05-17 17:53:59 -03:00
github-actions[bot] 638eeb077f chore: bump api version to 24 [skip ci] 2026-05-15 17:45:37 +00:00
rmcamposandGitHub d6cb1e9595 fix: mailgun 401 error (#55) 2026-05-15 14:45:09 -03:00
rmcampos dbf43792ad feat: add tools and redirect yaml service 2026-05-15 18:24:28 +02:00
rmcamposandGitHub 23cd481dfb Add Traefik middleware and ingress for redirection 2026-05-15 12:33:34 -03:00
rmcamposandGitHub 793639cc98 fix: add new domain allowed (#54) 2026-05-15 12:04:29 -03:00
rmcampos 391e321c15 fix: terraform fmt 2026-05-15 16:57:47 +02:00
rmcampos e1819f1b36 feat: move new domain to VPS 2026-05-15 16:56:04 +02:00
github-actions[bot] 84ce281f7f chore: bump api version to 23 [skip ci] 2026-05-14 16:32:37 +00:00
rmcamposandGitHub 9d29e4f9a4 feat: update to new domain (#53)
* feat: update to new domain

* feat: add yml files to track changes in server
2026-05-14 13:31:10 -03:00
rmcamposandGitHub 3942d02225 Feat/drop refresh token logic (#51)
* feat: update auth provider to not refresh token every 2 minutes

* chore: ignore tfplan files
2026-05-13 18:11:35 -03:00
github-actions[bot] edc83493c3 chore: bump api version to 22 [skip ci] 2026-05-13 20:54:30 +00:00
rmcampos 4d8b393b9d feat: add tf file for GCP 2026-05-13 18:43:35 +02:00
rmcamposandGitHub c2ba691b5e chore: bump dependencies (#49)
* feat: bump client deps

* feat: replace eslint-plugin-import by eslint-plugin-import-x
2026-05-11 19:03:43 -03:00
rmcamposandGitHub ff58a61ce9 feat: add scheduled backups (#48)
* feat: add scheduled backups

* Rename Kubernetes cron job resource for tasknote DB
2026-05-07 17:01:11 -03:00
CopilotGitHubcopilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>RMCampos
4b87a35a7d Add Cypress E2E tests for Home, Task, and Notes management (#46)
* Initial plan

* feat: add Cypress E2E tests for home, tasks, and notes management

Agent-Logs-Url: https://github.com/RMCampos/tasknote/sessions/b58034df-7cc2-4f3b-aebb-6ff9b948d992

Co-authored-by: RMCampos <2219519+RMCampos@users.noreply.github.com>

* fix: add data-testid to task dropdown and update Mark as Done tests

Agent-Logs-Url: https://github.com/RMCampos/tasknote/sessions/05bf3f86-5dda-4c1a-9f2b-dc1f0e38c9f3

Co-authored-by: RMCampos <2219519+RMCampos@users.noreply.github.com>

* fix: remove pre-click reload intercepts that caused share test race condition

Agent-Logs-Url: https://github.com/RMCampos/tasknote/sessions/a78336f4-bd41-4819-a848-79aa6a4f8ed7

Co-authored-by: RMCampos <2219519+RMCampos@users.noreply.github.com>

* fix: remove post-action reload intercepts that caused getDoneTasks race condition

Agent-Logs-Url: https://github.com/RMCampos/tasknote/sessions/28155c26-3eaf-46d7-a749-74eff1bc217b

Co-authored-by: RMCampos <2219519+RMCampos@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: RMCampos <2219519+RMCampos@users.noreply.github.com>
2026-05-07 14:26:19 -03:00
CopilotGitHubcopilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>RMCamposrmcampos
662d8ba4d2 fix: prevent premature route resolution before initial auth check completes (#45)
* Initial plan

* fix: add loading state to AuthContext to prevent premature route resolution

Agent-Logs-Url: https://github.com/RMCampos/tasknote/sessions/8b02c4fd-b37e-4d34-8910-6d075bde6b4b

Co-authored-by: RMCampos <2219519+RMCampos@users.noreply.github.com>

* restore: revert package-lock.json to original state

Co-authored-by: RMCampos <2219519+RMCampos@users.noreply.github.com>

* fix: add catch before finally in initial auth check useEffect

Agent-Logs-Url: https://github.com/RMCampos/tasknote/sessions/8b02c4fd-b37e-4d34-8910-6d075bde6b4b

Co-authored-by: RMCampos <2219519+RMCampos@users.noreply.github.com>

* test: address test warning missing act

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: RMCampos <2219519+RMCampos@users.noreply.github.com>
Co-authored-by: Ricardo Campos <ricardompcampos@gmail.com>
2026-05-07 11:54:21 -03:00
CopilotGitHubcopilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>RMCampos
6dee21d58f fix(csp): allow blocked inline style via SHA-256 hash in style-src (#43)
* Initial plan

* fix: add CSP hash for blocked inline style in style-src directive

Agent-Logs-Url: https://github.com/RMCampos/tasknote/sessions/a51fd5ff-eb93-4ef0-96e0-3d10df540a59

Co-authored-by: RMCampos <2219519+RMCampos@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: RMCampos <2219519+RMCampos@users.noreply.github.com>
2026-05-06 18:37:02 -03:00
github-actions[bot] 674f51004d chore: bump api version to 21 [skip ci] 2026-05-06 21:20:59 +00:00
rmcamposandGitHub 028bb6412a chore: bump dependencies back and front (#41)
* chore: bump dependencies in the client

* chore: bump server deps
2026-05-06 18:20:24 -03:00
CopilotGitHubcopilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>RMCamposrmcampos
1aa8ded9b3 feat: Integrate Cypress for E2E authentication testing (#39)
* Initial plan

* feat: add Cypress E2E testing for auth flows

Agent-Logs-Url: https://github.com/RMCampos/tasknote/sessions/f3b4e747-3e09-4b6c-8b4c-336cf45b59c4

Co-authored-by: RMCampos <2219519+RMCampos@users.noreply.github.com>

* fix: use regex intercepts and unique emails in Cypress auth tests

Agent-Logs-Url: https://github.com/RMCampos/tasknote/sessions/2a1225d9-9412-459e-bc97-93303454a461

Co-authored-by: RMCampos <2219519+RMCampos@users.noreply.github.com>

* fix: use PUT method for sign-up intercepts in Cypress auth tests

Agent-Logs-Url: https://github.com/RMCampos/tasknote/sessions/bda14dfc-a30d-4c01-aa74-e8c2690072e3

Co-authored-by: RMCampos <2219519+RMCampos@users.noreply.github.com>

* chore: update tools.md file to include sql command

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: RMCampos <2219519+RMCampos@users.noreply.github.com>
Co-authored-by: Ricardo Campos <ricardompcampos@gmail.com>
2026-05-06 17:21:17 -03:00
rmcamposandGitHub bccd30c1a9 fix: address frontend test warnings and errors (#37)
* fix: warnings and issues when running unit tests

* chore: bump i18next deps
2026-05-06 09:14:51 -03:00
rmcamposandGitHub ecb645415b feat: update vite to v8. (#35)
Issue #26
2026-05-05 18:47:40 -03:00
rmcamposandGitHub 0b99613710 chore: upgrade typescript to v6 (#34)
* chore: udpate typescript to v6

* fix: build issue
2026-04-29 16:42:43 -03:00
rmcamposandGitHub e9b086b57d Update cd-pr.yml 2026-04-29 16:36:26 -03:00
rmcamposandGitHub bae9ab5797 Update Kubeconfig setup directory path 2026-04-29 16:17:27 -03:00
rmcampos 2435a503fd feat: add gemini commands and update agent 2026-04-29 15:36:52 -03:00
rmcamposandGitHub d1aef9113b Update cd-pr.yml 2026-04-29 15:35:31 -03:00
rmcamposandGitHub db7f8355dd chore(client): update dependencies to latest minor versions (#33)
* chore(client): update dependencies to latest minor versions

* chore: increate timeout to deploy plan changes on staging
2026-04-29 15:08:04 -03:00
rmcamposandGitHub 02000b91d3 Update cd-pr.yml 2026-04-28 18:43:30 -03:00
rmcamposandGitHub f193385479 Update cd-pr.yml 2026-04-28 18:31:07 -03:00
rmcamposandGitHub cfd8589093 Update cd-pr.yml 2026-04-28 18:26:16 -03:00
rmcamposandGitHub 3831be3c37 Update cd-pr.yml 2026-04-28 18:21:23 -03:00
rmcamposandGitHub 8aa73887b6 Update cd-pr.yml 2026-04-28 18:12:03 -03:00
rmcampos 7cc5b3a6f6 fix: lock kubernetes provider to 2.38.0 2026-04-28 23:06:39 +02:00
rmcampos 01329605c7 chore: udpate terraform to latest version again and add go option to use tlsv1 2026-04-28 22:59:05 +02:00
rmcampos f8643f2460 fix: pin kubernetes provider to 2.35.1 to fix TLS handshake timeout 2026-04-28 22:43:33 +02:00
rmcamposandGitHub afeb175a18 Add step to display Terraform provider versions
Added a step to show Terraform provider versions in the CI workflow.
2026-04-28 17:32:11 -03:00
rmcamposandGitHub e5498bd10f Update cd-pr.yml 2026-04-28 17:24:04 -03:00
rmcamposandGitHub e3ab437a1f Delete terraform-stg/.terraform.lock.hcl 2026-04-28 17:15:59 -03:00
rmcamposandGitHub ec3c9246e6 Remove kubeconfig_path variable and update provider 2026-04-28 17:15:37 -03:00
rmcamposandGitHub 8a60c32862 Remove cluster connectivity debug steps from workflow
Removed various debugging and connectivity checks related to the Kubernetes cluster from the CI/CD workflow.
2026-04-28 17:14:46 -03:00
rmcamposandGitHub 9c0ae1f41b Update cd-pr.yml 2026-04-28 17:04:32 -03:00
rmcamposandGitHub 49ba755528 Update cd-pr.yml 2026-04-28 16:58:59 -03:00
rmcamposandGitHub 41431f72b2 Update cd-pr.yml 2026-04-28 16:56:10 -03:00
rmcamposandGitHub 87a56acdb0 Update cd-pr.yml 2026-04-28 16:47:46 -03:00
rmcampos 0931af417e chore: add debug step to certs 2026-04-28 21:38:35 +02:00
rmcampos 305ad552e7 chore: fix terraform plan command 2026-04-28 21:19:21 +02:00
rmcampos dabb0a8ead chore: update stg deployment with kube config location 2026-04-28 21:15:23 +02:00
rmcamposandGitHub 655579da95 Update main.tf 2026-04-28 15:58:54 -03:00
rmcamposandGitHub b6c7f7cbf2 Update Kubernetes provider config path variable 2026-04-28 15:11:10 -03:00
rmcamposandGitHub 4bbd6610aa Update Kubeconfig setup to use runner temp directory 2026-04-28 15:10:40 -03:00
rmcampos 9b1542fbda chore: pin kubernetes provider to 2.x 2026-04-28 19:46:56 +02:00
rmcamposandGitHub 3c6e27b01d Update Kubernetes provider version constraint 2026-04-28 14:43:53 -03:00
rmcamposandGitHub fa273a4ffe Update cd-pr.yml 2026-04-28 14:39:36 -03:00
rmcamposandGitHub 1b43564d5b Update cd-pr.yml 2026-04-28 14:33:15 -03:00
rmcamposandGitHub 4f33d8d9ae Add connectivity debug steps to CD workflow
Added steps to debug cluster connectivity and test TCP and TLS.
2026-04-28 14:26:41 -03:00
rmcamposandGitHub e410496495 Increase timeout for terraform plan step 2026-04-28 13:54:55 -03:00
rmcamposandGitHub 73d9c14723 chore(deps): update client dependencies to latest minor versions (#32) 2026-04-27 13:58:17 -03:00
rmcampos 158c817683 Merge branch 'main' of github.com:RMCampos/tasknote 2026-04-23 16:02:24 -03:00
rmcampos e2bf573cb7 feat: add agents md file 2026-04-23 16:00:33 -03:00
rmcampos 9445b889d7 feat: update mailgun templates to match the app ui 2026-04-23 15:47:23 -03:00
rmcampos 6df11e26fa chore: drop and update schemaspy 2026-04-23 15:45:48 -03:00
github-actions[bot] 85aef0c279 chore: bump api version to 20 [skip ci] 2026-04-16 19:50:18 +00:00
rmcamposandGitHub c19ef73a5a feat: improve security and prevent xss attacks (#30)
* feat: improve security and prevent xss attacks

* chore: fix frontend test file name location

* fix: frontend test case

* ci: add deployment connection
2026-04-16 16:49:51 -03:00
rmcampos 3b3857207e chore: add files back after renaming 2026-04-16 18:55:34 +02:00
rmcamposandGitHub 0a30ab0401 chore: add files and config to run on VPS and test locally (#29)
* chore: add files and config to run on VPS and test locally

* chore: add missing nginx files left behind

* chore: rename workflow files
2026-04-16 13:54:16 -03:00
github-actions[bot] 08cdd73c2b chore: bump api version to 19 [skip ci] 2026-04-14 20:21:40 +00:00
rmcampos 227296c46d fix: gh cli wrong --commit argument 2026-04-14 22:21:05 +02:00
github-actions[bot] 35dedf3fbd chore: bump api version to 18 [skip ci] 2026-04-14 20:17:46 +00:00
rmcampos a8547fdac4 ci: change to reuse tag and image built on PR and avoid rebuilding on merge 2026-04-14 22:17:14 +02:00
rmcamposandGitHub 35adeb202c faet: add url to environments 2026-04-10 16:36:59 -03:00
github-actions[bot] 5ecd14b960 chore: bump api version to 17 [skip ci] 2026-04-08 22:05:26 +00:00
rmcamposandGitHub 429dfa02c3 fix: wrong base url for staging env (#28)
* fix: wrong base url for staging env

* fix: wrong var changed domain
2026-04-08 19:05:00 -03:00
rmcamposandGitHub e1ccb97b68 Update devcontainer for Java 2026-04-08 18:02:46 -03:00
rmcamposandGitHub 8bb22db9a0 Configure devcontainer with Java, Node.js, and Terraform
Added Java, Node.js, and Terraform features to the devcontainer.
2026-04-08 17:23:39 -03:00
rmcamposandGitHub 27f49f101b chore: drop devcontainer created by ai 2026-04-08 17:17:25 -03:00
rmcamposandGitHub a07cc97c11 fix: replace timestamp by git runner on staging deploy 2026-04-08 11:21:32 -03:00
rmcamposandGitHub 397894903b fix: deploy to stg reading from wrong dir 2026-04-08 11:14:34 -03:00
rmcamposandGitHub 1ea98d4707 feat: fix stg deploy file 2026-04-08 11:12:43 -03:00
github-actions[bot] 24545ec16c chore: bump api version to 16 [skip ci] 2026-04-08 13:47:09 +00:00
rmcamposandGitHub ce18bc01eb chore: bump spring version to 4.0.5 (#27)
* chore: bump spring version to 4.0.5

* feat: add docker build to CI workflow

* feat: add staging deploy - wip

* fix: change triggers to include PR changes

* feat: add server ci and deploy to stg

* chore: add app build candidate

* remove from branch, get from main

* fix: build app candidate

* fix: build app candidate

* fix: fe changes in the app

* fix: app ci workflow dispatch

* chore: improve PR ci and cd

* feat: make deployments always happen for PRs

* feat: improve workflow names
2026-04-08 10:46:41 -03:00
rmcamposandGitHub fcf2e25c15 Create build-app-candidate.yml 2026-04-07 17:59:50 -03:00
rmcamposandGitHub c291393962 Add GitHub Actions workflow for server candidate build
This workflow builds and pushes a Docker image for the server candidate using Maven and caches buildpack layers.
2026-04-07 17:35:15 -03:00
rmcamposandGitHub 8122260737 fix: drop reduntant workflow trigger and fix changes detect 2026-04-06 12:41:49 -03:00
rmcampos 2c1c892006 chore: update client dependencies 2026-04-06 12:29:16 -03:00
rmcamposandGitHub da8c33234f feat: add dev container 2026-04-06 10:13:19 -03:00
rmcamposandGitHub 8c0a2149ad add conditional check 2026-04-05 17:25:26 -03:00
rmcamposandGitHub d3cd4f656f feat: stop workflow if no changes 2026-04-05 17:18:05 -03:00
rmcamposandGitHub fce011caf2 fix: numeric tag in the backend 2026-04-05 17:13:51 -03:00
rmcamposandGitHub 7ea7d96826 chore: make repository name lowercase 2026-04-05 17:01:39 -03:00
rmcamposandGitHub 7509eb18c5 chore: address tag and number different in the backend image 2026-04-05 17:00:21 -03:00
rmcamposandGitHub 367512aa0d fix: list backend tags. oh boy 2026-04-05 16:57:01 -03:00
rmcamposandGitHub ff5efbc1cd fix: get proper image tags 2026-04-05 16:56:07 -03:00
rmcamposandGitHub 2b9467ac02 fix: backend and fronend tags 2026-04-05 16:51:51 -03:00
rmcamposandGitHub 8fb211a4ce fix: mailgun api key name was wrong 2026-04-05 16:47:18 -03:00
rmcamposandGitHub 7ca42e0618 chore: improve deployments 2026-04-05 16:44:59 -03:00
rmcamposandGitHub 20b778cb94 chore: downgrade actions versions 2026-04-05 16:33:38 -03:00
rmcamposandGitHub d26a057cd2 fix: wrong ns 2026-04-05 16:29:37 -03:00
rmcamposandGitHub e25c20c32c chore(deploy): fix sort order when listing image to deploy 2026-04-05 16:23:38 -03:00
rmcamposandGitHub 6ef490c44f chore: finally formatted tf file nicely 2026-04-05 16:20:59 -03:00
rmcamposandGitHub 8735cd3c7c chore: fix tf file formatting 2026-04-05 16:11:08 -03:00
rmcamposandGitHub f692420403 chore: format tf file 2026-04-05 16:04:44 -03:00
rmcamposandGitHub ed61e2a3b6 feat: add kubernetes CD 2026-04-05 15:58:28 -03:00
github-actions[bot] 5e200032fd chore: bump api version to 15 [skip ci] 2026-03-17 18:41:21 +00:00
rmcampos a43c8bb5fe chore: fix and improve workflow files 2026-03-17 15:40:39 -03:00
github-actions[bot] ca3ff49521 chore: bump api version to 14 [skip ci] 2026-03-17 18:31:34 +00:00
rmcampos 741cc9693f feat: bump dependencies in back and front 2026-03-17 15:30:54 -03:00
github-actions[bot] f5175c41fc chore: bump api version to 13 [skip ci] 2026-03-16 16:45:38 +00:00
rmcampos 240515cc93 Merge branch 'main' of github.com:RMCampos/tasknote 2026-03-16 13:45:05 -03:00
rmcampos ee1c0cfb64 fix: add missing templates and config for new domain 2026-03-16 13:44:46 -03:00
github-actions[bot] 37f991d56f chore: bump api version to 12 [skip ci] 2026-03-16 15:50:14 +00:00
rmcampos 13eadd75dc Merge branch 'main' of github.com:RMCampos/tasknote 2026-03-16 12:49:30 -03:00
rmcampos 5ae989a1cc feat: update new error message and translations 2026-03-16 12:48:30 -03:00
rmcampos 40f0c5a1d5 feat: fix message not going back to client in spring v4 2026-03-16 11:53:46 -03:00
github-actions[bot] 0f620a6ce7 chore: bump api version to 11 [skip ci] 2026-03-02 20:45:13 +00:00
rmcamposandGitHub e7d6226dbd feat: fix backend issues with state and memory leak (#23)
* feat: fix backend issues with state and memory leak

* chore: address copilot review issues

* chore: address copilot review round 2

* test: fix test cases
2026-03-02 17:44:29 -03:00
github-actions[bot] f6f977d34d chore: bump api version to 10 [skip ci] 2026-02-28 16:08:55 +00:00
CopilotGitHubcopilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>RMCamposrmcampos
b1531f890e Add public note sharing feature (#22)
* Initial plan

* Add note sharing feature: share/unshare endpoints, public note view, share token

Co-authored-by: RMCampos <2219519+RMCampos@users.noreply.github.com>

* Remove redundant nullable=true annotation from NoteEntity shareToken column

Co-authored-by: RMCampos <2219519+RMCampos@users.noreply.github.com>

* Fix checkstyle line-length violations in test files

Co-authored-by: RMCampos <2219519+RMCampos@users.noreply.github.com>

* Fix frontend build and test failures: add shared/shareToken fields to NoteAdd payloads and test

Co-authored-by: RMCampos <2219519+RMCampos@users.noreply.github.com>

* chore: reorganize scripts and migration name

* docs: update readme with new feature

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: RMCampos <2219519+RMCampos@users.noreply.github.com>
Co-authored-by: Ricardo Campos <ricardompcampos@gmail.com>
2026-02-28 13:08:23 -03:00
rmcampos 549e98030b chore: drop dokploy deploy for app 2026-02-27 19:27:09 -03:00
github-actions[bot] 578215aab4 chore: bump api version to 9 [skip ci] 2026-02-27 22:14:21 +00:00
CopilotGitHubcopilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>RMCamposrmcampos
553eb3c59d Add Source and Copy buttons to note markdown modal (#21)
* Initial plan

* Add Source and Copy buttons to ModalMarkdown for note source code view

Co-authored-by: RMCampos <2219519+RMCampos@users.noreply.github.com>

* feat: add healthcheck do native image

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: RMCampos <2219519+RMCampos@users.noreply.github.com>
Co-authored-by: Ricardo Campos <ricardompcampos@gmail.com>
2026-02-27 19:13:53 -03:00
CopilotGitHubcopilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>RMCamposrmcampos
bec73e04dd fix(readme): replace stale Sonar badges with GitHub Actions CI badges (#15)
* Initial plan

* fix: update README badges - remove Sonar badges and add GitHub Actions CI badges

Co-authored-by: RMCampos <2219519+RMCampos@users.noreply.github.com>

* chore: drop dokploy from backend build

* docs: udpate README

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: RMCampos <2219519+RMCampos@users.noreply.github.com>
Co-authored-by: Ricardo Campos <ricardompcampos@gmail.com>
2026-02-27 15:32:31 -03:00
github-actions[bot] 6a13c72c2a chore: bump api version to 8 [skip ci] 2026-02-27 18:10:34 +00:00
CopilotGitHubcopilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>RMCamposrmcampos
3dff30762b Upgrade backend to Spring Boot 4.0.3 and Java 25 (#20)
* Initial plan

* feat: upgrade to Spring Boot 4.0.3 and Java 25

Co-authored-by: RMCampos <2219519+RMCampos@users.noreply.github.com>

* chore: fix google check style issues and drop unused annotations

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: RMCampos <2219519+RMCampos@users.noreply.github.com>
Co-authored-by: Ricardo Campos <ricardompcampos@gmail.com>
2026-02-27 15:10:05 -03:00
rmcampos 5f56a023c4 chore: drop claude from repo 2026-02-27 13:58:51 -03:00
rmcampos a469a8878b chore: bump frontend dependencies version 2026-02-27 13:52:52 -03:00
rmcampos 83de01f9cb chore: commit package lock client file 2026-02-12 18:25:24 -03:00
rmcampos 64104b781b chore: bump client dependencies 2026-02-12 18:12:28 -03:00
rmcampos e5290aa6c4 chore: add missing files and improve Dockerfile 2026-02-11 11:03:02 -03:00
rmcampos 98ad43602a feat: improve markdown rendering and add home filter context 2026-02-11 10:57:43 -03:00
github-actions[bot] 5eb7eb6677 chore: bump api version to 7 [skip ci] 2026-02-10 20:53:37 +00:00
rmcampos f77c392fba fix: backend null pointer exception 2026-02-10 17:52:45 -03:00
github-actions[bot] 8010e4fa2b chore: bump api version to 6 [skip ci] 2026-02-10 20:38:14 +00:00
rmcamposandGitHub db8c494864 feat: include notes tags (#13) 2026-02-10 17:37:31 -03:00
rmcamposGitHubclaude[bot] <41898282+claude[bot]@users.noreply.github.com>Ricardo Campos
e3f3259179 feat: Add tag suggestion dropdown for Notes and Tasks (#12)
* feat: add tag suggestion dropdown for NoteAdd and TaskAdd views

Implement a tag suggestion dropdown in both NoteAdd and TaskAdd components.
When the tag input is focused, available tags are fetched from the API
(GET /rest/home/tasks/tags) and displayed in a filterable dropdown list.
Users can select an existing tag or type a custom one.

Co-authored-by: Ricardo Campos <RMCampos@users.noreply.github.com>

* chore: fix lint issue

---------

Co-authored-by: claude[bot] <41898282+claude[bot]@users.noreply.github.com>
Co-authored-by: Ricardo Campos <RMCampos@users.noreply.github.com>
2026-02-10 17:35:26 -03:00
rmcampos d734845f75 fix: test CI command 2026-02-10 17:01:03 -03:00
rmcamposGitHubclaude[bot] <41898282+claude[bot]@users.noreply.github.com>Ricardo Campos
b6ae920673 fix: Keep filter between actions in Home view (#9)
* fix: keep filter selection between actions in Home view

When a user selects a filter (Tasks, Notes, or a tag) and performs an
action like marking a task as done or deleting a note, the filter is now
preserved after the data reload.

- Extract applyFilter() helper that accepts explicit task/note arrays to
  avoid stale state closure issues
- loadAllTasks() now re-applies the current selectedOption and filterText
  after fetching fresh data instead of resetting to 'everything'
- loadAllNotes() now re-applies the current filter after fetching fresh data
- Add 3 new tests verifying filter persistence after actions

Fixes #8

Co-authored-by: Ricardo Campos <RMCampos@users.noreply.github.com>

* feat: fix race condition as per Claude review

* ci: add CI to client

---------

Co-authored-by: claude[bot] <41898282+claude[bot]@users.noreply.github.com>
Co-authored-by: Ricardo Campos <RMCampos@users.noreply.github.com>
2026-02-10 16:57:44 -03:00
github-actions[bot] 5f61c1121f chore: bump api version to 5 [skip ci] 2026-02-10 16:00:45 +00:00
rmcamposGitHubclaude[bot] <41898282+claude[bot]@users.noreply.github.com>Ricardo CamposClaude Sonnet 4.5
3b335d6f1e feat: remove 5-tag limit and return all tags alphabetically (#7)
* feat: remove 5-tag limit and return all tags alphabetically

The /rest/home/tasks/tags endpoint previously returned only the top 5
most-used tags. This change removes that restriction so all existing
tags are returned, sorted alphabetically.

Fixes #6

Co-authored-by: Ricardo Campos <RMCampos@users.noreply.github.com>
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>

* chore: fix test issue and add log version to the right place

* ci: add server ci

---------

Co-authored-by: claude[bot] <41898282+claude[bot]@users.noreply.github.com>
Co-authored-by: Ricardo Campos <RMCampos@users.noreply.github.com>
Co-authored-by: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-02-10 13:00:10 -03:00
rmcamposGitHubclaude[bot] <41898282+claude[bot]@users.noreply.github.com>Ricardo Campos
2dc59d14d2 docs: update CLAUDE.md with current project context (#5)
* docs: update CLAUDE.md with current project context

- Remove non-existent angular/ directory reference
- Update Java version from 17 to 21
- Update Spring Boot version to 3.5.9
- Remove outdated OpenAPI/Swagger documentation reference
- Update docker-compose file references (dev vs prod)
- Add React 19 and React Router v7 information
- Add Taskfile.yml to development workflow section
- Reorganize development workflow with manual and Taskfile options

Fixes #4

Co-authored-by: Ricardo Campos <RMCampos@users.noreply.github.com>

* fix: update Taskfile commands in CLAUDE.md

- Change task dev to task dev-run
- Change task prod to task prod-up
- Split task docker-build into task docker-build-api and task docker-build-web
- Add task -l command to list all available tasks

Co-authored-by: Ricardo Campos <RMCampos@users.noreply.github.com>

---------

Co-authored-by: claude[bot] <41898282+claude[bot]@users.noreply.github.com>
Co-authored-by: Ricardo Campos <RMCampos@users.noreply.github.com>
2026-02-05 16:01:34 -03:00
rmcamposandGitHub 9aa97e2692 Merge pull request #2 from RMCampos/add-claude-github-actions-1770309711613
Add claude GitHub actions 1770309711613
2026-02-05 13:47:45 -03:00
rmcampos 78c4419aa2 "Update Claude Code Review workflow" 2026-02-05 13:41:54 -03:00
rmcampos 9c77efa424 "Update Claude PR Assistant workflow" 2026-02-05 13:41:53 -03:00
rmcamposandGitHub 7a7c574217 Merge pull request #1 from RMCampos/add-claude-github-actions-1770309101716
Add claude GitHub actions 1770309101716
2026-02-05 13:35:04 -03:00
rmcampos 2296251446 "Claude Code Review workflow" 2026-02-05 13:31:44 -03:00
rmcampos e728021581 "Claude PR Assistant workflow" 2026-02-05 13:31:43 -03:00
rmcampos bc405b16bd chore: bump client dependencies 2026-02-05 13:05:03 -03:00
github-actions[bot] 981cbb1772 chore: bump api version to 4 [skip ci] 2026-01-18 21:23:25 +00:00
rmcampos 9ae06f9b6f Merge branch 'main' of github.com:RMCampos/tasknote 2026-01-18 18:22:46 -03:00
rmcampos 5602ab043e chore: add job to deploy and fix tests 2026-01-18 18:22:22 -03:00
github-actions[bot] e43a74287f chore: bump api version to 3 [skip ci] 2026-01-18 20:22:10 +00:00
rmcampos 9dd7dc83c3 fix: docker image name lowercase 2026-01-18 17:21:19 -03:00
github-actions[bot] 7dc78c46eb chore: bump api version to 2 [skip ci] 2026-01-18 20:16:08 +00:00
rmcampos 9de52ac243 feat: improve CI to use GHCR and single versions in the backend 2026-01-18 17:15:35 -03:00
rmcampos c6be741149 feat: upgrade to spring boot 3.5.9 2026-01-17 15:48:46 -03:00
rmcampos b78aa6906b feat: bump dependencies to latest version 2026-01-14 16:12:15 -03:00
rmcampos f7c352ee70 feat: drop lombok and bump to spring 3.5.9 2026-01-14 16:10:38 -03:00
rmcampos 36bc8ef2b4 ci: add vite build number to ci 2025-12-15 17:56:33 -03:00
rmcampos e1b4de60d8 ci: fix wrong ci file for server 2025-12-15 17:07:33 -03:00
rmcampos bbda923b97 ci: fix server workflow 2025-12-15 17:06:37 -03:00
rmcampos 03e49e6b14 ci: fix app workflow 2025-12-15 17:01:51 -03:00
rmcampos 0ca522a1e9 chore: repo clean up 2025-12-15 16:58:28 -03:00
rmcampos de466dd17b feat: add Bruno Collections 2025-12-15 16:50:58 -03:00
rmcampos b9465de40e chore: bump webapp dependencies 2025-12-15 16:50:13 -03:00
rmcamposandGitHub 0e096a025a fix: reload issue and packages updates (#715) 2025-11-05 18:26:00 -03:00
rmcamposGitHubdependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>snyk-bot
c0667c0970 feat: versions (#709)
* build(deps): bump org.jacoco:jacoco-maven-plugin in /server

Bumps [org.jacoco:jacoco-maven-plugin](https://github.com/jacoco/jacoco) from 0.8.13 to 0.8.14.
- [Release notes](https://github.com/jacoco/jacoco/releases)
- [Commits](https://github.com/jacoco/jacoco/compare/v0.8.13...v0.8.14)

---
updated-dependencies:
- dependency-name: org.jacoco:jacoco-maven-plugin
  dependency-version: 0.8.14
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

* fix: client/Dockerfile to reduce vulnerabilities

The following vulnerabilities are fixed with an upgrade:
- https://snyk.io/vuln/SNYK-ALPINE320-OPENSSL-13174134
- https://snyk.io/vuln/SNYK-ALPINE320-OPENSSL-13174135
- https://snyk.io/vuln/SNYK-ALPINE320-OPENSSL-13174135
- https://snyk.io/vuln/SNYK-ALPINE320-OPENSSL-13174136
- https://snyk.io/vuln/SNYK-ALPINE320-OPENSSL-13174136

* build(deps): bump actions/setup-node from 5 to 6

Bumps [actions/setup-node](https://github.com/actions/setup-node) from 5 to 6.
- [Release notes](https://github.com/actions/setup-node/releases)
- [Commits](https://github.com/actions/setup-node/compare/v5...v6)

---
updated-dependencies:
- dependency-name: actions/setup-node
  dependency-version: '6'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>

* fix: server/Dockerfile to reduce vulnerabilities

The following vulnerabilities are fixed with an upgrade:
- https://snyk.io/vuln/SNYK-DEBIAN12-PERL-5489190
- https://snyk.io/vuln/SNYK-DEBIAN12-ZLIB-6008963
- https://snyk.io/vuln/SNYK-DEBIAN12-PAM-10378969
- https://snyk.io/vuln/SNYK-DEBIAN12-PAM-10378969
- https://snyk.io/vuln/SNYK-DEBIAN12-PAM-10378969

* build(deps): bump org.springframework.boot:spring-boot-starter-parent

Bumps [org.springframework.boot:spring-boot-starter-parent](https://github.com/spring-projects/spring-boot) from 3.5.6 to 3.5.7.
- [Release notes](https://github.com/spring-projects/spring-boot/releases)
- [Commits](https://github.com/spring-projects/spring-boot/compare/v3.5.6...v3.5.7)

---
updated-dependencies:
- dependency-name: org.springframework.boot:spring-boot-starter-parent
  dependency-version: 3.5.7
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

* build(deps): bump com.puppycrawl.tools:checkstyle in /server

Bumps [com.puppycrawl.tools:checkstyle](https://github.com/checkstyle/checkstyle) from 11.1.0 to 12.1.1.
- [Release notes](https://github.com/checkstyle/checkstyle/releases)
- [Commits](https://github.com/checkstyle/checkstyle/compare/checkstyle-11.1.0...checkstyle-12.1.1)

---
updated-dependencies:
- dependency-name: com.puppycrawl.tools:checkstyle
  dependency-version: 12.1.1
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>

* build(deps): bump org.hibernate.orm.tooling:hibernate-enhance-maven-plugin

Bumps [org.hibernate.orm.tooling:hibernate-enhance-maven-plugin](https://github.com/hibernate/hibernate-orm) from 6.6.31.Final to 6.6.34.Final.
- [Release notes](https://github.com/hibernate/hibernate-orm/releases)
- [Changelog](https://github.com/hibernate/hibernate-orm/blob/6.6.34/changelog.txt)
- [Commits](https://github.com/hibernate/hibernate-orm/compare/6.6.31...6.6.34)

---
updated-dependencies:
- dependency-name: org.hibernate.orm.tooling:hibernate-enhance-maven-plugin
  dependency-version: 6.6.34.Final
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

* chore: bump dependencies and fix tests

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: snyk-bot <snyk-bot@snyk.io>
2025-10-31 18:51:32 -03:00
rmcamposGitHubdependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
df5db2e512 feat: dependencies bump (#686)
* build(deps): bump org.springframework.boot:spring-boot-starter-parent

Bumps [org.springframework.boot:spring-boot-starter-parent](https://github.com/spring-projects/spring-boot) from 3.5.5 to 3.5.6.
- [Release notes](https://github.com/spring-projects/spring-boot/releases)
- [Commits](https://github.com/spring-projects/spring-boot/compare/v3.5.5...v3.5.6)

---
updated-dependencies:
- dependency-name: org.springframework.boot:spring-boot-starter-parent
  dependency-version: 3.5.6
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

* build(deps): bump org.apache.maven.plugins:maven-javadoc-plugin

Bumps [org.apache.maven.plugins:maven-javadoc-plugin](https://github.com/apache/maven-javadoc-plugin) from 3.11.3 to 3.12.0.
- [Release notes](https://github.com/apache/maven-javadoc-plugin/releases)
- [Commits](https://github.com/apache/maven-javadoc-plugin/compare/maven-javadoc-plugin-3.11.3...maven-javadoc-plugin-3.12.0)

---
updated-dependencies:
- dependency-name: org.apache.maven.plugins:maven-javadoc-plugin
  dependency-version: 3.12.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>

* build(deps): bump com.puppycrawl.tools:checkstyle in /server

Bumps [com.puppycrawl.tools:checkstyle](https://github.com/checkstyle/checkstyle) from 11.0.1 to 11.1.0.
- [Release notes](https://github.com/checkstyle/checkstyle/releases)
- [Commits](https://github.com/checkstyle/checkstyle/compare/checkstyle-11.0.1...checkstyle-11.1.0)

---
updated-dependencies:
- dependency-name: com.puppycrawl.tools:checkstyle
  dependency-version: 11.1.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>

* build(deps): bump actions/cache from 4.2.4 to 4.3.0

Bumps [actions/cache](https://github.com/actions/cache) from 4.2.4 to 4.3.0.
- [Release notes](https://github.com/actions/cache/releases)
- [Changelog](https://github.com/actions/cache/blob/main/RELEASES.md)
- [Commits](https://github.com/actions/cache/compare/v4.2.4...v4.3.0)

---
updated-dependencies:
- dependency-name: actions/cache
  dependency-version: 4.3.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>

* build(deps): bump org.hibernate.orm.tooling:hibernate-enhance-maven-plugin

Bumps [org.hibernate.orm.tooling:hibernate-enhance-maven-plugin](https://github.com/hibernate/hibernate-orm) from 6.6.29.Final to 6.6.31.Final.
- [Release notes](https://github.com/hibernate/hibernate-orm/releases)
- [Changelog](https://github.com/hibernate/hibernate-orm/blob/6.6.31/changelog.txt)
- [Commits](https://github.com/hibernate/hibernate-orm/compare/6.6.29...6.6.31)

---
updated-dependencies:
- dependency-name: org.hibernate.orm.tooling:hibernate-enhance-maven-plugin
  dependency-version: 6.6.31.Final
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

* build(deps): bump org.apache.maven.plugins:maven-enforcer-plugin

Bumps [org.apache.maven.plugins:maven-enforcer-plugin](https://github.com/apache/maven-enforcer) from 3.6.1 to 3.6.2.
- [Release notes](https://github.com/apache/maven-enforcer/releases)
- [Commits](https://github.com/apache/maven-enforcer/compare/enforcer-3.6.1...enforcer-3.6.2)

---
updated-dependencies:
- dependency-name: org.apache.maven.plugins:maven-enforcer-plugin
  dependency-version: 3.6.2
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

* feat: dependencies bump

* feat: improve prod and logs

* fix: AuthService  max length of 100

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-10-13 17:13:33 -03:00
rmcamposGitHubdependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
a77fedc2a2 chore: versions bump (#667)
* build(deps): bump com.puppycrawl.tools:checkstyle in /server

Bumps [com.puppycrawl.tools:checkstyle](https://github.com/checkstyle/checkstyle) from 11.0.0 to 11.0.1.
- [Release notes](https://github.com/checkstyle/checkstyle/releases)
- [Commits](https://github.com/checkstyle/checkstyle/compare/checkstyle-11.0.0...checkstyle-11.0.1)

---
updated-dependencies:
- dependency-name: com.puppycrawl.tools:checkstyle
  dependency-version: 11.0.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

* build(deps): bump actions/setup-node from 4 to 5

Bumps [actions/setup-node](https://github.com/actions/setup-node) from 4 to 5.
- [Release notes](https://github.com/actions/setup-node/releases)
- [Commits](https://github.com/actions/setup-node/compare/v4...v5)

---
updated-dependencies:
- dependency-name: actions/setup-node
  dependency-version: '5'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>

* build(deps): bump org.springdoc:springdoc-openapi-starter-webmvc-ui

Bumps [org.springdoc:springdoc-openapi-starter-webmvc-ui](https://github.com/springdoc/springdoc-openapi) from 2.8.11 to 2.8.13.
- [Release notes](https://github.com/springdoc/springdoc-openapi/releases)
- [Changelog](https://github.com/springdoc/springdoc-openapi/blob/main/CHANGELOG.md)
- [Commits](https://github.com/springdoc/springdoc-openapi/compare/v2.8.11...v2.8.13)

---
updated-dependencies:
- dependency-name: org.springdoc:springdoc-openapi-starter-webmvc-ui
  dependency-version: 2.8.13
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

* build(deps): bump org.apache.maven.plugins:maven-failsafe-plugin

Bumps [org.apache.maven.plugins:maven-failsafe-plugin](https://github.com/apache/maven-surefire) from 3.5.3 to 3.5.4.
- [Release notes](https://github.com/apache/maven-surefire/releases)
- [Commits](https://github.com/apache/maven-surefire/compare/surefire-3.5.3...surefire-3.5.4)

---
updated-dependencies:
- dependency-name: org.apache.maven.plugins:maven-failsafe-plugin
  dependency-version: 3.5.4
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

* build(deps): bump org.hibernate.orm.tooling:hibernate-enhance-maven-plugin

Bumps [org.hibernate.orm.tooling:hibernate-enhance-maven-plugin](https://github.com/hibernate/hibernate-orm) from 6.6.26.Final to 6.6.29.Final.
- [Release notes](https://github.com/hibernate/hibernate-orm/releases)
- [Changelog](https://github.com/hibernate/hibernate-orm/blob/6.6.29/changelog.txt)
- [Commits](https://github.com/hibernate/hibernate-orm/compare/6.6.26...6.6.29)

---
updated-dependencies:
- dependency-name: org.hibernate.orm.tooling:hibernate-enhance-maven-plugin
  dependency-version: 6.6.29.Final
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

* build(deps): bump org.apache.maven.plugins:maven-surefire-plugin

Bumps [org.apache.maven.plugins:maven-surefire-plugin](https://github.com/apache/maven-surefire) from 3.5.3 to 3.5.4.
- [Release notes](https://github.com/apache/maven-surefire/releases)
- [Commits](https://github.com/apache/maven-surefire/compare/surefire-3.5.3...surefire-3.5.4)

---
updated-dependencies:
- dependency-name: org.apache.maven.plugins:maven-surefire-plugin
  dependency-version: 3.5.4
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

* build(deps): bump SonarSource/sonarqube-scan-action from 5.3.0 to 6.0.0

Bumps [SonarSource/sonarqube-scan-action](https://github.com/sonarsource/sonarqube-scan-action) from 5.3.0 to 6.0.0.
- [Release notes](https://github.com/sonarsource/sonarqube-scan-action/releases)
- [Commits](https://github.com/sonarsource/sonarqube-scan-action/compare/v5.3.0...v6.0.0)

---
updated-dependencies:
- dependency-name: SonarSource/sonarqube-scan-action
  dependency-version: 6.0.0
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>

* chore: bump client deps versions

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-09-20 15:55:48 -03:00
rmcamposandGitHub 4ae0309709 chore: drop angular - not using at all (#660) 2025-09-20 14:50:16 -03:00
rmcamposandGitHub ba1277d141 fix client and main tags (#633) 2025-08-31 17:23:08 -03:00
rmcamposGitHubdependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
d2ae26ffdd feat: upgrade client and angular dependencies (#632)
* build(deps): bump actions/setup-java from 4 to 5

Bumps [actions/setup-java](https://github.com/actions/setup-java) from 4 to 5.
- [Release notes](https://github.com/actions/setup-java/releases)
- [Commits](https://github.com/actions/setup-java/compare/v4...v5)

---
updated-dependencies:
- dependency-name: actions/setup-java
  dependency-version: '5'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>

* build(deps): bump org.springdoc:springdoc-openapi-starter-webmvc-ui

Bumps [org.springdoc:springdoc-openapi-starter-webmvc-ui](https://github.com/springdoc/springdoc-openapi) from 2.8.9 to 2.8.11.
- [Release notes](https://github.com/springdoc/springdoc-openapi/releases)
- [Changelog](https://github.com/springdoc/springdoc-openapi/blob/main/CHANGELOG.md)
- [Commits](https://github.com/springdoc/springdoc-openapi/compare/v2.8.9...v2.8.11)

---
updated-dependencies:
- dependency-name: org.springdoc:springdoc-openapi-starter-webmvc-ui
  dependency-version: 2.8.11
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

* feat: client versions bump

* feat: angular versions bump

* docs: add commands to upgrade dependencies

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-08-31 17:03:47 -03:00
rmcamposGitHubdependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
0049274356 feat: updates (#631)
* build(deps): bump org.springframework.boot:spring-boot-starter-parent

Bumps [org.springframework.boot:spring-boot-starter-parent](https://github.com/spring-projects/spring-boot) from 3.5.4 to 3.5.5.
- [Release notes](https://github.com/spring-projects/spring-boot/releases)
- [Commits](https://github.com/spring-projects/spring-boot/compare/v3.5.4...v3.5.5)

---
updated-dependencies:
- dependency-name: org.springframework.boot:spring-boot-starter-parent
  dependency-version: 3.5.5
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

* build(deps): bump io.jsonwebtoken:jjwt-jackson in /server

Bumps io.jsonwebtoken:jjwt-jackson from 0.12.7 to 0.13.0.

---
updated-dependencies:
- dependency-name: io.jsonwebtoken:jjwt-jackson
  dependency-version: 0.13.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>

* build(deps): bump io.jsonwebtoken:jjwt-impl in /server

Bumps [io.jsonwebtoken:jjwt-impl](https://github.com/jwtk/jjwt) from 0.12.7 to 0.13.0.
- [Release notes](https://github.com/jwtk/jjwt/releases)
- [Changelog](https://github.com/jwtk/jjwt/blob/master/CHANGELOG.md)
- [Commits](https://github.com/jwtk/jjwt/compare/0.12.7...0.13.0)

---
updated-dependencies:
- dependency-name: io.jsonwebtoken:jjwt-impl
  dependency-version: 0.13.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>

* build(deps): bump io.jsonwebtoken:jjwt-api in /server

Bumps [io.jsonwebtoken:jjwt-api](https://github.com/jwtk/jjwt) from 0.12.7 to 0.13.0.
- [Release notes](https://github.com/jwtk/jjwt/releases)
- [Changelog](https://github.com/jwtk/jjwt/blob/master/CHANGELOG.md)
- [Commits](https://github.com/jwtk/jjwt/compare/0.12.7...0.13.0)

---
updated-dependencies:
- dependency-name: io.jsonwebtoken:jjwt-api
  dependency-version: 0.13.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>

* feat: add Taskfile

* feat: add files, tasks and more automations

* feat: disable email sending if not configured

* chore: rename client to tasknote-web

* feat: add devtools for faster development

* feat: Re-tag Docker image with 'latest' tag

* feat: update wording and improve taskfile

* Implement ApplicationRunner for startup logging

* fix: add reachability json file

* feat: drop old config for JJWT

* Revert "feat: drop old config for JJWT"

This reverts commit ed29cf4684454b0d5e3f1a284b479e2bb6872ad7.

* chore: JJWT finally working now

* test: fix test cases

* ci: fix permissions

* test: add more test cases

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-08-31 13:43:26 -03:00
rmcamposandGitHub abc5fb4cb3 fix: json error and docs (#630)
* feat: add docs and reflection solution - wip

* fix: login and jjwt cloud native issue
2025-08-27 11:13:56 -03:00
rmcamposGitHubdependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
7aadfb9159 Feat/upgrades (#613)
* build(deps): bump tmp and @inquirer/editor in /angular

Bumps [tmp](https://github.com/raszi/node-tmp) and [@inquirer/editor](https://github.com/SBoudrias/Inquirer.js). These dependencies needed to be updated together.

Updates `tmp` from 0.2.3 to 0.2.5
- [Changelog](https://github.com/raszi/node-tmp/blob/master/CHANGELOG.md)
- [Commits](https://github.com/raszi/node-tmp/compare/v0.2.3...v0.2.5)

Updates `@inquirer/editor` from 4.2.15 to 4.2.16
- [Release notes](https://github.com/SBoudrias/Inquirer.js/releases)
- [Commits](https://github.com/SBoudrias/Inquirer.js/compare/@inquirer/editor@4.2.15...@inquirer/editor@4.2.16)

---
updated-dependencies:
- dependency-name: tmp
  dependency-version: 0.2.5
  dependency-type: indirect
- dependency-name: "@inquirer/editor"
  dependency-version: 4.2.16
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>

* feat: update dependencies

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-08-20 13:59:28 -03:00
rmcamposGitHubdependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
13af0620a2 chore: update angular version (#606)
* build(deps-dev): bump typescript from 5.8.3 to 5.9.2 in /angular

Bumps [typescript](https://github.com/microsoft/TypeScript) from 5.8.3 to 5.9.2.
- [Release notes](https://github.com/microsoft/TypeScript/releases)
- [Changelog](https://github.com/microsoft/TypeScript/blob/main/azure-pipelines.release-publish.yml)
- [Commits](https://github.com/microsoft/TypeScript/compare/v5.8.3...v5.9.2)

---
updated-dependencies:
- dependency-name: typescript
  dependency-version: 5.9.2
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>

* feat: upgrade angular versions

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-08-12 18:22:11 -03:00
rmcamposGitHubdependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
5b4a6bf9c1 Chore/new versions (#605)
* build(deps): bump com.puppycrawl.tools:checkstyle in /server

Bumps [com.puppycrawl.tools:checkstyle](https://github.com/checkstyle/checkstyle) from 10.26.1 to 11.0.0.
- [Release notes](https://github.com/checkstyle/checkstyle/releases)
- [Commits](https://github.com/checkstyle/checkstyle/compare/checkstyle-10.26.1...checkstyle-11.0.0)

---
updated-dependencies:
- dependency-name: com.puppycrawl.tools:checkstyle
  dependency-version: 11.0.0
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>

* build(deps): bump typescript from 5.8.3 to 5.9.2 in /client

Bumps [typescript](https://github.com/microsoft/TypeScript) from 5.8.3 to 5.9.2.
- [Release notes](https://github.com/microsoft/TypeScript/releases)
- [Changelog](https://github.com/microsoft/TypeScript/blob/main/azure-pipelines.release-publish.yml)
- [Commits](https://github.com/microsoft/TypeScript/compare/v5.8.3...v5.9.2)

---
updated-dependencies:
- dependency-name: typescript
  dependency-version: 5.9.2
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>

* build(deps-dev): bump @eslint/js from 9.32.0 to 9.33.0 in /client

Bumps [@eslint/js](https://github.com/eslint/eslint/tree/HEAD/packages/js) from 9.32.0 to 9.33.0.
- [Release notes](https://github.com/eslint/eslint/releases)
- [Changelog](https://github.com/eslint/eslint/blob/main/CHANGELOG.md)
- [Commits](https://github.com/eslint/eslint/commits/v9.33.0/packages/js)

---
updated-dependencies:
- dependency-name: "@eslint/js"
  dependency-version: 9.33.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>

* build(deps-dev): bump @eslint/compat from 1.3.1 to 1.3.2 in /client

Bumps [@eslint/compat](https://github.com/eslint/rewrite/tree/HEAD/packages/compat) from 1.3.1 to 1.3.2.
- [Release notes](https://github.com/eslint/rewrite/releases)
- [Changelog](https://github.com/eslint/rewrite/blob/main/packages/compat/CHANGELOG.md)
- [Commits](https://github.com/eslint/rewrite/commits/compat-v1.3.2/packages/compat)

---
updated-dependencies:
- dependency-name: "@eslint/compat"
  dependency-version: 1.3.2
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

* build(deps): bump actions/checkout from 4 to 5

Bumps [actions/checkout](https://github.com/actions/checkout) from 4 to 5.
- [Release notes](https://github.com/actions/checkout/releases)
- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md)
- [Commits](https://github.com/actions/checkout/compare/v4...v5)

---
updated-dependencies:
- dependency-name: actions/checkout
  dependency-version: '5'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>

* build(deps): bump actions/cache from 4.2.3 to 4.2.4

Bumps [actions/cache](https://github.com/actions/cache) from 4.2.3 to 4.2.4.
- [Release notes](https://github.com/actions/cache/releases)
- [Changelog](https://github.com/actions/cache/blob/main/RELEASES.md)
- [Commits](https://github.com/actions/cache/compare/v4.2.3...v4.2.4)

---
updated-dependencies:
- dependency-name: actions/cache
  dependency-version: 4.2.4
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

* build(deps): bump org.hibernate.orm.tooling:hibernate-enhance-maven-plugin

Bumps [org.hibernate.orm.tooling:hibernate-enhance-maven-plugin](https://github.com/hibernate/hibernate-orm) from 6.6.24.Final to 6.6.25.Final.
- [Release notes](https://github.com/hibernate/hibernate-orm/releases)
- [Changelog](https://github.com/hibernate/hibernate-orm/blob/6.6.25/changelog.txt)
- [Commits](https://github.com/hibernate/hibernate-orm/compare/6.6.24...6.6.25)

---
updated-dependencies:
- dependency-name: org.hibernate.orm.tooling:hibernate-enhance-maven-plugin
  dependency-version: 6.6.25.Final
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

* build(deps): bump react-router from 7.6.3 to 7.8.0 in /client

Bumps [react-router](https://github.com/remix-run/react-router/tree/HEAD/packages/react-router) from 7.6.3 to 7.8.0.
- [Release notes](https://github.com/remix-run/react-router/releases)
- [Changelog](https://github.com/remix-run/react-router/blob/main/packages/react-router/CHANGELOG.md)
- [Commits](https://github.com/remix-run/react-router/commits/react-router@7.8.0/packages/react-router)

---
updated-dependencies:
- dependency-name: react-router
  dependency-version: 7.8.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>

* build(deps-dev): bump sass from 1.89.2 to 1.90.0 in /client

Bumps [sass](https://github.com/sass/dart-sass) from 1.89.2 to 1.90.0.
- [Release notes](https://github.com/sass/dart-sass/releases)
- [Changelog](https://github.com/sass/dart-sass/blob/main/CHANGELOG.md)
- [Commits](https://github.com/sass/dart-sass/compare/1.89.2...1.90.0)

---
updated-dependencies:
- dependency-name: sass
  dependency-version: 1.90.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>

* fix: eslint error

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-08-12 17:56:39 -03:00
rmcamposandGitHub f17803b858 fix: mobile version and radio selection. Issue #590 (#604) 2025-08-12 17:16:05 -03:00
rmcamposGitHubdependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
8009270b54 chore: app updates (#589)
* build(deps-dev): bump @types/react from 19.1.8 to 19.1.9 in /client

Bumps [@types/react](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/react) from 19.1.8 to 19.1.9.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/react)

---
updated-dependencies:
- dependency-name: "@types/react"
  dependency-version: 19.1.9
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

* build(deps-dev): bump typescript-eslint from 8.36.0 to 8.39.0 in /client

Bumps [typescript-eslint](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/typescript-eslint) from 8.36.0 to 8.39.0.
- [Release notes](https://github.com/typescript-eslint/typescript-eslint/releases)
- [Changelog](https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/typescript-eslint/CHANGELOG.md)
- [Commits](https://github.com/typescript-eslint/typescript-eslint/commits/v8.39.0/packages/typescript-eslint)

---
updated-dependencies:
- dependency-name: typescript-eslint
  dependency-version: 8.39.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>

* build(deps): bump vite from 7.0.4 to 7.0.6 in /client

Bumps [vite](https://github.com/vitejs/vite/tree/HEAD/packages/vite) from 7.0.4 to 7.0.6.
- [Release notes](https://github.com/vitejs/vite/releases)
- [Changelog](https://github.com/vitejs/vite/blob/main/packages/vite/CHANGELOG.md)
- [Commits](https://github.com/vitejs/vite/commits/v7.0.6/packages/vite)

---
updated-dependencies:
- dependency-name: vite
  dependency-version: 7.0.6
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

* build(deps-dev): bump @testing-library/jest-dom in /client

Bumps [@testing-library/jest-dom](https://github.com/testing-library/jest-dom) from 6.6.3 to 6.6.4.
- [Release notes](https://github.com/testing-library/jest-dom/releases)
- [Changelog](https://github.com/testing-library/jest-dom/blob/main/CHANGELOG.md)
- [Commits](https://github.com/testing-library/jest-dom/compare/v6.6.3...v6.6.4)

---
updated-dependencies:
- dependency-name: "@testing-library/jest-dom"
  dependency-version: 6.6.4
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

* build(deps): bump org.hibernate.orm.tooling:hibernate-enhance-maven-plugin

Bumps [org.hibernate.orm.tooling:hibernate-enhance-maven-plugin](https://github.com/hibernate/hibernate-orm) from 6.6.23.Final to 6.6.24.Final.
- [Release notes](https://github.com/hibernate/hibernate-orm/releases)
- [Changelog](https://github.com/hibernate/hibernate-orm/blob/6.6.24/changelog.txt)
- [Commits](https://github.com/hibernate/hibernate-orm/compare/6.6.23...6.6.24)

---
updated-dependencies:
- dependency-name: org.hibernate.orm.tooling:hibernate-enhance-maven-plugin
  dependency-version: 6.6.24.Final
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

* updates @stylistic/eslint-plugin to 5.2.2

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-08-05 15:26:41 -03:00
rmcamposandGitHub 9266ee77a9 feat: angular versions bump (#581) 2025-08-01 14:36:57 -03:00
rmcamposGitHubdependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
a791bfddd3 feat: new versions (#580)
* build(deps): bump SonarSource/sonarqube-scan-action from 5.2.0 to 5.3.0

Bumps [SonarSource/sonarqube-scan-action](https://github.com/sonarsource/sonarqube-scan-action) from 5.2.0 to 5.3.0.
- [Release notes](https://github.com/sonarsource/sonarqube-scan-action/releases)
- [Commits](https://github.com/sonarsource/sonarqube-scan-action/compare/v5.2.0...v5.3.0)

---
updated-dependencies:
- dependency-name: SonarSource/sonarqube-scan-action
  dependency-version: 5.3.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>

* build(deps-dev): bump eslint from 9.31.0 to 9.32.0 in /client

Bumps [eslint](https://github.com/eslint/eslint) from 9.31.0 to 9.32.0.
- [Release notes](https://github.com/eslint/eslint/releases)
- [Changelog](https://github.com/eslint/eslint/blob/main/CHANGELOG.md)
- [Commits](https://github.com/eslint/eslint/compare/v9.31.0...v9.32.0)

---
updated-dependencies:
- dependency-name: eslint
  dependency-version: 9.32.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>

* build(deps-dev): bump eslint-config-prettier in /client

Bumps [eslint-config-prettier](https://github.com/prettier/eslint-config-prettier) from 10.1.5 to 10.1.8.
- [Release notes](https://github.com/prettier/eslint-config-prettier/releases)
- [Changelog](https://github.com/prettier/eslint-config-prettier/blob/main/CHANGELOG.md)
- [Commits](https://github.com/prettier/eslint-config-prettier/compare/v10.1.5...v10.1.8)

---
updated-dependencies:
- dependency-name: eslint-config-prettier
  dependency-version: 10.1.8
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

* build(deps): bump react from 19.1.0 to 19.1.1 in /client

Bumps [react](https://github.com/facebook/react/tree/HEAD/packages/react) from 19.1.0 to 19.1.1.
- [Release notes](https://github.com/facebook/react/releases)
- [Changelog](https://github.com/facebook/react/blob/main/CHANGELOG.md)
- [Commits](https://github.com/facebook/react/commits/v19.1.1/packages/react)

---
updated-dependencies:
- dependency-name: react
  dependency-version: 19.1.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

* build(deps): bump org.apache.maven.plugins:maven-enforcer-plugin

Bumps [org.apache.maven.plugins:maven-enforcer-plugin](https://github.com/apache/maven-enforcer) from 3.6.0 to 3.6.1.
- [Release notes](https://github.com/apache/maven-enforcer/releases)
- [Commits](https://github.com/apache/maven-enforcer/compare/enforcer-3.6.0...enforcer-3.6.1)

---
updated-dependencies:
- dependency-name: org.apache.maven.plugins:maven-enforcer-plugin
  dependency-version: 3.6.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

* build(deps): bump org.hibernate.orm.tooling:hibernate-enhance-maven-plugin

Bumps [org.hibernate.orm.tooling:hibernate-enhance-maven-plugin](https://github.com/hibernate/hibernate-orm) from 6.6.21.Final to 6.6.23.Final.
- [Release notes](https://github.com/hibernate/hibernate-orm/releases)
- [Changelog](https://github.com/hibernate/hibernate-orm/blob/6.6.23/changelog.txt)
- [Commits](https://github.com/hibernate/hibernate-orm/compare/6.6.21...6.6.23)

---
updated-dependencies:
- dependency-name: org.hibernate.orm.tooling:hibernate-enhance-maven-plugin
  dependency-version: 6.6.23.Final
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

* build(deps-dev): bump eslint-plugin-jsdoc in /client

Bumps [eslint-plugin-jsdoc](https://github.com/gajus/eslint-plugin-jsdoc) from 51.3.4 to 52.0.0.
- [Release notes](https://github.com/gajus/eslint-plugin-jsdoc/releases)
- [Changelog](https://github.com/gajus/eslint-plugin-jsdoc/blob/main/.releaserc)
- [Commits](https://github.com/gajus/eslint-plugin-jsdoc/compare/v51.3.4...v52.0.0)

---
updated-dependencies:
- dependency-name: eslint-plugin-jsdoc
  dependency-version: 52.0.0
  dependency-type: direct:development
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>

* build(deps): bump org.springframework.boot:spring-boot-starter-parent

Bumps [org.springframework.boot:spring-boot-starter-parent](https://github.com/spring-projects/spring-boot) from 3.5.3 to 3.5.4.
- [Release notes](https://github.com/spring-projects/spring-boot/releases)
- [Commits](https://github.com/spring-projects/spring-boot/compare/v3.5.3...v3.5.4)

---
updated-dependencies:
- dependency-name: org.springframework.boot:spring-boot-starter-parent
  dependency-version: 3.5.4
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

* build(deps): bump react-i18next from 15.6.0 to 15.6.1 in /client

Bumps [react-i18next](https://github.com/i18next/react-i18next) from 15.6.0 to 15.6.1.
- [Changelog](https://github.com/i18next/react-i18next/blob/master/CHANGELOG.md)
- [Commits](https://github.com/i18next/react-i18next/compare/v15.6.0...v15.6.1)

---
updated-dependencies:
- dependency-name: react-i18next
  dependency-version: 15.6.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

* feat: make react-dom the same version as react

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-08-01 10:42:59 -03:00
rmcamposGitHubdependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
1ac56c2450 chore: updates (#565)
* build(deps): bump @angular/forms from 20.0.6 to 20.1.0 in /angular

---
updated-dependencies:
- dependency-name: "@angular/forms"
  dependency-version: 20.1.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>

* build(deps): bump @types/node from 24.0.10 to 24.0.13 in /client

Bumps [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node) from 24.0.10 to 24.0.13.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/node)

---
updated-dependencies:
- dependency-name: "@types/node"
  dependency-version: 24.0.13
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

* build(deps-dev): bump eslint from 9.30.1 to 9.31.0 in /client

Bumps [eslint](https://github.com/eslint/eslint) from 9.30.1 to 9.31.0.
- [Release notes](https://github.com/eslint/eslint/releases)
- [Changelog](https://github.com/eslint/eslint/blob/main/CHANGELOG.md)
- [Commits](https://github.com/eslint/eslint/compare/v9.30.1...v9.31.0)

---
updated-dependencies:
- dependency-name: eslint
  dependency-version: 9.31.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>

* build(deps-dev): bump @angular-devkit/build-angular in /angular

---
updated-dependencies:
- dependency-name: "@angular-devkit/build-angular"
  dependency-version: 20.1.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>

* build(deps): bump @angular/common from 20.0.6 to 20.1.0 in /angular

---
updated-dependencies:
- dependency-name: "@angular/common"
  dependency-version: 20.1.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>

* build(deps): bump @angular/platform-browser-dynamic in /angular

---
updated-dependencies:
- dependency-name: "@angular/platform-browser-dynamic"
  dependency-version: 20.1.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>

* build(deps): bump org.hibernate.orm.tooling:hibernate-enhance-maven-plugin

---
updated-dependencies:
- dependency-name: org.hibernate.orm.tooling:hibernate-enhance-maven-plugin
  dependency-version: 6.6.21.Final
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

* build(deps-dev): bump @eslint/js from 9.30.1 to 9.31.0 in /client

Bumps [@eslint/js](https://github.com/eslint/eslint/tree/HEAD/packages/js) from 9.30.1 to 9.31.0.
- [Release notes](https://github.com/eslint/eslint/releases)
- [Changelog](https://github.com/eslint/eslint/blob/main/CHANGELOG.md)
- [Commits](https://github.com/eslint/eslint/commits/v9.31.0/packages/js)

---
updated-dependencies:
- dependency-name: "@eslint/js"
  dependency-version: 9.31.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>

* build(deps): bump i18next from 25.3.1 to 25.3.2 in /client

Bumps [i18next](https://github.com/i18next/i18next) from 25.3.1 to 25.3.2.
- [Release notes](https://github.com/i18next/i18next/releases)
- [Changelog](https://github.com/i18next/i18next/blob/master/CHANGELOG.md)
- [Commits](https://github.com/i18next/i18next/compare/v25.3.1...v25.3.2)

---
updated-dependencies:
- dependency-name: i18next
  dependency-version: 25.3.2
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

* build(deps): bump vite from 7.0.2 to 7.0.4 in /client

Bumps [vite](https://github.com/vitejs/vite/tree/HEAD/packages/vite) from 7.0.2 to 7.0.4.
- [Release notes](https://github.com/vitejs/vite/releases)
- [Changelog](https://github.com/vitejs/vite/blob/main/packages/vite/CHANGELOG.md)
- [Commits](https://github.com/vitejs/vite/commits/v7.0.4/packages/vite)

---
updated-dependencies:
- dependency-name: vite
  dependency-version: 7.0.4
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

* build(deps-dev): bump @angular/cli from 20.0.5 to 20.1.0 in /angular

---
updated-dependencies:
- dependency-name: "@angular/cli"
  dependency-version: 20.1.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>

* build(deps): bump on-headers and compression in /angular

---
updated-dependencies:
- dependency-name: on-headers
  dependency-version: 1.1.0
  dependency-type: indirect
- dependency-name: compression
  dependency-version: 1.8.1
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>

* chore: fix angular versions

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-07-22 13:18:47 -03:00
rmcamposGitHubdependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
c5b90b7598 chore: versions (#552)
* build(deps): bump org.apache.maven.plugins:maven-enforcer-plugin

Bumps [org.apache.maven.plugins:maven-enforcer-plugin](https://github.com/apache/maven-enforcer) from 3.5.0 to 3.6.0.
- [Release notes](https://github.com/apache/maven-enforcer/releases)
- [Commits](https://github.com/apache/maven-enforcer/compare/enforcer-3.5.0...enforcer-3.6.0)

---
updated-dependencies:
- dependency-name: org.apache.maven.plugins:maven-enforcer-plugin
  dependency-version: 3.6.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>

* build(deps): bump org.hibernate.orm.tooling:hibernate-enhance-maven-plugin

Bumps [org.hibernate.orm.tooling:hibernate-enhance-maven-plugin](https://github.com/hibernate/hibernate-orm) from 6.6.19.Final to 6.6.20.Final.
- [Release notes](https://github.com/hibernate/hibernate-orm/releases)
- [Changelog](https://github.com/hibernate/hibernate-orm/blob/6.6.20/changelog.txt)
- [Commits](https://github.com/hibernate/hibernate-orm/compare/6.6.19...6.6.20)

---
updated-dependencies:
- dependency-name: org.hibernate.orm.tooling:hibernate-enhance-maven-plugin
  dependency-version: 6.6.20.Final
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

* build(deps-dev): bump eslint-plugin-jsdoc in /client

Bumps [eslint-plugin-jsdoc](https://github.com/gajus/eslint-plugin-jsdoc) from 50.8.0 to 51.3.4.
- [Release notes](https://github.com/gajus/eslint-plugin-jsdoc/releases)
- [Changelog](https://github.com/gajus/eslint-plugin-jsdoc/blob/main/.releaserc)
- [Commits](https://github.com/gajus/eslint-plugin-jsdoc/compare/v50.8.0...v51.3.4)

---
updated-dependencies:
- dependency-name: eslint-plugin-jsdoc
  dependency-version: 51.3.4
  dependency-type: direct:development
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>

* build(deps): bump @types/node from 22.16.0 to 24.0.10 in /client

Bumps [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node) from 22.16.0 to 24.0.10.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/node)

---
updated-dependencies:
- dependency-name: "@types/node"
  dependency-version: 24.0.10
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>

* build(deps-dev): bump typescript-eslint from 8.35.1 to 8.36.0 in /client

Bumps [typescript-eslint](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/typescript-eslint) from 8.35.1 to 8.36.0.
- [Release notes](https://github.com/typescript-eslint/typescript-eslint/releases)
- [Changelog](https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/typescript-eslint/CHANGELOG.md)
- [Commits](https://github.com/typescript-eslint/typescript-eslint/commits/v8.36.0/packages/typescript-eslint)

---
updated-dependencies:
- dependency-name: typescript-eslint
  dependency-version: 8.36.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>

* build(deps): bump vite from 6.3.5 to 7.0.2 in /client

Bumps [vite](https://github.com/vitejs/vite/tree/HEAD/packages/vite) from 6.3.5 to 7.0.2.
- [Release notes](https://github.com/vitejs/vite/releases)
- [Changelog](https://github.com/vitejs/vite/blob/main/packages/vite/CHANGELOG.md)
- [Commits](https://github.com/vitejs/vite/commits/v7.0.2/packages/vite)

---
updated-dependencies:
- dependency-name: vite
  dependency-version: 7.0.2
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-07-08 16:07:56 -03:00
rmcamposGitHubdependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
488dfb32d9 chore: updates (#545)
* build(deps): bump com.puppycrawl.tools:checkstyle in /server

Bumps [com.puppycrawl.tools:checkstyle](https://github.com/checkstyle/checkstyle) from 10.25.1 to 10.26.1.
- [Release notes](https://github.com/checkstyle/checkstyle/releases)
- [Commits](https://github.com/checkstyle/checkstyle/compare/checkstyle-10.25.1...checkstyle-10.26.1)

---
updated-dependencies:
- dependency-name: com.puppycrawl.tools:checkstyle
  dependency-version: 10.26.1
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>

* build(deps): bump org.hibernate.orm.tooling:hibernate-enhance-maven-plugin

Bumps [org.hibernate.orm.tooling:hibernate-enhance-maven-plugin](https://github.com/hibernate/hibernate-orm) from 6.6.18.Final to 6.6.19.Final.
- [Release notes](https://github.com/hibernate/hibernate-orm/releases)
- [Changelog](https://github.com/hibernate/hibernate-orm/blob/main/changelog.txt)
- [Commits](https://github.com/hibernate/hibernate-orm/commits)

---
updated-dependencies:
- dependency-name: org.hibernate.orm.tooling:hibernate-enhance-maven-plugin
  dependency-version: 6.6.19.Final
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

* build(deps-dev): bump @stylistic/eslint-plugin in /client

Bumps [@stylistic/eslint-plugin](https://github.com/eslint-stylistic/eslint-stylistic/tree/HEAD/packages/eslint-plugin) from 5.0.0 to 5.1.0.
- [Release notes](https://github.com/eslint-stylistic/eslint-stylistic/releases)
- [Changelog](https://github.com/eslint-stylistic/eslint-stylistic/blob/main/CHANGELOG.md)
- [Commits](https://github.com/eslint-stylistic/eslint-stylistic/commits/v5.1.0/packages/eslint-plugin)

---
updated-dependencies:
- dependency-name: "@stylistic/eslint-plugin"
  dependency-version: 5.1.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>

* build(deps): bump bootstrap from 5.3.6 to 5.3.7 in /client

Bumps [bootstrap](https://github.com/twbs/bootstrap) from 5.3.6 to 5.3.7.
- [Release notes](https://github.com/twbs/bootstrap/releases)
- [Commits](https://github.com/twbs/bootstrap/compare/v5.3.6...v5.3.7)

---
updated-dependencies:
- dependency-name: bootstrap
  dependency-version: 5.3.7
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

* build(deps): bump react-router from 7.6.2 to 7.6.3 in /client

Bumps [react-router](https://github.com/remix-run/react-router/tree/HEAD/packages/react-router) from 7.6.2 to 7.6.3.
- [Release notes](https://github.com/remix-run/react-router/releases)
- [Changelog](https://github.com/remix-run/react-router/blob/main/packages/react-router/CHANGELOG.md)
- [Commits](https://github.com/remix-run/react-router/commits/react-router@7.6.3/packages/react-router)

---
updated-dependencies:
- dependency-name: react-router
  dependency-version: 7.6.3
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

* build(deps-dev): bump @eslint/js from 9.29.0 to 9.30.0 in /client

Bumps [@eslint/js](https://github.com/eslint/eslint/tree/HEAD/packages/js) from 9.29.0 to 9.30.0.
- [Release notes](https://github.com/eslint/eslint/releases)
- [Changelog](https://github.com/eslint/eslint/blob/main/CHANGELOG.md)
- [Commits](https://github.com/eslint/eslint/commits/v9.30.0/packages/js)

---
updated-dependencies:
- dependency-name: "@eslint/js"
  dependency-version: 9.30.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>

* build(deps-dev): bump @angular-devkit/build-angular in /angular

Bumps [@angular-devkit/build-angular](https://github.com/angular/angular-cli) from 20.0.3 to 20.0.4.
- [Release notes](https://github.com/angular/angular-cli/releases)
- [Changelog](https://github.com/angular/angular-cli/blob/main/CHANGELOG.md)
- [Commits](https://github.com/angular/angular-cli/compare/20.0.3...20.0.4)

---
updated-dependencies:
- dependency-name: "@angular-devkit/build-angular"
  dependency-version: 20.0.4
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

* build(deps): bump react-i18next from 15.5.2 to 15.5.3 in /client

Bumps [react-i18next](https://github.com/i18next/react-i18next) from 15.5.2 to 15.5.3.
- [Changelog](https://github.com/i18next/react-i18next/blob/master/CHANGELOG.md)
- [Commits](https://github.com/i18next/react-i18next/compare/v15.5.2...v15.5.3)

---
updated-dependencies:
- dependency-name: react-i18next
  dependency-version: 15.5.3
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

* build(deps): bump @angular/router from 20.0.4 to 20.0.5 in /angular

Bumps [@angular/router](https://github.com/angular/angular/tree/HEAD/packages/router) from 20.0.4 to 20.0.5.
- [Release notes](https://github.com/angular/angular/releases)
- [Changelog](https://github.com/angular/angular/blob/main/CHANGELOG.md)
- [Commits](https://github.com/angular/angular/commits/20.0.5/packages/router)

---
updated-dependencies:
- dependency-name: "@angular/router"
  dependency-version: 20.0.5
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

* build(deps): bump @angular/forms from 20.0.4 to 20.0.5 in /angular

Bumps [@angular/forms](https://github.com/angular/angular/tree/HEAD/packages/forms) from 20.0.4 to 20.0.5.
- [Release notes](https://github.com/angular/angular/releases)
- [Changelog](https://github.com/angular/angular/blob/main/CHANGELOG.md)
- [Commits](https://github.com/angular/angular/commits/20.0.5/packages/forms)

---
updated-dependencies:
- dependency-name: "@angular/forms"
  dependency-version: 20.0.5
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

* build(deps): bump @angular/platform-browser-dynamic in /angular

Bumps [@angular/platform-browser-dynamic](https://github.com/angular/angular/tree/HEAD/packages/platform-browser-dynamic) from 20.0.4 to 20.0.5.
- [Release notes](https://github.com/angular/angular/releases)
- [Changelog](https://github.com/angular/angular/blob/main/CHANGELOG.md)
- [Commits](https://github.com/angular/angular/commits/20.0.5/packages/platform-browser-dynamic)

---
updated-dependencies:
- dependency-name: "@angular/platform-browser-dynamic"
  dependency-version: 20.0.5
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

* build(deps): bump @angular/core from 20.0.4 to 20.0.5 in /angular

Bumps [@angular/core](https://github.com/angular/angular/tree/HEAD/packages/core) from 20.0.4 to 20.0.5.
- [Release notes](https://github.com/angular/angular/releases)
- [Changelog](https://github.com/angular/angular/blob/main/CHANGELOG.md)
- [Commits](https://github.com/angular/angular/commits/20.0.5/packages/core)

---
updated-dependencies:
- dependency-name: "@angular/core"
  dependency-version: 20.0.5
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

* feat: bump angular dependencies

* chore: update packages

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-07-06 18:15:30 -03:00
aee76e9aee fix: delete request (#532)
* fix: corrects delete endpoint to follow HTTP DELETE standard (#509)

* fix: corrects delete endpoint to follow HTTP DELETE standard

* fix: refactor for consistent formatting

* feat: improve account deletion to use delete method

* test: fix account tests

---------

Co-authored-by: Patrick Bpds <patrickbpds@gmail.com>
2025-06-25 11:28:01 -03:00
rmcamposGitHubdependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
3d8b00baa4 chore: version bump (#529)
* build(deps): bump org.springdoc:springdoc-openapi-starter-webmvc-ui

Bumps [org.springdoc:springdoc-openapi-starter-webmvc-ui](https://github.com/springdoc/springdoc-openapi) from 2.8.8 to 2.8.9.
- [Release notes](https://github.com/springdoc/springdoc-openapi/releases)
- [Changelog](https://github.com/springdoc/springdoc-openapi/blob/main/CHANGELOG.md)
- [Commits](https://github.com/springdoc/springdoc-openapi/compare/v2.8.8...v2.8.9)

---
updated-dependencies:
- dependency-name: org.springdoc:springdoc-openapi-starter-webmvc-ui
  dependency-version: 2.8.9
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

* build(deps): bump org.hibernate.orm.tooling:hibernate-enhance-maven-plugin

Bumps [org.hibernate.orm.tooling:hibernate-enhance-maven-plugin](https://github.com/hibernate/hibernate-orm) from 6.6.17.Final to 6.6.18.Final.
- [Release notes](https://github.com/hibernate/hibernate-orm/releases)
- [Changelog](https://github.com/hibernate/hibernate-orm/blob/6.6.18/changelog.txt)
- [Commits](https://github.com/hibernate/hibernate-orm/compare/6.6.17...6.6.18)

---
updated-dependencies:
- dependency-name: org.hibernate.orm.tooling:hibernate-enhance-maven-plugin
  dependency-version: 6.6.18.Final
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

* build(deps): bump react-router from 7.6.1 to 7.6.2 in /client

Bumps [react-router](https://github.com/remix-run/react-router/tree/HEAD/packages/react-router) from 7.6.1 to 7.6.2.
- [Release notes](https://github.com/remix-run/react-router/releases)
- [Changelog](https://github.com/remix-run/react-router/blob/main/packages/react-router/CHANGELOG.md)
- [Commits](https://github.com/remix-run/react-router/commits/7.6.2/packages/react-router)

---
updated-dependencies:
- dependency-name: react-router
  dependency-version: 7.6.2
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

* build(deps-dev): bump @types/react from 19.1.5 to 19.1.8 in /client

Bumps [@types/react](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/react) from 19.1.5 to 19.1.8.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/react)

---
updated-dependencies:
- dependency-name: "@types/react"
  dependency-version: 19.1.8
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

* build(deps-dev): bump @eslint/js from 9.27.0 to 9.29.0 in /client

Bumps [@eslint/js](https://github.com/eslint/eslint/tree/HEAD/packages/js) from 9.27.0 to 9.29.0.
- [Release notes](https://github.com/eslint/eslint/releases)
- [Changelog](https://github.com/eslint/eslint/blob/main/CHANGELOG.md)
- [Commits](https://github.com/eslint/eslint/commits/v9.29.0/packages/js)

---
updated-dependencies:
- dependency-name: "@eslint/js"
  dependency-version: 9.29.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>

* build(deps-dev): bump @types/jest from 29.5.14 to 30.0.0 in /client

Bumps [@types/jest](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/jest) from 29.5.14 to 30.0.0.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/jest)

---
updated-dependencies:
- dependency-name: "@types/jest"
  dependency-version: 30.0.0
  dependency-type: direct:development
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>

* build(deps-dev): bump jasmine-core from 5.7.1 to 5.8.0 in /angular

Bumps [jasmine-core](https://github.com/jasmine/jasmine) from 5.7.1 to 5.8.0.
- [Release notes](https://github.com/jasmine/jasmine/releases)
- [Changelog](https://github.com/jasmine/jasmine/blob/main/RELEASE.md)
- [Commits](https://github.com/jasmine/jasmine/compare/v5.7.1...v5.8.0)

---
updated-dependencies:
- dependency-name: jasmine-core
  dependency-version: 5.8.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>

* build(deps): bump org.springframework.boot:spring-boot-starter-parent

---
updated-dependencies:
- dependency-name: org.springframework.boot:spring-boot-starter-parent
  dependency-version: 3.5.3
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

* build(deps): bump @angular/compiler from 20.0.2 to 20.0.4 in /angular

Bumps [@angular/compiler](https://github.com/angular/angular/tree/HEAD/packages/compiler) from 20.0.2 to 20.0.4.
- [Release notes](https://github.com/angular/angular/releases)
- [Changelog](https://github.com/angular/angular/blob/main/CHANGELOG.md)
- [Commits](https://github.com/angular/angular/commits/20.0.4/packages/compiler)

---
updated-dependencies:
- dependency-name: "@angular/compiler"
  dependency-version: 20.0.4
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

* build(deps): bump @angular/forms from 20.0.2 to 20.0.4 in /angular

Bumps [@angular/forms](https://github.com/angular/angular/tree/HEAD/packages/forms) from 20.0.2 to 20.0.4.
- [Release notes](https://github.com/angular/angular/releases)
- [Changelog](https://github.com/angular/angular/blob/main/CHANGELOG.md)
- [Commits](https://github.com/angular/angular/commits/20.0.4/packages/forms)

---
updated-dependencies:
- dependency-name: "@angular/forms"
  dependency-version: 20.0.4
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

* build(deps): bump com.puppycrawl.tools:checkstyle in /server

---
updated-dependencies:
- dependency-name: com.puppycrawl.tools:checkstyle
  dependency-version: 10.25.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

* build(deps-dev): bump @angular/cli from 20.0.1 to 20.0.3 in /angular

Bumps [@angular/cli](https://github.com/angular/angular-cli) from 20.0.1 to 20.0.3.
- [Release notes](https://github.com/angular/angular-cli/releases)
- [Changelog](https://github.com/angular/angular-cli/blob/main/CHANGELOG.md)
- [Commits](https://github.com/angular/angular-cli/compare/20.0.1...20.0.3)

---
updated-dependencies:
- dependency-name: "@angular/cli"
  dependency-version: 20.0.3
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

* build(deps-dev): bump @stylistic/eslint-plugin in /client

---
updated-dependencies:
- dependency-name: "@stylistic/eslint-plugin"
  dependency-version: 5.0.0
  dependency-type: direct:development
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>

* build(deps): bump @angular/common from 20.0.2 to 20.0.4 in /angular

Bumps [@angular/common](https://github.com/angular/angular/tree/HEAD/packages/common) from 20.0.2 to 20.0.4.
- [Release notes](https://github.com/angular/angular/releases)
- [Changelog](https://github.com/angular/angular/blob/main/CHANGELOG.md)
- [Commits](https://github.com/angular/angular/commits/20.0.4/packages/common)

---
updated-dependencies:
- dependency-name: "@angular/common"
  dependency-version: 20.0.4
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

* chore: fix angular version and packages

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-06-25 10:02:23 -03:00
rmcamposGitHubdependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
3553dd5661 chore: new versions and new features (#508)
* build(deps): bump org.hibernate.orm.tooling:hibernate-enhance-maven-plugin

Bumps [org.hibernate.orm.tooling:hibernate-enhance-maven-plugin](https://github.com/hibernate/hibernate-orm) from 6.6.16.Final to 6.6.17.Final.
- [Release notes](https://github.com/hibernate/hibernate-orm/releases)
- [Changelog](https://github.com/hibernate/hibernate-orm/blob/6.6.17/changelog.txt)
- [Commits](https://github.com/hibernate/hibernate-orm/compare/6.6.16...6.6.17)

---
updated-dependencies:
- dependency-name: org.hibernate.orm.tooling:hibernate-enhance-maven-plugin
  dependency-version: 6.6.17.Final
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

* build(deps): bump com.puppycrawl.tools:checkstyle in /server

Bumps [com.puppycrawl.tools:checkstyle](https://github.com/checkstyle/checkstyle) from 10.24.0 to 10.25.0.
- [Release notes](https://github.com/checkstyle/checkstyle/releases)
- [Commits](https://github.com/checkstyle/checkstyle/compare/checkstyle-10.24.0...checkstyle-10.25.0)

---
updated-dependencies:
- dependency-name: com.puppycrawl.tools:checkstyle
  dependency-version: 10.25.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>

* build(deps): bump webpack-dev-server and @angular-devkit/build-angular

Bumps [webpack-dev-server](https://github.com/webpack/webpack-dev-server) to 5.2.1 and updates ancestor dependency [@angular-devkit/build-angular](https://github.com/angular/angular-cli). These dependencies need to be updated together.


Updates `webpack-dev-server` from 5.2.0 to 5.2.1
- [Release notes](https://github.com/webpack/webpack-dev-server/releases)
- [Changelog](https://github.com/webpack/webpack-dev-server/blob/master/CHANGELOG.md)
- [Commits](https://github.com/webpack/webpack-dev-server/compare/v5.2.0...v5.2.1)

Updates `@angular-devkit/build-angular` from 19.2.12 to 20.0.1
- [Release notes](https://github.com/angular/angular-cli/releases)
- [Changelog](https://github.com/angular/angular-cli/blob/main/CHANGELOG.md)
- [Commits](https://github.com/angular/angular-cli/compare/19.2.12...20.0.1)

---
updated-dependencies:
- dependency-name: webpack-dev-server
  dependency-version: 5.2.1
  dependency-type: indirect
- dependency-name: "@angular-devkit/build-angular"
  dependency-version: 20.0.1
  dependency-type: direct:development
...

Signed-off-by: dependabot[bot] <support@github.com>

* build(deps-dev): bump typescript-eslint from 8.32.1 to 8.34.0 in /client

Bumps [typescript-eslint](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/typescript-eslint) from 8.32.1 to 8.34.0.
- [Release notes](https://github.com/typescript-eslint/typescript-eslint/releases)
- [Changelog](https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/typescript-eslint/CHANGELOG.md)
- [Commits](https://github.com/typescript-eslint/typescript-eslint/commits/v8.34.0/packages/typescript-eslint)

---
updated-dependencies:
- dependency-name: typescript-eslint
  dependency-version: 8.34.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>

* build(deps-dev): bump sass from 1.89.0 to 1.89.2 in /client

Bumps [sass](https://github.com/sass/dart-sass) from 1.89.0 to 1.89.2.
- [Release notes](https://github.com/sass/dart-sass/releases)
- [Changelog](https://github.com/sass/dart-sass/blob/main/CHANGELOG.md)
- [Commits](https://github.com/sass/dart-sass/compare/1.89.0...1.89.2)

---
updated-dependencies:
- dependency-name: sass
  dependency-version: 1.89.2
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

* build(deps-dev): bump vitest from 3.1.4 to 3.2.3 in /client

Bumps [vitest](https://github.com/vitest-dev/vitest/tree/HEAD/packages/vitest) from 3.1.4 to 3.2.3.
- [Release notes](https://github.com/vitest-dev/vitest/releases)
- [Commits](https://github.com/vitest-dev/vitest/commits/v3.2.3/packages/vitest)

---
updated-dependencies:
- dependency-name: vitest
  dependency-version: 3.2.3
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>

* build(deps): bump @types/node from 22.15.21 to 22.15.30 in /client

Bumps [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node) from 22.15.21 to 22.15.30.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/node)

---
updated-dependencies:
- dependency-name: "@types/node"
  dependency-version: 22.15.30
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

* build(deps-dev): bump @vitest/coverage-v8 from 3.1.4 to 3.2.3 in /client

Bumps [@vitest/coverage-v8](https://github.com/vitest-dev/vitest/tree/HEAD/packages/coverage-v8) from 3.1.4 to 3.2.3.
- [Release notes](https://github.com/vitest-dev/vitest/releases)
- [Commits](https://github.com/vitest-dev/vitest/commits/v3.2.3/packages/coverage-v8)

---
updated-dependencies:
- dependency-name: "@vitest/coverage-v8"
  dependency-version: 3.2.3
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>

* build(deps): bump @angular/core from 19.2.10 to 20.0.2 in /angular

Bumps [@angular/core](https://github.com/angular/angular/tree/HEAD/packages/core) from 19.2.10 to 20.0.2.
- [Release notes](https://github.com/angular/angular/releases)
- [Changelog](https://github.com/angular/angular/blob/main/CHANGELOG.md)
- [Commits](https://github.com/angular/angular/commits/20.0.2/packages/core)

---
updated-dependencies:
- dependency-name: "@angular/core"
  dependency-version: 20.0.2
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>

* build(deps-dev): bump @angular/cli from 19.2.13 to 20.0.1 in /angular

Bumps [@angular/cli](https://github.com/angular/angular-cli) from 19.2.13 to 20.0.1.
- [Release notes](https://github.com/angular/angular-cli/releases)
- [Changelog](https://github.com/angular/angular-cli/blob/main/CHANGELOG.md)
- [Commits](https://github.com/angular/angular-cli/compare/19.2.13...20.0.1)

---
updated-dependencies:
- dependency-name: "@angular/cli"
  dependency-version: 20.0.1
  dependency-type: direct:development
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>

* build(deps-dev): bump @angular/compiler-cli in /angular

Bumps [@angular/compiler-cli](https://github.com/angular/angular/tree/HEAD/packages/compiler-cli) from 19.2.10 to 20.0.2.
- [Release notes](https://github.com/angular/angular/releases)
- [Changelog](https://github.com/angular/angular/blob/main/CHANGELOG.md)
- [Commits](https://github.com/angular/angular/commits/20.0.2/packages/compiler-cli)

---
updated-dependencies:
- dependency-name: "@angular/compiler-cli"
  dependency-version: 20.0.2
  dependency-type: direct:development
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>

* feat: add cloning note feature

* feat: sort notes by id, the last one shows up first

* test: fix test cases

* test: fix test cases

* test: add test case

* test: add more test cases

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-06-10 16:04:26 -03:00
rmcamposandGitHub 49e0f915e1 Fix/410 fix languages (#483)
* feat: handle languages and save it in the backend. Issue #418. Issue #410

* test: fix test cases

* test: add test cases in the backend
2025-05-29 17:42:32 -03:00
rmcamposGitHubdependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>snyk-bot
fe2803393b Feat/improve security (#482)
* build(deps): bump org.hibernate.orm.tooling:hibernate-enhance-maven-plugin

Bumps [org.hibernate.orm.tooling:hibernate-enhance-maven-plugin](https://github.com/hibernate/hibernate-orm) from 6.6.15.Final to 6.6.16.Final.
- [Release notes](https://github.com/hibernate/hibernate-orm/releases)
- [Changelog](https://github.com/hibernate/hibernate-orm/blob/6.6.16/changelog.txt)
- [Commits](https://github.com/hibernate/hibernate-orm/compare/6.6.15...6.6.16)

---
updated-dependencies:
- dependency-name: org.hibernate.orm.tooling:hibernate-enhance-maven-plugin
  dependency-version: 6.6.16.Final
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

* build(deps): bump com.puppycrawl.tools:checkstyle in /server

Bumps [com.puppycrawl.tools:checkstyle](https://github.com/checkstyle/checkstyle) from 10.23.1 to 10.24.0.
- [Release notes](https://github.com/checkstyle/checkstyle/releases)
- [Commits](https://github.com/checkstyle/checkstyle/compare/checkstyle-10.23.1...checkstyle-10.24.0)

---
updated-dependencies:
- dependency-name: com.puppycrawl.tools:checkstyle
  dependency-version: 10.24.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>

* build(deps): bump org.springframework.boot:spring-boot-starter-parent

Bumps [org.springframework.boot:spring-boot-starter-parent](https://github.com/spring-projects/spring-boot) from 3.4.1 to 3.5.0.
- [Release notes](https://github.com/spring-projects/spring-boot/releases)
- [Commits](https://github.com/spring-projects/spring-boot/compare/v3.4.1...v3.5.0)

---
updated-dependencies:
- dependency-name: org.springframework.boot:spring-boot-starter-parent
  dependency-version: 3.5.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>

* build(deps): bump @vitejs/plugin-react from 4.4.1 to 4.5.0 in /client

Bumps [@vitejs/plugin-react](https://github.com/vitejs/vite-plugin-react/tree/HEAD/packages/plugin-react) from 4.4.1 to 4.5.0.
- [Release notes](https://github.com/vitejs/vite-plugin-react/releases)
- [Changelog](https://github.com/vitejs/vite-plugin-react/blob/main/packages/plugin-react/CHANGELOG.md)
- [Commits](https://github.com/vitejs/vite-plugin-react/commits/plugin-react@4.5.0/packages/plugin-react)

---
updated-dependencies:
- dependency-name: "@vitejs/plugin-react"
  dependency-version: 4.5.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>

* build(deps): bump react-router from 7.6.0 to 7.6.1 in /client

Bumps [react-router](https://github.com/remix-run/react-router/tree/HEAD/packages/react-router) from 7.6.0 to 7.6.1.
- [Release notes](https://github.com/remix-run/react-router/releases)
- [Changelog](https://github.com/remix-run/react-router/blob/main/packages/react-router/CHANGELOG.md)
- [Commits](https://github.com/remix-run/react-router/commits/react-router@7.6.1/packages/react-router)

---
updated-dependencies:
- dependency-name: react-router
  dependency-version: 7.6.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

* build(deps): bump react-datepicker from 8.3.0 to 8.4.0 in /client

Bumps [react-datepicker](https://github.com/Hacker0x01/react-datepicker) from 8.3.0 to 8.4.0.
- [Release notes](https://github.com/Hacker0x01/react-datepicker/releases)
- [Commits](https://github.com/Hacker0x01/react-datepicker/compare/v8.3.0...v8.4.0)

---
updated-dependencies:
- dependency-name: react-datepicker
  dependency-version: 8.4.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>

* build(deps-dev): bump @stylistic/eslint-plugin in /client

Bumps [@stylistic/eslint-plugin](https://github.com/eslint-stylistic/eslint-stylistic/tree/HEAD/packages/eslint-plugin) from 4.2.0 to 4.4.0.
- [Release notes](https://github.com/eslint-stylistic/eslint-stylistic/releases)
- [Changelog](https://github.com/eslint-stylistic/eslint-stylistic/blob/main/CHANGELOG.md)
- [Commits](https://github.com/eslint-stylistic/eslint-stylistic/commits/v4.4.0/packages/eslint-plugin)

---
updated-dependencies:
- dependency-name: "@stylistic/eslint-plugin"
  dependency-version: 4.4.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>

* build(deps-dev): bump globals from 16.1.0 to 16.2.0 in /client

Bumps [globals](https://github.com/sindresorhus/globals) from 16.1.0 to 16.2.0.
- [Release notes](https://github.com/sindresorhus/globals/releases)
- [Commits](https://github.com/sindresorhus/globals/compare/v16.1.0...v16.2.0)

---
updated-dependencies:
- dependency-name: globals
  dependency-version: 16.2.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>

* build(deps-dev): bump jasmine-core from 5.6.0 to 5.7.1 in /angular

Bumps [jasmine-core](https://github.com/jasmine/jasmine) from 5.6.0 to 5.7.1.
- [Release notes](https://github.com/jasmine/jasmine/releases)
- [Changelog](https://github.com/jasmine/jasmine/blob/main/RELEASE.md)
- [Commits](https://github.com/jasmine/jasmine/compare/v5.6.0...v5.7.1)

---
updated-dependencies:
- dependency-name: jasmine-core
  dependency-version: 5.7.1
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>

* build(deps-dev): bump @angular/cli from 19.2.12 to 19.2.13 in /angular

Bumps [@angular/cli](https://github.com/angular/angular-cli) from 19.2.12 to 19.2.13.
- [Release notes](https://github.com/angular/angular-cli/releases)
- [Changelog](https://github.com/angular/angular-cli/blob/main/CHANGELOG.md)
- [Commits](https://github.com/angular/angular-cli/compare/19.2.12...19.2.13)

---
updated-dependencies:
- dependency-name: "@angular/cli"
  dependency-version: 19.2.13
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

* build(deps): bump @angular/platform-browser-dynamic in /angular

Bumps [@angular/platform-browser-dynamic](https://github.com/angular/angular/tree/HEAD/packages/platform-browser-dynamic) from 19.2.10 to 19.2.13.
- [Release notes](https://github.com/angular/angular/releases)
- [Changelog](https://github.com/angular/angular/blob/main/CHANGELOG.md)
- [Commits](https://github.com/angular/angular/commits/19.2.13/packages/platform-browser-dynamic)

---
updated-dependencies:
- dependency-name: "@angular/platform-browser-dynamic"
  dependency-version: 19.2.13
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

* build(deps): bump @angular/router from 19.2.10 to 19.2.13 in /angular

Bumps [@angular/router](https://github.com/angular/angular/tree/HEAD/packages/router) from 19.2.10 to 19.2.13.
- [Release notes](https://github.com/angular/angular/releases)
- [Changelog](https://github.com/angular/angular/blob/main/CHANGELOG.md)
- [Commits](https://github.com/angular/angular/commits/19.2.13/packages/router)

---
updated-dependencies:
- dependency-name: "@angular/router"
  dependency-version: 19.2.13
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

* build(deps): bump @angular/platform-browser in /angular

Bumps [@angular/platform-browser](https://github.com/angular/angular/tree/HEAD/packages/platform-browser) from 19.2.10 to 19.2.13.
- [Release notes](https://github.com/angular/angular/releases)
- [Changelog](https://github.com/angular/angular/blob/main/CHANGELOG.md)
- [Commits](https://github.com/angular/angular/commits/19.2.13/packages/platform-browser)

---
updated-dependencies:
- dependency-name: "@angular/platform-browser"
  dependency-version: 19.2.13
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

* fix: server/Dockerfile to reduce vulnerabilities

The following vulnerabilities are fixed with an upgrade:
- https://snyk.io/vuln/SNYK-DEBIAN12-GCC12-5901316
- https://snyk.io/vuln/SNYK-DEBIAN12-GCC12-5901316
- https://snyk.io/vuln/SNYK-DEBIAN12-GCC12-5901316
- https://snyk.io/vuln/SNYK-DEBIAN12-SHADOW-5879156
- https://snyk.io/vuln/SNYK-DEBIAN12-SHADOW-5879156

* fix: css styles and translations

* chore: fix authentication provider

* chore: fix line too long

* test: update test cases

* chore: prefer coalescing operator

* chore: prefer nullish coalescing operator

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: snyk-bot <snyk-bot@snyk.io>
2025-05-28 18:15:37 -03:00
rmcamposGitHubdependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
a45378685b chore: versions and note fix (#466)
* build(deps): bump org.hibernate.orm.tooling:hibernate-enhance-maven-plugin

Bumps [org.hibernate.orm.tooling:hibernate-enhance-maven-plugin](https://github.com/hibernate/hibernate-orm) from 6.6.14.Final to 6.6.15.Final.
- [Release notes](https://github.com/hibernate/hibernate-orm/releases)
- [Changelog](https://github.com/hibernate/hibernate-orm/blob/6.6.15/changelog.txt)
- [Commits](https://github.com/hibernate/hibernate-orm/compare/6.6.14...6.6.15)

---
updated-dependencies:
- dependency-name: org.hibernate.orm.tooling:hibernate-enhance-maven-plugin
  dependency-version: 6.6.15.Final
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

* build(deps-dev): bump @types/react from 19.1.2 to 19.1.4 in /client

Bumps [@types/react](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/react) from 19.1.2 to 19.1.4.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/react)

---
updated-dependencies:
- dependency-name: "@types/react"
  dependency-version: 19.1.4
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

* build(deps): bump react-bootstrap from 2.10.9 to 2.10.10 in /client

Bumps [react-bootstrap](https://github.com/react-bootstrap/react-bootstrap) from 2.10.9 to 2.10.10.
- [Release notes](https://github.com/react-bootstrap/react-bootstrap/releases)
- [Changelog](https://github.com/react-bootstrap/react-bootstrap/blob/v2.10.10/CHANGELOG.md)
- [Commits](https://github.com/react-bootstrap/react-bootstrap/compare/v2.10.9...v2.10.10)

---
updated-dependencies:
- dependency-name: react-bootstrap
  dependency-version: 2.10.10
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

* build(deps-dev): bump typescript-eslint from 8.31.1 to 8.32.1 in /client

Bumps [typescript-eslint](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/typescript-eslint) from 8.31.1 to 8.32.1.
- [Release notes](https://github.com/typescript-eslint/typescript-eslint/releases)
- [Changelog](https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/typescript-eslint/CHANGELOG.md)
- [Commits](https://github.com/typescript-eslint/typescript-eslint/commits/v8.32.1/packages/typescript-eslint)

---
updated-dependencies:
- dependency-name: typescript-eslint
  dependency-version: 8.32.1
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>

* build(deps): bump i18next from 25.1.2 to 25.2.0 in /client

Bumps [i18next](https://github.com/i18next/i18next) from 25.1.2 to 25.2.0.
- [Release notes](https://github.com/i18next/i18next/releases)
- [Changelog](https://github.com/i18next/i18next/blob/master/CHANGELOG.md)
- [Commits](https://github.com/i18next/i18next/compare/v25.1.2...v25.2.0)

---
updated-dependencies:
- dependency-name: i18next
  dependency-version: 25.2.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>

* build(deps-dev): bump eslint-plugin-jsdoc in /client

Bumps [eslint-plugin-jsdoc](https://github.com/gajus/eslint-plugin-jsdoc) from 50.6.11 to 50.6.17.
- [Release notes](https://github.com/gajus/eslint-plugin-jsdoc/releases)
- [Changelog](https://github.com/gajus/eslint-plugin-jsdoc/blob/main/.releaserc)
- [Commits](https://github.com/gajus/eslint-plugin-jsdoc/compare/v50.6.11...v50.6.17)

---
updated-dependencies:
- dependency-name: eslint-plugin-jsdoc
  dependency-version: 50.6.17
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

* fix: remove complexity

* feat: general improvements, sorry for the long commit

* test: fix test cases and build

* chore: fix backend style issues

* test: remove duplicated test

* chore: remove unused components and files

* test: add home test cases

* test: add missing test file

* chore: fix shorting function

* fix: get back missing css rules

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-05-24 15:07:26 -03:00
rmcamposGitHubdependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
f6e4ae1273 chore: versions bump (#459)
* build(deps-dev): bump @eslint/compat from 1.2.8 to 1.2.9 in /client

Bumps [@eslint/compat](https://github.com/eslint/rewrite) from 1.2.8 to 1.2.9.
- [Release notes](https://github.com/eslint/rewrite/releases)
- [Changelog](https://github.com/eslint/rewrite/blob/main/release-please-config.json)
- [Commits](https://github.com/eslint/rewrite/compare/compat-v1.2.8...compat-v1.2.9)

---
updated-dependencies:
- dependency-name: "@eslint/compat"
  dependency-version: 1.2.9
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

* build(deps): bump org.springdoc:springdoc-openapi-starter-webmvc-ui

Bumps [org.springdoc:springdoc-openapi-starter-webmvc-ui](https://github.com/springdoc/springdoc-openapi) from 2.8.6 to 2.8.8.
- [Release notes](https://github.com/springdoc/springdoc-openapi/releases)
- [Changelog](https://github.com/springdoc/springdoc-openapi/blob/main/CHANGELOG.md)
- [Commits](https://github.com/springdoc/springdoc-openapi/compare/v2.8.6...v2.8.8)

---
updated-dependencies:
- dependency-name: org.springdoc:springdoc-openapi-starter-webmvc-ui
  dependency-version: 2.8.8
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

* build(deps): bump vite from 6.3.4 to 6.3.5 in /client

Bumps [vite](https://github.com/vitejs/vite/tree/HEAD/packages/vite) from 6.3.4 to 6.3.5.
- [Release notes](https://github.com/vitejs/vite/releases)
- [Changelog](https://github.com/vitejs/vite/blob/main/packages/vite/CHANGELOG.md)
- [Commits](https://github.com/vitejs/vite/commits/v6.3.5/packages/vite)

---
updated-dependencies:
- dependency-name: vite
  dependency-version: 6.3.5
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

* build(deps): bump SonarSource/sonarqube-scan-action from 5.1.0 to 5.2.0

Bumps [SonarSource/sonarqube-scan-action](https://github.com/sonarsource/sonarqube-scan-action) from 5.1.0 to 5.2.0.
- [Release notes](https://github.com/sonarsource/sonarqube-scan-action/releases)
- [Commits](https://github.com/sonarsource/sonarqube-scan-action/compare/v5.1.0...v5.2.0)

---
updated-dependencies:
- dependency-name: SonarSource/sonarqube-scan-action
  dependency-version: 5.2.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>

* build(deps): bump org.hibernate.orm.tooling:hibernate-enhance-maven-plugin

Bumps [org.hibernate.orm.tooling:hibernate-enhance-maven-plugin](https://github.com/hibernate/hibernate-orm) from 6.6.13.Final to 6.6.14.Final.
- [Release notes](https://github.com/hibernate/hibernate-orm/releases)
- [Changelog](https://github.com/hibernate/hibernate-orm/blob/6.6.14/changelog.txt)
- [Commits](https://github.com/hibernate/hibernate-orm/compare/6.6.13...6.6.14)

---
updated-dependencies:
- dependency-name: org.hibernate.orm.tooling:hibernate-enhance-maven-plugin
  dependency-version: 6.6.14.Final
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

* build(deps): bump i18next from 25.0.1 to 25.1.2 in /client

Bumps [i18next](https://github.com/i18next/i18next) from 25.0.1 to 25.1.2.
- [Release notes](https://github.com/i18next/i18next/releases)
- [Changelog](https://github.com/i18next/i18next/blob/master/CHANGELOG.md)
- [Commits](https://github.com/i18next/i18next/compare/v25.0.1...v25.1.2)

---
updated-dependencies:
- dependency-name: i18next
  dependency-version: 25.1.2
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>

* build(deps): bump react-router from 7.5.2 to 7.6.0 in /client

Bumps [react-router](https://github.com/remix-run/react-router/tree/HEAD/packages/react-router) from 7.5.2 to 7.6.0.
- [Release notes](https://github.com/remix-run/react-router/releases)
- [Changelog](https://github.com/remix-run/react-router/blob/main/packages/react-router/CHANGELOG.md)
- [Commits](https://github.com/remix-run/react-router/commits/react-router@7.6.0/packages/react-router)

---
updated-dependencies:
- dependency-name: react-router
  dependency-version: 7.6.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>

* build(deps): bump @angular/compiler from 19.2.8 to 19.2.10 in /angular

Bumps [@angular/compiler](https://github.com/angular/angular/tree/HEAD/packages/compiler) from 19.2.8 to 19.2.10.
- [Release notes](https://github.com/angular/angular/releases)
- [Changelog](https://github.com/angular/angular/blob/main/CHANGELOG.md)
- [Commits](https://github.com/angular/angular/commits/19.2.10/packages/compiler)

---
updated-dependencies:
- dependency-name: "@angular/compiler"
  dependency-version: 19.2.10
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

* build(deps-dev): bump @angular/compiler-cli in /angular

Bumps [@angular/compiler-cli](https://github.com/angular/angular/tree/HEAD/packages/compiler-cli) from 19.2.8 to 19.2.10.
- [Release notes](https://github.com/angular/angular/releases)
- [Changelog](https://github.com/angular/angular/blob/main/CHANGELOG.md)
- [Commits](https://github.com/angular/angular/commits/19.2.10/packages/compiler-cli)

---
updated-dependencies:
- dependency-name: "@angular/compiler-cli"
  dependency-version: 19.2.10
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

* build(deps-dev): bump @angular/cli from 19.2.9 to 19.2.11 in /angular

Bumps [@angular/cli](https://github.com/angular/angular-cli) from 19.2.9 to 19.2.11.
- [Release notes](https://github.com/angular/angular-cli/releases)
- [Changelog](https://github.com/angular/angular-cli/blob/main/CHANGELOG.md)
- [Commits](https://github.com/angular/angular-cli/compare/19.2.9...19.2.11)

---
updated-dependencies:
- dependency-name: "@angular/cli"
  dependency-version: 19.2.11
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

* build(deps): bump @angular/forms from 19.2.8 to 19.2.10 in /angular

Bumps [@angular/forms](https://github.com/angular/angular/tree/HEAD/packages/forms) from 19.2.8 to 19.2.10.
- [Release notes](https://github.com/angular/angular/releases)
- [Changelog](https://github.com/angular/angular/blob/main/CHANGELOG.md)
- [Commits](https://github.com/angular/angular/commits/19.2.10/packages/forms)

---
updated-dependencies:
- dependency-name: "@angular/forms"
  dependency-version: 19.2.10
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

* build(deps): bump @angular/platform-browser in /angular

Bumps [@angular/platform-browser](https://github.com/angular/angular/tree/HEAD/packages/platform-browser) from 19.2.8 to 19.2.10.
- [Release notes](https://github.com/angular/angular/releases)
- [Changelog](https://github.com/angular/angular/blob/main/CHANGELOG.md)
- [Commits](https://github.com/angular/angular/commits/19.2.10/packages/platform-browser)

---
updated-dependencies:
- dependency-name: "@angular/platform-browser"
  dependency-version: 19.2.10
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

* build(deps): bump @types/react-dom from 19.0.4 to 19.1.5 in /client

Bumps [@types/react-dom](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/react-dom) from 19.0.4 to 19.1.5.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/react-dom)

---
updated-dependencies:
- dependency-name: "@types/react-dom"
  dependency-version: 19.1.5
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>

* fix: package lock json for angular

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-05-14 12:33:34 -03:00
rmcamposandGitHub e86eaab479 feat: add angular (#447)
* feat: add angular base files

* feat: add angular login components

* feat: add login and register components logic

* feat: add pages components

* feat: enable dependabot for angular

* feat: add components
2025-05-13 09:48:46 -03:00
rmcamposGitHubdependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
306d839915 chore: versions bump (#440)
* build(deps-dev): bump typescript-eslint from 8.31.0 to 8.31.1 in /client

Bumps [typescript-eslint](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/typescript-eslint) from 8.31.0 to 8.31.1.
- [Release notes](https://github.com/typescript-eslint/typescript-eslint/releases)
- [Changelog](https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/typescript-eslint/CHANGELOG.md)
- [Commits](https://github.com/typescript-eslint/typescript-eslint/commits/v8.31.1/packages/typescript-eslint)

---
updated-dependencies:
- dependency-name: typescript-eslint
  dependency-version: 8.31.1
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

* build(deps): bump com.puppycrawl.tools:checkstyle in /server

Bumps [com.puppycrawl.tools:checkstyle](https://github.com/checkstyle/checkstyle) from 10.23.0 to 10.23.1.
- [Release notes](https://github.com/checkstyle/checkstyle/releases)
- [Commits](https://github.com/checkstyle/checkstyle/compare/checkstyle-10.23.0...checkstyle-10.23.1)

---
updated-dependencies:
- dependency-name: com.puppycrawl.tools:checkstyle
  dependency-version: 10.23.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

* build(deps): bump bootstrap from 5.3.3 to 5.3.5 in /client

Bumps [bootstrap](https://github.com/twbs/bootstrap) from 5.3.3 to 5.3.5.
- [Release notes](https://github.com/twbs/bootstrap/releases)
- [Commits](https://github.com/twbs/bootstrap/compare/v5.3.3...v5.3.5)

---
updated-dependencies:
- dependency-name: bootstrap
  dependency-version: 5.3.5
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

* build(deps-dev): bump sass from 1.86.3 to 1.87.0 in /client

Bumps [sass](https://github.com/sass/dart-sass) from 1.86.3 to 1.87.0.
- [Release notes](https://github.com/sass/dart-sass/releases)
- [Changelog](https://github.com/sass/dart-sass/blob/main/CHANGELOG.md)
- [Commits](https://github.com/sass/dart-sass/compare/1.86.3...1.87.0)

---
updated-dependencies:
- dependency-name: sass
  dependency-version: 1.87.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>

* build(deps-dev): bump @types/react from 19.0.11 to 19.1.2 in /client

Bumps [@types/react](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/react) from 19.0.11 to 19.1.2.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/react)

---
updated-dependencies:
- dependency-name: "@types/react"
  dependency-version: 19.1.2
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>

* build(deps): bump react-i18next from 15.4.1 to 15.5.1 in /client

Bumps [react-i18next](https://github.com/i18next/react-i18next) from 15.4.1 to 15.5.1.
- [Changelog](https://github.com/i18next/react-i18next/blob/master/CHANGELOG.md)
- [Commits](https://github.com/i18next/react-i18next/compare/v15.4.1...v15.5.1)

---
updated-dependencies:
- dependency-name: react-i18next
  dependency-version: 15.5.1
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>

* build(deps): bump vite from 6.3.2 to 6.3.4 in /client

Bumps [vite](https://github.com/vitejs/vite/tree/HEAD/packages/vite) from 6.3.2 to 6.3.4.
- [Release notes](https://github.com/vitejs/vite/releases)
- [Changelog](https://github.com/vitejs/vite/blob/main/packages/vite/CHANGELOG.md)
- [Commits](https://github.com/vitejs/vite/commits/v6.3.4/packages/vite)

---
updated-dependencies:
- dependency-name: vite
  dependency-version: 6.3.4
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-05-05 10:44:38 -03:00
rmcamposGitHubdependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>snyk-bot
d5d5ef2444 chore: versions bump (#432)
* build(deps): bump i18next from 24.2.3 to 25.0.1 in /client

Bumps [i18next](https://github.com/i18next/i18next) from 24.2.3 to 25.0.1.
- [Release notes](https://github.com/i18next/i18next/releases)
- [Changelog](https://github.com/i18next/i18next/blob/master/CHANGELOG.md)
- [Commits](https://github.com/i18next/i18next/compare/v24.2.3...v25.0.1)

---
updated-dependencies:
- dependency-name: i18next
  dependency-version: 25.0.1
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>

* build(deps): bump vite from 6.2.6 to 6.3.2 in /client

Bumps [vite](https://github.com/vitejs/vite/tree/HEAD/packages/vite) from 6.2.6 to 6.3.2.
- [Release notes](https://github.com/vitejs/vite/releases)
- [Changelog](https://github.com/vitejs/vite/blob/main/packages/vite/CHANGELOG.md)
- [Commits](https://github.com/vitejs/vite/commits/v6.3.2/packages/vite)

---
updated-dependencies:
- dependency-name: vite
  dependency-version: 6.3.2
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>

* build(deps): bump react-datepicker from 8.2.1 to 8.3.0 in /client

Bumps [react-datepicker](https://github.com/Hacker0x01/react-datepicker) from 8.2.1 to 8.3.0.
- [Release notes](https://github.com/Hacker0x01/react-datepicker/releases)
- [Commits](https://github.com/Hacker0x01/react-datepicker/compare/v8.2.1...v8.3.0)

---
updated-dependencies:
- dependency-name: react-datepicker
  dependency-version: 8.3.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>

* build(deps): bump @vitejs/plugin-react from 4.3.4 to 4.4.1 in /client

Bumps [@vitejs/plugin-react](https://github.com/vitejs/vite-plugin-react/tree/HEAD/packages/plugin-react) from 4.3.4 to 4.4.1.
- [Release notes](https://github.com/vitejs/vite-plugin-react/releases)
- [Changelog](https://github.com/vitejs/vite-plugin-react/blob/main/packages/plugin-react/CHANGELOG.md)
- [Commits](https://github.com/vitejs/vite-plugin-react/commits/plugin-react@4.4.1/packages/plugin-react)

---
updated-dependencies:
- dependency-name: "@vitejs/plugin-react"
  dependency-version: 4.4.1
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>

* build(deps-dev): bump @vitest/coverage-v8 from 3.1.1 to 3.1.2 in /client

Bumps [@vitest/coverage-v8](https://github.com/vitest-dev/vitest/tree/HEAD/packages/coverage-v8) from 3.1.1 to 3.1.2.
- [Release notes](https://github.com/vitest-dev/vitest/releases)
- [Commits](https://github.com/vitest-dev/vitest/commits/v3.1.2/packages/coverage-v8)

---
updated-dependencies:
- dependency-name: "@vitest/coverage-v8"
  dependency-version: 3.1.2
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

* fix: upgrade react from 19.0.0 to 19.1.0

Snyk has created this PR to upgrade react from 19.0.0 to 19.1.0.

See this package in npm:
react

See this project in Snyk:
https://app.snyk.io/org/ricardocampos-dcn/project/4d31651d-a849-4b8a-83a3-f8aaba677c53?utm_source=github&utm_medium=referral&page=upgrade-pr

* fix: upgrade react-dom from 19.0.0 to 19.1.0

Snyk has created this PR to upgrade react-dom from 19.0.0 to 19.1.0.

See this package in npm:
react-dom

See this project in Snyk:
https://app.snyk.io/org/ricardocampos-dcn/project/4d31651d-a849-4b8a-83a3-f8aaba677c53?utm_source=github&utm_medium=referral&page=upgrade-pr

* fix: upgrade @types/node from 22.13.14 to 22.13.17

Snyk has created this PR to upgrade @types/node from 22.13.14 to 22.13.17.

See this package in npm:
@types/node

See this project in Snyk:
https://app.snyk.io/org/ricardocampos-dcn/project/4d31651d-a849-4b8a-83a3-f8aaba677c53?utm_source=github&utm_medium=referral&page=upgrade-pr

* fix: upgrade react-router from 7.4.0 to 7.4.1

Snyk has created this PR to upgrade react-router from 7.4.0 to 7.4.1.

See this package in npm:
react-router

See this project in Snyk:
https://app.snyk.io/org/ricardocampos-dcn/project/4d31651d-a849-4b8a-83a3-f8aaba677c53?utm_source=github&utm_medium=referral&page=upgrade-pr

* build(deps): bump react-router and react-router-dom in /client

Bumps [react-router](https://github.com/remix-run/react-router/tree/HEAD/packages/react-router) to 7.5.2 and updates ancestor dependency [react-router-dom](https://github.com/remix-run/react-router/tree/HEAD/packages/react-router-dom). These dependencies need to be updated together.


Updates `react-router` from 7.4.0 to 7.5.2
- [Release notes](https://github.com/remix-run/react-router/releases)
- [Changelog](https://github.com/remix-run/react-router/blob/main/packages/react-router/CHANGELOG.md)
- [Commits](https://github.com/remix-run/react-router/commits/react-router@7.5.2/packages/react-router)

Updates `react-router-dom` from 7.1.1 to 7.5.2
- [Release notes](https://github.com/remix-run/react-router/releases)
- [Changelog](https://github.com/remix-run/react-router/blob/main/packages/react-router-dom/CHANGELOG.md)
- [Commits](https://github.com/remix-run/react-router/commits/react-router-dom@7.5.2/packages/react-router-dom)

---
updated-dependencies:
- dependency-name: react-router
  dependency-version: 7.5.2
  dependency-type: direct:production
- dependency-name: react-router-dom
  dependency-version: 7.5.2
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>

* chore: fix package-lock.json file

* feat: add sql test commands and restore. Issue #420

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: snyk-bot <snyk-bot@snyk.io>
2025-04-27 17:26:40 -03:00
rmcamposandGitHub f3de85852f feat: add email validation and password reset (#430)
* feat: add user confirmation email - wip

issue #414

* feat: improve register flow and add confirmation email done. Issue 414

* feat: add resend email feature. Issue #414

* feat: add password reset feature. Issue #415

* test: fix and add test cases

* fix: email_uuid column actually can be null

* test: add mailgun service class unit tests

* test: add tests for the authservice and mailgun service classes

* chore: fix sonar cloud issues

* test: add client test

* test: add more test cases

* test: fix test acse

* test: add more test cases

* chore: fix sonar code smells

* chore: remove role element from dic
2025-04-27 16:22:11 -03:00
rmcamposandGitHub ed5b16c515 Feat/321 improve search and results (#419)
* bugfix: when reloading the page logged it doesn't go to home

* feat: make the alert error dismissible

* feat: improve dashboard page. Issue #321

* feat: improve home search tasks. Issue #321

* feat: improve home search. issue #412

* test: fix test cases

* chore: improve url - copilot review

* test: add unit tests. Issue #321

* chore: fix checkstyle issue

* test: add more tests to backend. Issue #321

* chore: fix sonarcloud issues. Issue #321

* test: add frontend tests. Issue #321

* test: add more tests to frontend. Issue #321

* test: add more tests to frontend. Issue #321

* test: add more tests to frontend. Issue #321
2025-04-21 18:59:55 -03:00
rmcamposandGitHub 0de3f81775 fix: unable to delete user account. Issue #402 (#413)
* fix: unable to delete user account. Issue #402

* chore: fix checkstyle and import orders

* ci: fix sonar project key

* chore: improve test condition and test cases
2025-04-17 10:51:49 -03:00
rmcamposGitHubdependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>snyk-bot
67ae66d749 Chore/upgrade versions (#411)
* build(deps-dev): bump eslint from 9.22.0 to 9.24.0 in /client

Bumps [eslint](https://github.com/eslint/eslint) from 9.22.0 to 9.24.0.
- [Release notes](https://github.com/eslint/eslint/releases)
- [Changelog](https://github.com/eslint/eslint/blob/main/CHANGELOG.md)
- [Commits](https://github.com/eslint/eslint/compare/v9.22.0...v9.24.0)

---
updated-dependencies:
- dependency-name: eslint
  dependency-version: 9.24.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>

* build(deps-dev): bump sass from 1.85.1 to 1.86.3 in /client

Bumps [sass](https://github.com/sass/dart-sass) from 1.85.1 to 1.86.3.
- [Release notes](https://github.com/sass/dart-sass/releases)
- [Changelog](https://github.com/sass/dart-sass/blob/main/CHANGELOG.md)
- [Commits](https://github.com/sass/dart-sass/compare/1.85.1...1.86.3)

---
updated-dependencies:
- dependency-name: sass
  dependency-version: 1.86.3
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>

* build(deps-dev): bump @stylistic/eslint-plugin in /client

Bumps [@stylistic/eslint-plugin](https://github.com/eslint-stylistic/eslint-stylistic/tree/HEAD/packages/eslint-plugin) from 3.0.1 to 4.2.0.
- [Release notes](https://github.com/eslint-stylistic/eslint-stylistic/releases)
- [Changelog](https://github.com/eslint-stylistic/eslint-stylistic/blob/main/CHANGELOG.md)
- [Commits](https://github.com/eslint-stylistic/eslint-stylistic/commits/v4.2.0/packages/eslint-plugin)

---
updated-dependencies:
- dependency-name: "@stylistic/eslint-plugin"
  dependency-version: 4.2.0
  dependency-type: direct:development
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>

* build(deps-dev): bump jsdom from 26.0.0 to 26.1.0 in /client

Bumps [jsdom](https://github.com/jsdom/jsdom) from 26.0.0 to 26.1.0.
- [Release notes](https://github.com/jsdom/jsdom/releases)
- [Changelog](https://github.com/jsdom/jsdom/blob/main/Changelog.md)
- [Commits](https://github.com/jsdom/jsdom/compare/26.0.0...26.1.0)

---
updated-dependencies:
- dependency-name: jsdom
  dependency-version: 26.1.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>

* build(deps-dev): bump @testing-library/react in /client

Bumps [@testing-library/react](https://github.com/testing-library/react-testing-library) from 16.2.0 to 16.3.0.
- [Release notes](https://github.com/testing-library/react-testing-library/releases)
- [Changelog](https://github.com/testing-library/react-testing-library/blob/main/CHANGELOG.md)
- [Commits](https://github.com/testing-library/react-testing-library/compare/v16.2.0...v16.3.0)

---
updated-dependencies:
- dependency-name: "@testing-library/react"
  dependency-version: 16.3.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>

* fix: upgrade react-router from 7.3.0 to 7.4.0

Snyk has created this PR to upgrade react-router from 7.3.0 to 7.4.0.

See this package in npm:
react-router

See this project in Snyk:
https://app.snyk.io/org/ricardocampos-dcn/project/4d31651d-a849-4b8a-83a3-f8aaba677c53?utm_source=github&utm_medium=referral&page=upgrade-pr

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: snyk-bot <snyk-bot@snyk.io>
2025-04-16 13:46:47 -03:00
rmcamposandGitHub 753785aa41 feat: add dark mode (#409)
* feat: add dark mode. Issue #348

* feat: add darkmode and fix btn for the landing page and login. Issue #348

* test: update test cases. Issue #348

* chore: fix sonarcloud code smell. Issue #348
2025-04-16 13:17:36 -03:00
rmcamposGitHubdependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>snyk-bot
0f74074552 chore: new versions (#401)
* build(deps): bump org.hibernate.orm.tooling:hibernate-enhance-maven-plugin

Bumps [org.hibernate.orm.tooling:hibernate-enhance-maven-plugin](https://github.com/hibernate/hibernate-orm) from 6.6.12.Final to 6.6.13.Final.
- [Release notes](https://github.com/hibernate/hibernate-orm/releases)
- [Changelog](https://github.com/hibernate/hibernate-orm/blob/6.6.13/changelog.txt)
- [Commits](https://github.com/hibernate/hibernate-orm/compare/6.6.12...6.6.13)

---
updated-dependencies:
- dependency-name: org.hibernate.orm.tooling:hibernate-enhance-maven-plugin
  dependency-version: 6.6.13.Final
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

* build(deps): bump org.jacoco:jacoco-maven-plugin in /server

Bumps [org.jacoco:jacoco-maven-plugin](https://github.com/jacoco/jacoco) from 0.8.12 to 0.8.13.
- [Release notes](https://github.com/jacoco/jacoco/releases)
- [Commits](https://github.com/jacoco/jacoco/compare/v0.8.12...v0.8.13)

---
updated-dependencies:
- dependency-name: org.jacoco:jacoco-maven-plugin
  dependency-version: 0.8.13
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

* build(deps): bump typescript from 5.8.2 to 5.8.3 in /client

Bumps [typescript](https://github.com/microsoft/TypeScript) from 5.8.2 to 5.8.3.
- [Release notes](https://github.com/microsoft/TypeScript/releases)
- [Changelog](https://github.com/microsoft/TypeScript/blob/main/azure-pipelines.release-publish.yml)
- [Commits](https://github.com/microsoft/TypeScript/compare/v5.8.2...v5.8.3)

---
updated-dependencies:
- dependency-name: typescript
  dependency-version: 5.8.3
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

* build(deps-dev): bump @eslint/compat from 1.2.7 to 1.2.8 in /client

Bumps [@eslint/compat](https://github.com/eslint/rewrite) from 1.2.7 to 1.2.8.
- [Release notes](https://github.com/eslint/rewrite/releases)
- [Changelog](https://github.com/eslint/rewrite/blob/main/release-please-config.json)
- [Commits](https://github.com/eslint/rewrite/compare/compat-v1.2.7...compat-v1.2.8)

---
updated-dependencies:
- dependency-name: "@eslint/compat"
  dependency-version: 1.2.8
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

* build(deps): bump dompurify from 3.2.4 to 3.2.5 in /client

Bumps [dompurify](https://github.com/cure53/DOMPurify) from 3.2.4 to 3.2.5.
- [Release notes](https://github.com/cure53/DOMPurify/releases)
- [Commits](https://github.com/cure53/DOMPurify/compare/3.2.4...3.2.5)

---
updated-dependencies:
- dependency-name: dompurify
  dependency-version: 3.2.5
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

* build(deps): bump com.puppycrawl.tools:checkstyle in /server

Bumps [com.puppycrawl.tools:checkstyle](https://github.com/checkstyle/checkstyle) from 10.22.0 to 10.23.0.
- [Release notes](https://github.com/checkstyle/checkstyle/releases)
- [Commits](https://github.com/checkstyle/checkstyle/compare/checkstyle-10.22.0...checkstyle-10.23.0)

---
updated-dependencies:
- dependency-name: com.puppycrawl.tools:checkstyle
  dependency-version: 10.23.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>

* build(deps-dev): bump eslint-plugin-n from 17.16.2 to 17.17.0 in /client

Bumps [eslint-plugin-n](https://github.com/eslint-community/eslint-plugin-n) from 17.16.2 to 17.17.0.
- [Release notes](https://github.com/eslint-community/eslint-plugin-n/releases)
- [Changelog](https://github.com/eslint-community/eslint-plugin-n/blob/master/CHANGELOG.md)
- [Commits](https://github.com/eslint-community/eslint-plugin-n/compare/v17.16.2...v17.17.0)

---
updated-dependencies:
- dependency-name: eslint-plugin-n
  dependency-version: 17.17.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>

* fix: server/Dockerfile to reduce vulnerabilities

The following vulnerabilities are fixed with an upgrade:
- https://snyk.io/vuln/SNYK-DEBIAN12-ZLIB-6008963
- https://snyk.io/vuln/SNYK-DEBIAN12-GNUPG2-9486681
- https://snyk.io/vuln/SNYK-DEBIAN12-GLIBC-1547135
- https://snyk.io/vuln/SNYK-DEBIAN12-PAM-8303301
- https://snyk.io/vuln/SNYK-DEBIAN12-TAR-1560620

* fix: client/package.json & client/package-lock.json to reduce vulnerabilities

The following vulnerabilities are fixed with an upgrade:
- https://snyk.io/vuln/SNYK-JS-VITE-9653016

* build(deps): bump vite from 6.2.4 to 6.2.6 in /client

Bumps [vite](https://github.com/vitejs/vite/tree/HEAD/packages/vite) from 6.2.4 to 6.2.6.
- [Release notes](https://github.com/vitejs/vite/releases)
- [Changelog](https://github.com/vitejs/vite/blob/v6.2.6/packages/vite/CHANGELOG.md)
- [Commits](https://github.com/vitejs/vite/commits/v6.2.6/packages/vite)

---
updated-dependencies:
- dependency-name: vite
  dependency-version: 6.2.6
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: snyk-bot <snyk-bot@snyk.io>
2025-04-11 15:21:50 -03:00
rmcamposandGitHub 8779d928ee hotfix: server prod deploy (#389) 2025-04-01 18:35:33 -03:00
rmcamposGitHubdependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
30d4312cdd chore: new versions (#388)
* build(deps): bump SonarSource/sonarqube-scan-action from 5.0.0 to 5.1.0

Bumps [SonarSource/sonarqube-scan-action](https://github.com/sonarsource/sonarqube-scan-action) from 5.0.0 to 5.1.0.
- [Release notes](https://github.com/sonarsource/sonarqube-scan-action/releases)
- [Commits](https://github.com/sonarsource/sonarqube-scan-action/compare/v5.0.0...v5.1.0)

---
updated-dependencies:
- dependency-name: SonarSource/sonarqube-scan-action
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>

* build(deps): bump actions/cache from 4.2.2 to 4.2.3

Bumps [actions/cache](https://github.com/actions/cache) from 4.2.2 to 4.2.3.
- [Release notes](https://github.com/actions/cache/releases)
- [Changelog](https://github.com/actions/cache/blob/main/RELEASES.md)
- [Commits](https://github.com/actions/cache/compare/v4.2.2...v4.2.3)

---
updated-dependencies:
- dependency-name: actions/cache
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

* build(deps): bump org.springdoc:springdoc-openapi-starter-webmvc-ui

Bumps [org.springdoc:springdoc-openapi-starter-webmvc-ui](https://github.com/springdoc/springdoc-openapi) from 2.8.5 to 2.8.6.
- [Release notes](https://github.com/springdoc/springdoc-openapi/releases)
- [Changelog](https://github.com/springdoc/springdoc-openapi/blob/main/CHANGELOG.md)
- [Commits](https://github.com/springdoc/springdoc-openapi/compare/v2.8.5...v2.8.6)

---
updated-dependencies:
- dependency-name: org.springdoc:springdoc-openapi-starter-webmvc-ui
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

* build(deps-dev): bump @eslint/eslintrc from 3.3.0 to 3.3.1 in /client

Bumps [@eslint/eslintrc](https://github.com/eslint/eslintrc) from 3.3.0 to 3.3.1.
- [Release notes](https://github.com/eslint/eslintrc/releases)
- [Changelog](https://github.com/eslint/eslintrc/blob/main/CHANGELOG.md)
- [Commits](https://github.com/eslint/eslintrc/compare/v3.3.0...v3.3.1)

---
updated-dependencies:
- dependency-name: "@eslint/eslintrc"
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

* build(deps): bump i18next from 24.2.2 to 24.2.3 in /client

Bumps [i18next](https://github.com/i18next/i18next) from 24.2.2 to 24.2.3.
- [Release notes](https://github.com/i18next/i18next/releases)
- [Changelog](https://github.com/i18next/i18next/blob/master/CHANGELOG.md)
- [Commits](https://github.com/i18next/i18next/compare/v24.2.2...v24.2.3)

---
updated-dependencies:
- dependency-name: i18next
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

* build(deps): bump vite from 6.2.1 to 6.2.3 in /client

Bumps [vite](https://github.com/vitejs/vite/tree/HEAD/packages/vite) from 6.2.1 to 6.2.3.
- [Release notes](https://github.com/vitejs/vite/releases)
- [Changelog](https://github.com/vitejs/vite/blob/v6.2.3/packages/vite/CHANGELOG.md)
- [Commits](https://github.com/vitejs/vite/commits/v6.2.3/packages/vite)

---
updated-dependencies:
- dependency-name: vite
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

* build(deps): bump vite from 6.2.1 to 6.2.4 in /client

Bumps [vite](https://github.com/vitejs/vite/tree/HEAD/packages/vite) from 6.2.1 to 6.2.4.
- [Release notes](https://github.com/vitejs/vite/releases)
- [Changelog](https://github.com/vitejs/vite/blob/v6.2.4/packages/vite/CHANGELOG.md)
- [Commits](https://github.com/vitejs/vite/commits/v6.2.4/packages/vite)

---
updated-dependencies:
- dependency-name: vite
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>

* build(deps): bump com.puppycrawl.tools:checkstyle in /server

Bumps [com.puppycrawl.tools:checkstyle](https://github.com/checkstyle/checkstyle) from 10.21.4 to 10.22.0.
- [Release notes](https://github.com/checkstyle/checkstyle/releases)
- [Commits](https://github.com/checkstyle/checkstyle/compare/checkstyle-10.21.4...checkstyle-10.22.0)

---
updated-dependencies:
- dependency-name: com.puppycrawl.tools:checkstyle
  dependency-version: 10.22.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>

* build(deps): bump org.apache.maven.plugins:maven-surefire-plugin

Bumps [org.apache.maven.plugins:maven-surefire-plugin](https://github.com/apache/maven-surefire) from 3.5.2 to 3.5.3.
- [Release notes](https://github.com/apache/maven-surefire/releases)
- [Commits](https://github.com/apache/maven-surefire/compare/surefire-3.5.2...surefire-3.5.3)

---
updated-dependencies:
- dependency-name: org.apache.maven.plugins:maven-surefire-plugin
  dependency-version: 3.5.3
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

* build(deps): bump org.hibernate.orm.tooling:hibernate-enhance-maven-plugin

Bumps [org.hibernate.orm.tooling:hibernate-enhance-maven-plugin](https://github.com/hibernate/hibernate-orm) from 6.6.11.Final to 6.6.12.Final.
- [Release notes](https://github.com/hibernate/hibernate-orm/releases)
- [Changelog](https://github.com/hibernate/hibernate-orm/blob/6.6.12/changelog.txt)
- [Commits](https://github.com/hibernate/hibernate-orm/compare/6.6.11...6.6.12)

---
updated-dependencies:
- dependency-name: org.hibernate.orm.tooling:hibernate-enhance-maven-plugin
  dependency-version: 6.6.12.Final
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

* build(deps): bump org.apache.maven.plugins:maven-failsafe-plugin

Bumps [org.apache.maven.plugins:maven-failsafe-plugin](https://github.com/apache/maven-surefire) from 3.5.2 to 3.5.3.
- [Release notes](https://github.com/apache/maven-surefire/releases)
- [Commits](https://github.com/apache/maven-surefire/compare/surefire-3.5.2...surefire-3.5.3)

---
updated-dependencies:
- dependency-name: org.apache.maven.plugins:maven-failsafe-plugin
  dependency-version: 3.5.3
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

* build(deps): bump @types/node from 22.13.9 to 22.13.14 in /client

Bumps [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node) from 22.13.9 to 22.13.14.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/node)

---
updated-dependencies:
- dependency-name: "@types/node"
  dependency-version: 22.13.14
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

* build(deps-dev): bump @vitest/coverage-v8 from 3.0.8 to 3.1.1 in /client

Bumps [@vitest/coverage-v8](https://github.com/vitest-dev/vitest/tree/HEAD/packages/coverage-v8) from 3.0.8 to 3.1.1.
- [Release notes](https://github.com/vitest-dev/vitest/releases)
- [Commits](https://github.com/vitest-dev/vitest/commits/v3.1.1/packages/coverage-v8)

---
updated-dependencies:
- dependency-name: "@vitest/coverage-v8"
  dependency-version: 3.1.1
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-04-01 16:14:05 -03:00
rmcamposandGitHub e59738dc08 feat: add schemaspy (#380) 2025-04-01 14:10:26 -03:00
rmcamposandGitHub 9b625a66e2 fix: change how server handle secrets (#371)
* fix: change how server handle secrets. Issue #370

* test: add jwt test cases. Issue #370

* chore: fix sonar issues. Issue 370

* fix: cloud native support for external key
2025-03-24 19:57:29 -03:00
rmcamposandGitHub 0af4b51a39 hotfix: main server workflow (#369)
* ci: fix main server variable

* chore: fix X contact handler
2025-03-19 18:59:12 -03:00
rmcamposGitHubdependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2cf1abba89 hotfix: prod ci and versions (#368)
* build(deps-dev): bump typescript-eslint from 8.26.0 to 8.26.1 in /client

Bumps [typescript-eslint](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/typescript-eslint) from 8.26.0 to 8.26.1.
- [Release notes](https://github.com/typescript-eslint/typescript-eslint/releases)
- [Changelog](https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/typescript-eslint/CHANGELOG.md)
- [Commits](https://github.com/typescript-eslint/typescript-eslint/commits/v8.26.1/packages/typescript-eslint)

---
updated-dependencies:
- dependency-name: typescript-eslint
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

* build(deps-dev): bump prettier from 3.5.2 to 3.5.3 in /client

Bumps [prettier](https://github.com/prettier/prettier) from 3.5.2 to 3.5.3.
- [Release notes](https://github.com/prettier/prettier/releases)
- [Changelog](https://github.com/prettier/prettier/blob/main/CHANGELOG.md)
- [Commits](https://github.com/prettier/prettier/compare/3.5.2...3.5.3)

---
updated-dependencies:
- dependency-name: prettier
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

* build(deps): bump react-router from 7.2.0 to 7.3.0 in /client

Bumps [react-router](https://github.com/remix-run/react-router/tree/HEAD/packages/react-router) from 7.2.0 to 7.3.0.
- [Release notes](https://github.com/remix-run/react-router/releases)
- [Changelog](https://github.com/remix-run/react-router/blob/main/packages/react-router/CHANGELOG.md)
- [Commits](https://github.com/remix-run/react-router/commits/react-router@7.3.0/packages/react-router)

---
updated-dependencies:
- dependency-name: react-router
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>

* build(deps-dev): bump globals from 15.14.0 to 16.0.0 in /client

Bumps [globals](https://github.com/sindresorhus/globals) from 15.14.0 to 16.0.0.
- [Release notes](https://github.com/sindresorhus/globals/releases)
- [Commits](https://github.com/sindresorhus/globals/compare/v15.14.0...v16.0.0)

---
updated-dependencies:
- dependency-name: globals
  dependency-type: direct:development
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>

* build(deps-dev): bump @types/react from 19.0.3 to 19.0.11 in /client

Bumps [@types/react](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/react) from 19.0.3 to 19.0.11.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/react)

---
updated-dependencies:
- dependency-name: "@types/react"
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

* build(deps): bump org.hibernate.orm.tooling:hibernate-enhance-maven-plugin

Bumps [org.hibernate.orm.tooling:hibernate-enhance-maven-plugin](https://github.com/hibernate/hibernate-orm) from 6.6.10.Final to 6.6.11.Final.
- [Release notes](https://github.com/hibernate/hibernate-orm/releases)
- [Changelog](https://github.com/hibernate/hibernate-orm/blob/6.6.11/changelog.txt)
- [Commits](https://github.com/hibernate/hibernate-orm/compare/6.6.10...6.6.11)

---
updated-dependencies:
- dependency-name: org.hibernate.orm.tooling:hibernate-enhance-maven-plugin
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

* hotfix: remove hard coded code

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-03-19 18:42:24 -03:00
rmcamposandGitHub c695f6cb0b feat: improve UI (#367)
* feat: improve UI hugely. Issue #257

* feat: improve ui. Issue #357

* test: fix test cases

* chore: fix sonar issues
2025-03-19 18:17:29 -03:00
rmcamposandGitHub 3b75058fbf hotfix: fix prod deploy (#366) 2025-03-18 11:47:27 -03:00
rmcamposandGitHub 5f161749e2 Feat/358 make the sidebar responsive (#359)
* ci: attempt to detect prod deployment issue

* feat: make the sidebar responsible. Issue #358

* ci: fix server workflow

* feat: add responsible design

* ci: improve deployments workflow

* ci: fix curl version check

* fix: class name missing

* chore: fix sonar issues
2025-03-18 10:40:18 -03:00
rmcamposandGitHub 5ad62e8b73 ci: fix cd workflow (#356) 2025-03-15 15:52:25 -03:00
rmcamposandGitHub 278ae5c344 feat: automate prod and add filter options, and date picker (#355)
* feat: automate prod deployments

issue #338

* fix: string parse

* feat: add date picker and filter options

issue #127

* feat: add tooltip and date picker

* ci: split stage deploy into separate tasks to allow separate releases

* test: add more test cases

* ci: split workflows into client and server

* ci: fix pr server workflow
2025-03-14 19:27:21 -03:00
rmcamposandGitHub b49c6fc470 Feat/automate prod (#354)
* feat: automate prod deployments

issue #338

* fix: string parse
2025-03-13 15:03:56 -03:00
rmcamposandGitHub df064742bd feat: automate prod deployments (#353)
issue #338
2025-03-13 14:39:09 -03:00
rmcamposandGitHub a7f25cbdfd chore: improve CI and fix navigation (#352)
* chore: simple change to trigger new ci

* feat: make PR CD work

issue #338

* ci: fix target deploy url

* ci: improve deployments into just one matrix job

* ci: put secret on env

* fix: fix nagivation when creating notes and tasks from the home page

* test: add sidebar test cases

* chore: test files cleanup
2025-03-13 13:56:57 -03:00
rmcampos 76cbf4ae78 Merge remote-tracking branch 'origin/dependabot/maven/server/org.hibernate.orm.tooling-hibernate-enhance-maven-plugin-6.6.10.Final' 2025-03-12 20:42:11 -03:00
rmcampos 0e63b592a9 Merge remote-tracking branch 'origin/dependabot/maven/server/com.puppycrawl.tools-checkstyle-10.21.4' 2025-03-12 20:41:58 -03:00
rmcampos e365aa204f Merge remote-tracking branch 'origin/dependabot/npm_and_yarn/client/babel/runtime-7.26.10' 2025-03-12 20:41:43 -03:00
rmcampos 14317d2ac8 Merge remote-tracking branch 'origin/dependabot/npm_and_yarn/client/babel/helpers-7.26.10' 2025-03-12 20:41:26 -03:00
rmcampos db56ae5b6a fix: favicon missing 2025-03-12 20:40:52 -03:00
rmcampos 2c7330d4a6 feat: automate deployments to stage 2025-03-12 20:33:53 -03:00
dependabot[bot]andGitHub cddf5ceb9a build(deps): bump @babel/runtime from 7.26.0 to 7.26.10 in /client
Bumps [@babel/runtime](https://github.com/babel/babel/tree/HEAD/packages/babel-runtime) from 7.26.0 to 7.26.10.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/commits/v7.26.10/packages/babel-runtime)

---
updated-dependencies:
- dependency-name: "@babel/runtime"
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-03-12 17:17:15 +00:00
dependabot[bot]andGitHub 3b881e46cc build(deps): bump @babel/helpers from 7.26.0 to 7.26.10 in /client
Bumps [@babel/helpers](https://github.com/babel/babel/tree/HEAD/packages/babel-helpers) from 7.26.0 to 7.26.10.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/commits/v7.26.10/packages/babel-helpers)

---
updated-dependencies:
- dependency-name: "@babel/helpers"
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-03-12 17:17:14 +00:00
rmcamposGitHubdependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
12cefe72e9 Hotfix/images (#349)
* build(deps-dev): bump @eslint/js from 9.21.0 to 9.22.0 in /client

Bumps [@eslint/js](https://github.com/eslint/eslint/tree/HEAD/packages/js) from 9.21.0 to 9.22.0.
- [Release notes](https://github.com/eslint/eslint/releases)
- [Changelog](https://github.com/eslint/eslint/blob/main/CHANGELOG.md)
- [Commits](https://github.com/eslint/eslint/commits/v9.22.0/packages/js)

---
updated-dependencies:
- dependency-name: "@eslint/js"
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>

* build(deps-dev): bump eslint from 9.17.0 to 9.22.0 in /client

Bumps [eslint](https://github.com/eslint/eslint) from 9.17.0 to 9.22.0.
- [Release notes](https://github.com/eslint/eslint/releases)
- [Changelog](https://github.com/eslint/eslint/blob/main/CHANGELOG.md)
- [Commits](https://github.com/eslint/eslint/compare/v9.17.0...v9.22.0)

---
updated-dependencies:
- dependency-name: eslint
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>

* build(deps): bump vite from 6.2.0 to 6.2.1 in /client

Bumps [vite](https://github.com/vitejs/vite/tree/HEAD/packages/vite) from 6.2.0 to 6.2.1.
- [Release notes](https://github.com/vitejs/vite/releases)
- [Changelog](https://github.com/vitejs/vite/blob/main/packages/vite/CHANGELOG.md)
- [Commits](https://github.com/vitejs/vite/commits/create-vite@6.2.1/packages/vite)

---
updated-dependencies:
- dependency-name: vite
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

* build(deps-dev): bump eslint-plugin-n from 17.15.1 to 17.16.2 in /client

Bumps [eslint-plugin-n](https://github.com/eslint-community/eslint-plugin-n) from 17.15.1 to 17.16.2.
- [Release notes](https://github.com/eslint-community/eslint-plugin-n/releases)
- [Changelog](https://github.com/eslint-community/eslint-plugin-n/blob/master/CHANGELOG.md)
- [Commits](https://github.com/eslint-community/eslint-plugin-n/compare/v17.15.1...v17.16.2)

---
updated-dependencies:
- dependency-name: eslint-plugin-n
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>

* build(deps-dev): bump @vitest/coverage-v8 from 3.0.7 to 3.0.8 in /client

Bumps [@vitest/coverage-v8](https://github.com/vitest-dev/vitest/tree/HEAD/packages/coverage-v8) from 3.0.7 to 3.0.8.
- [Release notes](https://github.com/vitest-dev/vitest/releases)
- [Commits](https://github.com/vitest-dev/vitest/commits/v3.0.8/packages/coverage-v8)

---
updated-dependencies:
- dependency-name: "@vitest/coverage-v8"
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

* hotfix: allow images

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-03-12 14:16:04 -03:00
rmcamposandGitHub 13320a4633 feat: add gravatar support (#347)
* feat: add gravatar support

issue #323

chore: fix sidbar issues

* test: fix test case

* chore: fix sonar issues

* chore: fix sonar cloud issues

* test: fix test cases

* test: add more test cases

* ci: fix caddyfile and docker compose
2025-03-11 21:01:00 -03:00
dependabot[bot]andGitHub 47261eb94f build(deps): bump org.hibernate.orm.tooling:hibernate-enhance-maven-plugin
Bumps [org.hibernate.orm.tooling:hibernate-enhance-maven-plugin](https://github.com/hibernate/hibernate-orm) from 6.6.9.Final to 6.6.10.Final.
- [Release notes](https://github.com/hibernate/hibernate-orm/releases)
- [Changelog](https://github.com/hibernate/hibernate-orm/blob/6.6.10/changelog.txt)
- [Commits](https://github.com/hibernate/hibernate-orm/compare/6.6.9...6.6.10)

---
updated-dependencies:
- dependency-name: org.hibernate.orm.tooling:hibernate-enhance-maven-plugin
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-03-10 23:56:56 +00:00
dependabot[bot]andGitHub 7007603780 build(deps): bump com.puppycrawl.tools:checkstyle in /server
Bumps [com.puppycrawl.tools:checkstyle](https://github.com/checkstyle/checkstyle) from 10.21.3 to 10.21.4.
- [Release notes](https://github.com/checkstyle/checkstyle/releases)
- [Commits](https://github.com/checkstyle/checkstyle/compare/checkstyle-10.21.3...checkstyle-10.21.4)

---
updated-dependencies:
- dependency-name: com.puppycrawl.tools:checkstyle
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-03-10 23:56:49 +00:00
rmcamposGitHubdependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
68f3c82260 feat: improve notes UI (#339)
* build(deps-dev): bump @eslint/eslintrc from 3.2.0 to 3.3.0 in /client

Bumps [@eslint/eslintrc](https://github.com/eslint/eslintrc) from 3.2.0 to 3.3.0.
- [Release notes](https://github.com/eslint/eslintrc/releases)
- [Changelog](https://github.com/eslint/eslintrc/blob/main/CHANGELOG.md)
- [Commits](https://github.com/eslint/eslintrc/compare/v3.2.0...v3.3.0)

---
updated-dependencies:
- dependency-name: "@eslint/eslintrc"
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>

* build(deps-dev): bump sass from 1.83.4 to 1.85.1 in /client

Bumps [sass](https://github.com/sass/dart-sass) from 1.83.4 to 1.85.1.
- [Release notes](https://github.com/sass/dart-sass/releases)
- [Changelog](https://github.com/sass/dart-sass/blob/main/CHANGELOG.md)
- [Commits](https://github.com/sass/dart-sass/compare/1.83.4...1.85.1)

---
updated-dependencies:
- dependency-name: sass
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>

* build(deps): bump react-i18next from 15.4.0 to 15.4.1 in /client

Bumps [react-i18next](https://github.com/i18next/react-i18next) from 15.4.0 to 15.4.1.
- [Changelog](https://github.com/i18next/react-i18next/blob/master/CHANGELOG.md)
- [Commits](https://github.com/i18next/react-i18next/compare/v15.4.0...v15.4.1)

---
updated-dependencies:
- dependency-name: react-i18next
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

* build(deps): bump @types/node from 22.13.8 to 22.13.9 in /client

Bumps [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node) from 22.13.8 to 22.13.9.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/node)

---
updated-dependencies:
- dependency-name: "@types/node"
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

* build(deps): bump typescript from 5.7.3 to 5.8.2 in /client

Bumps [typescript](https://github.com/microsoft/TypeScript) from 5.7.3 to 5.8.2.
- [Release notes](https://github.com/microsoft/TypeScript/releases)
- [Changelog](https://github.com/microsoft/TypeScript/blob/main/azure-pipelines.release.yml)
- [Commits](https://github.com/microsoft/TypeScript/compare/v5.7.3...v5.8.2)

---
updated-dependencies:
- dependency-name: typescript
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>

* build(deps): bump actions/cache from 4.2.1 to 4.2.2

Bumps [actions/cache](https://github.com/actions/cache) from 4.2.1 to 4.2.2.
- [Release notes](https://github.com/actions/cache/releases)
- [Changelog](https://github.com/actions/cache/blob/main/RELEASES.md)
- [Commits](https://github.com/actions/cache/compare/v4.2.1...v4.2.2)

---
updated-dependencies:
- dependency-name: actions/cache
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

* feat: improve notes UI

issue #322

issue #337

issue #301

* feat: enable notes tracking for the users

* chore: reduce duplications creating components

* chore: fix wordy and add JS Docs

* test: add AlertError test cases

* feat: add contentHeader tests

* test: fix taskAdd test component

* test: add modalMarkdown test cases

* chore: refactor to reduce duplication

* test: add noteTitle component test case

* test: add more tests to About view

* test: add more tests to Account view

* test: add home view test cases

* test: add noteAdd view tests

* test: add note view test cases

* test: add note service unit tests

* chore: fix Sonar issues

* test: add more tests to note service

* chore: small fixes to backend

* test: fix noteAdd view test case

* chore: fix sonar issue

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-03-09 18:39:31 -03:00
rmcamposandGitHub 4febd08a9e feat: improve svg components and about view styling (#336)
issue #334

issue #335
2025-03-07 09:20:15 -03:00
rmcamposandGitHub 929a417cf7 feat: load dashboard data (#333)
* fix: task progress data from back-end

* chore: make backend candidate image default

* feat: load data for the dashboard home from the back-end

issue #320

* test: add tets for completedTasks and TaskProgress components

* test: fix test case in the backend

* feat: fix unauthorized requests

test: add home controller test cases

* test: add home service test cases
2025-03-06 18:51:26 -03:00
rmcamposandGitHub 381a25d92f feat: enable user to update his name and data (#332)
* feat: enable user to update his name and data

issue #307

* docs: add JSDocs

* test: fix sidebar tests

* test: fix test cases

* test: add account test cases

* test: add user controller and auth service tests
2025-03-05 12:05:14 -03:00
rmcamposandGitHub 6e6994de46 feat: add pr number to images and tag them as prod (#325)
* feat: add pr number to images and tag them as prod

* feat: add labels to docker images
2025-03-03 17:14:52 -03:00
rmcamposGitHubdependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
7dc16a4eec chore: Server API versions bump (#324)
* build(deps): bump org.hibernate.orm.tooling:hibernate-enhance-maven-plugin

Bumps [org.hibernate.orm.tooling:hibernate-enhance-maven-plugin](https://github.com/hibernate/hibernate-orm) from 6.6.8.Final to 6.6.9.Final.
- [Release notes](https://github.com/hibernate/hibernate-orm/releases)
- [Changelog](https://github.com/hibernate/hibernate-orm/blob/6.6.9/changelog.txt)
- [Commits](https://github.com/hibernate/hibernate-orm/compare/6.6.8...6.6.9)

---
updated-dependencies:
- dependency-name: org.hibernate.orm.tooling:hibernate-enhance-maven-plugin
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

* build(deps): bump com.puppycrawl.tools:checkstyle in /server

Bumps [com.puppycrawl.tools:checkstyle](https://github.com/checkstyle/checkstyle) from 10.21.2 to 10.21.3.
- [Release notes](https://github.com/checkstyle/checkstyle/releases)
- [Commits](https://github.com/checkstyle/checkstyle/compare/checkstyle-10.21.2...checkstyle-10.21.3)

---
updated-dependencies:
- dependency-name: com.puppycrawl.tools:checkstyle
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-03-03 13:37:07 -03:00
rmcamposandGitHub 86b66b803d fix: loggin issues (#319)
* fix: loggin issues

closes #302

feat: improve build number in docker image

* test: fix integration test for the taskController

* test: add unit test to taskService

* test: add more unit tests to taskService

* test: add delete unit tests for taskService

* test: add patch unit tests for taskService
2025-03-02 18:45:36 -03:00
rmcamposandGitHub 3d94692086 fix: improve application properties and enable more logs (#316)
* fix: improve application properties and enable more logs

* chore: fix application properties

* test: fix test cases

* ci: fix sonarloud project key for the backend

* chore: add variable to manage root logging level

* chore: debug log mode

* feat: fix healthcheck for tasknote api

* feat: fix dockerfile for client - finally

Issue #308

* chore: bump some versions

closes #311

closes #312

closes #313

closes #314

closes #315

closes #317

closes #318

* test: add backend test case

chore: fix note type error on frontend

* test: add test case
2025-03-02 14:35:24 -03:00
rmcamposGitHubdependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
8166c52c73 New versions (#306)
* build(deps): bump org.springdoc:springdoc-openapi-starter-webmvc-ui

Bumps [org.springdoc:springdoc-openapi-starter-webmvc-ui](https://github.com/springdoc/springdoc-openapi) from 2.8.4 to 2.8.5.
- [Release notes](https://github.com/springdoc/springdoc-openapi/releases)
- [Changelog](https://github.com/springdoc/springdoc-openapi/blob/main/CHANGELOG.md)
- [Commits](https://github.com/springdoc/springdoc-openapi/compare/v2.8.4...v2.8.5)

---
updated-dependencies:
- dependency-name: org.springdoc:springdoc-openapi-starter-webmvc-ui
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

* build(deps): bump org.hibernate.orm.tooling:hibernate-enhance-maven-plugin

Bumps [org.hibernate.orm.tooling:hibernate-enhance-maven-plugin](https://github.com/hibernate/hibernate-orm) from 6.6.6.Final to 6.6.8.Final.
- [Release notes](https://github.com/hibernate/hibernate-orm/releases)
- [Changelog](https://github.com/hibernate/hibernate-orm/blob/6.6.8/changelog.txt)
- [Commits](https://github.com/hibernate/hibernate-orm/compare/6.6.6...6.6.8)

---
updated-dependencies:
- dependency-name: org.hibernate.orm.tooling:hibernate-enhance-maven-plugin
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

* build(deps-dev): bump @eslint/js from 9.20.0 to 9.21.0 in /client

Bumps [@eslint/js](https://github.com/eslint/eslint/tree/HEAD/packages/js) from 9.20.0 to 9.21.0.
- [Release notes](https://github.com/eslint/eslint/releases)
- [Changelog](https://github.com/eslint/eslint/blob/main/CHANGELOG.md)
- [Commits](https://github.com/eslint/eslint/commits/v9.21.0/packages/js)

---
updated-dependencies:
- dependency-name: "@eslint/js"
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>

* build(deps): bump vite from 6.1.0 to 6.1.1 in /client

Bumps [vite](https://github.com/vitejs/vite/tree/HEAD/packages/vite) from 6.1.0 to 6.1.1.
- [Release notes](https://github.com/vitejs/vite/releases)
- [Changelog](https://github.com/vitejs/vite/blob/main/packages/vite/CHANGELOG.md)
- [Commits](https://github.com/vitejs/vite/commits/create-vite@6.1.1/packages/vite)

---
updated-dependencies:
- dependency-name: vite
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

* Closes all open PRs

Closes #299

Closes #300

Closes #304

Closes #305

* ci: update github actions

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-02-22 17:30:31 -03:00
rmcamposGitHubdependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>snyk-bot
51e3e825cb feat: add new UI (#291)
* feat: implement new ui for tasks

issue #199

* feat: enable tasks to manage urls

* feat: add sidebar and remove header - wip

issue #199

time spent: 01h07m

* feat: sidebar improvements - wip

issue #199

* feat: side menu - partial

* feat: sidebar finished

* feat: sidebar finished

* feat: dashboard initial

* feat: new about page design

issue #199

* build(deps-dev): bump vitest and @vitest/coverage-v8 in /client

Bumps [vitest](https://github.com/vitest-dev/vitest/tree/HEAD/packages/vitest) and [@vitest/coverage-v8](https://github.com/vitest-dev/vitest/tree/HEAD/packages/coverage-v8). These dependencies needed to be updated together.

Updates `vitest` from 3.0.4 to 3.0.5
- [Release notes](https://github.com/vitest-dev/vitest/releases)
- [Commits](https://github.com/vitest-dev/vitest/commits/v3.0.5/packages/vitest)

Updates `@vitest/coverage-v8` from 3.0.4 to 3.0.5
- [Release notes](https://github.com/vitest-dev/vitest/releases)
- [Commits](https://github.com/vitest-dev/vitest/commits/v3.0.5/packages/coverage-v8)

---
updated-dependencies:
- dependency-name: vitest
  dependency-type: direct:development
- dependency-name: "@vitest/coverage-v8"
  dependency-type: direct:development
...

Signed-off-by: dependabot[bot] <support@github.com>

* fix: deprecated element and response for 201

* feat: home page almost finished

issue #199

* build(deps-dev): bump eslint-plugin-jsdoc in /client

Bumps [eslint-plugin-jsdoc](https://github.com/gajus/eslint-plugin-jsdoc) from 50.6.1 to 50.6.3.
- [Release notes](https://github.com/gajus/eslint-plugin-jsdoc/releases)
- [Changelog](https://github.com/gajus/eslint-plugin-jsdoc/blob/main/.releaserc)
- [Commits](https://github.com/gajus/eslint-plugin-jsdoc/compare/v50.6.1...v50.6.3)

---
updated-dependencies:
- dependency-name: eslint-plugin-jsdoc
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

* build(deps-dev): bump eslint-config-prettier in /client

Bumps [eslint-config-prettier](https://github.com/prettier/eslint-config-prettier) from 9.1.0 to 10.0.1.
- [Release notes](https://github.com/prettier/eslint-config-prettier/releases)
- [Changelog](https://github.com/prettier/eslint-config-prettier/blob/main/CHANGELOG.md)
- [Commits](https://github.com/prettier/eslint-config-prettier/compare/v9.1.0...v10.0.1)

---
updated-dependencies:
- dependency-name: eslint-config-prettier
  dependency-type: direct:development
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>

* build(deps): bump vite from 6.0.11 to 6.1.0 in /client

Bumps [vite](https://github.com/vitejs/vite/tree/HEAD/packages/vite) from 6.0.11 to 6.1.0.
- [Release notes](https://github.com/vitejs/vite/releases)
- [Changelog](https://github.com/vitejs/vite/blob/main/packages/vite/CHANGELOG.md)
- [Commits](https://github.com/vitejs/vite/commits/create-vite@6.1.0/packages/vite)

---
updated-dependencies:
- dependency-name: vite
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>

* build(deps-dev): bump @eslint/js from 9.17.0 to 9.20.0 in /client

Bumps [@eslint/js](https://github.com/eslint/eslint/tree/HEAD/packages/js) from 9.17.0 to 9.20.0.
- [Release notes](https://github.com/eslint/eslint/releases)
- [Changelog](https://github.com/eslint/eslint/blob/main/CHANGELOG.md)
- [Commits](https://github.com/eslint/eslint/commits/v9.20.0/packages/js)

---
updated-dependencies:
- dependency-name: "@eslint/js"
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>

* fix: upgrade react-router from 7.1.1 to 7.1.3

Snyk has created this PR to upgrade react-router from 7.1.1 to 7.1.3.

See this package in npm:
react-router

See this project in Snyk:
https://app.snyk.io/org/ricardocampos-dcn/project/4d31651d-a849-4b8a-83a3-f8aaba677c53?utm_source=github&utm_medium=referral&page=upgrade-pr

* fix: upgrade react-bootstrap from 2.10.7 to 2.10.8

Snyk has created this PR to upgrade react-bootstrap from 2.10.7 to 2.10.8.

See this package in npm:
react-bootstrap

See this project in Snyk:
https://app.snyk.io/org/ricardocampos-dcn/project/4d31651d-a849-4b8a-83a3-f8aaba677c53?utm_source=github&utm_medium=referral&page=upgrade-pr

* test: add test cases

issue #199

* test: add TaskUrlRepository data tests

issue #199

* test: add TaskService unit tests and fix intentionality Sonar issue

issue #199

* ci: attempt to fix sonar analysis and add badges

* ci: change pr and main workflows server tests

* chore: fix lint issues in the front-end

issue #199

* test: fix test cases for views and components

* chore: fix lint issues

* ci: update node version when running tests

* test: add taskTimeLeft test case

* chore: fix css rule according to css specifications

* chore: address sonar issues

* chore: address sonar issues again

* test: add Sidebar unit tests

* fix: client/Dockerfile to reduce vulnerabilities

The following vulnerabilities are fixed with an upgrade:
- https://snyk.io/vuln/SNYK-ALPINE320-OPENSSL-8690013
- https://snyk.io/vuln/SNYK-ALPINE320-OPENSSL-8690013
- https://snyk.io/vuln/SNYK-ALPINE320-OPENSSL-8235201
- https://snyk.io/vuln/SNYK-ALPINE320-OPENSSL-8235201

* chore: refactor and improve taskTag component and tests

* chore: improve the taskTitle component and add tests

* chore: improve taskUrl component and add test cases

* test: add count view tests

* test: add count view tests files

* test: add taskAdd tests

* test: fix task add

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: snyk-bot <snyk-bot@snyk.io>
2025-02-22 16:29:54 -03:00
dependabot[bot]andGitHub 772dce3c5e build(deps): bump org.hibernate.orm.tooling:hibernate-enhance-maven-plugin from 6.6.4.Final to 6.6.6.Final in /server (#282) 2025-02-07 13:25:03 +00:00
rmcamposGitHubdependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>snyk-bot
38df357b6e chore: versions bump (#289)
* build(deps): bump vite from 6.0.9 to 6.0.11 in /client

Bumps [vite](https://github.com/vitejs/vite/tree/HEAD/packages/vite) from 6.0.9 to 6.0.11.
- [Release notes](https://github.com/vitejs/vite/releases)
- [Changelog](https://github.com/vitejs/vite/blob/main/packages/vite/CHANGELOG.md)
- [Commits](https://github.com/vitejs/vite/commits/v6.0.11/packages/vite)

---
updated-dependencies:
- dependency-name: vite
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

* build(deps-dev): bump @types/node from 22.10.10 to 22.13.1 in /client

Bumps [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node) from 22.10.10 to 22.13.1.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/node)

---
updated-dependencies:
- dependency-name: "@types/node"
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>

* build(deps-dev): bump sass from 1.83.0 to 1.83.4 in /client

Bumps [sass](https://github.com/sass/dart-sass) from 1.83.0 to 1.83.4.
- [Release notes](https://github.com/sass/dart-sass/releases)
- [Changelog](https://github.com/sass/dart-sass/blob/main/CHANGELOG.md)
- [Commits](https://github.com/sass/dart-sass/compare/1.83.0...1.83.4)

---
updated-dependencies:
- dependency-name: sass
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

* build(deps-dev): bump @stylistic/eslint-plugin in /client

Bumps [@stylistic/eslint-plugin](https://github.com/eslint-stylistic/eslint-stylistic/tree/HEAD/packages/eslint-plugin) from 3.0.0 to 3.0.1.
- [Release notes](https://github.com/eslint-stylistic/eslint-stylistic/releases)
- [Changelog](https://github.com/eslint-stylistic/eslint-stylistic/blob/main/CHANGELOG.md)
- [Commits](https://github.com/eslint-stylistic/eslint-stylistic/commits/v3.0.1/packages/eslint-plugin)

---
updated-dependencies:
- dependency-name: "@stylistic/eslint-plugin"
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

* build(deps-dev): bump @eslint/compat from 1.2.5 to 1.2.6 in /client

Bumps [@eslint/compat](https://github.com/eslint/rewrite) from 1.2.5 to 1.2.6.
- [Release notes](https://github.com/eslint/rewrite/releases)
- [Changelog](https://github.com/eslint/rewrite/blob/main/release-please-config.json)
- [Commits](https://github.com/eslint/rewrite/compare/compat-v1.2.5...compat-v1.2.6)

---
updated-dependencies:
- dependency-name: "@eslint/compat"
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

* fix: upgrade typescript from 5.7.2 to 5.7.3

Snyk has created this PR to upgrade typescript from 5.7.2 to 5.7.3.

See this package in npm:
typescript

See this project in Snyk:
https://app.snyk.io/org/ricardocampos-dcn/project/4d31651d-a849-4b8a-83a3-f8aaba677c53?utm_source=github&utm_medium=referral&page=upgrade-pr

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: snyk-bot <snyk-bot@snyk.io>
2025-02-06 19:57:40 -03:00
rmcamposGitHubdependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>snyk-bot
187d06ac54 feat: versions bump (#281)
* build(deps): bump i18next from 24.2.1 to 24.2.2 in /client

Bumps [i18next](https://github.com/i18next/i18next) from 24.2.1 to 24.2.2.
- [Release notes](https://github.com/i18next/i18next/releases)
- [Changelog](https://github.com/i18next/i18next/blob/master/CHANGELOG.md)
- [Commits](https://github.com/i18next/i18next/compare/v24.2.1...v24.2.2)

---
updated-dependencies:
- dependency-name: i18next
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

* build(deps-dev): bump @types/node from 22.10.7 to 22.10.10 in /client

Bumps [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node) from 22.10.7 to 22.10.10.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/node)

---
updated-dependencies:
- dependency-name: "@types/node"
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

* build(deps-dev): bump @stylistic/eslint-plugin in /client

Bumps [@stylistic/eslint-plugin](https://github.com/eslint-stylistic/eslint-stylistic/tree/HEAD/packages/eslint-plugin) from 2.12.1 to 3.0.0.
- [Release notes](https://github.com/eslint-stylistic/eslint-stylistic/releases)
- [Changelog](https://github.com/eslint-stylistic/eslint-stylistic/blob/main/CHANGELOG.md)
- [Commits](https://github.com/eslint-stylistic/eslint-stylistic/commits/v3.0.0/packages/eslint-plugin)

---
updated-dependencies:
- dependency-name: "@stylistic/eslint-plugin"
  dependency-type: direct:development
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>

* build(deps-dev): bump vitest from 3.0.3 to 3.0.4 in /client

Bumps [vitest](https://github.com/vitest-dev/vitest/tree/HEAD/packages/vitest) from 3.0.3 to 3.0.4.
- [Release notes](https://github.com/vitest-dev/vitest/releases)
- [Commits](https://github.com/vitest-dev/vitest/commits/v3.0.4/packages/vitest)

---
updated-dependencies:
- dependency-name: vitest
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

* build(deps-dev): bump @eslint/compat from 1.2.4 to 1.2.5 in /client

Bumps [@eslint/compat](https://github.com/eslint/rewrite) from 1.2.4 to 1.2.5.
- [Release notes](https://github.com/eslint/rewrite/releases)
- [Changelog](https://github.com/eslint/rewrite/blob/main/release-please-config.json)
- [Commits](https://github.com/eslint/rewrite/compare/compat-v1.2.4...compat-v1.2.5)

---
updated-dependencies:
- dependency-name: "@eslint/compat"
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

* build(deps): bump com.puppycrawl.tools:checkstyle in /server

Bumps [com.puppycrawl.tools:checkstyle](https://github.com/checkstyle/checkstyle) from 10.21.1 to 10.21.2.
- [Release notes](https://github.com/checkstyle/checkstyle/releases)
- [Commits](https://github.com/checkstyle/checkstyle/compare/checkstyle-10.21.1...checkstyle-10.21.2)

---
updated-dependencies:
- dependency-name: com.puppycrawl.tools:checkstyle
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

* build(deps): bump org.springdoc:springdoc-openapi-starter-webmvc-ui

Bumps [org.springdoc:springdoc-openapi-starter-webmvc-ui](https://github.com/springdoc/springdoc-openapi) from 2.8.3 to 2.8.4.
- [Release notes](https://github.com/springdoc/springdoc-openapi/releases)
- [Changelog](https://github.com/springdoc/springdoc-openapi/blob/main/CHANGELOG.md)
- [Commits](https://github.com/springdoc/springdoc-openapi/compare/v2.8.3...v2.8.4)

---
updated-dependencies:
- dependency-name: org.springdoc:springdoc-openapi-starter-webmvc-ui
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

* fix: upgrade react-i18next from 15.2.0 to 15.4.0

Snyk has created this PR to upgrade react-i18next from 15.2.0 to 15.4.0.

See this package in npm:
react-i18next

See this project in Snyk:
https://app.snyk.io/org/ricardocampos-dcn/project/4d31651d-a849-4b8a-83a3-f8aaba677c53?utm_source=github&utm_medium=referral&page=upgrade-pr

* fix: coverage v8 version

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: snyk-bot <snyk-bot@snyk.io>
2025-02-01 16:59:20 -03:00
rmcamposGitHubdependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
60c54599f1 New versions (#272)
* build(deps-dev): bump vitest from 3.0.2 to 3.0.3 in /client

Bumps [vitest](https://github.com/vitest-dev/vitest/tree/HEAD/packages/vitest) from 3.0.2 to 3.0.3.
- [Release notes](https://github.com/vitest-dev/vitest/releases)
- [Commits](https://github.com/vitest-dev/vitest/commits/v3.0.3/packages/vitest)

---
updated-dependencies:
- dependency-name: vitest
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

* chore: fix dev packages and versions

* fix: react dom import

* fix: dependency into right place

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-01-21 18:02:44 -03:00
rmcamposGitHubdependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>snyk-bot
6d2bba17b4 feat/new versions (#268)
* build(deps-dev): bump vitest from 2.1.8 to 3.0.2 in /client

Bumps [vitest](https://github.com/vitest-dev/vitest/tree/HEAD/packages/vitest) from 2.1.8 to 3.0.2.
- [Release notes](https://github.com/vitest-dev/vitest/releases)
- [Commits](https://github.com/vitest-dev/vitest/commits/v3.0.2/packages/vitest)

---
updated-dependencies:
- dependency-name: vitest
  dependency-type: direct:development
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>

* build(deps-dev): bump eslint-plugin-react in /client

Bumps [eslint-plugin-react](https://github.com/jsx-eslint/eslint-plugin-react) from 7.37.3 to 7.37.4.
- [Release notes](https://github.com/jsx-eslint/eslint-plugin-react/releases)
- [Changelog](https://github.com/jsx-eslint/eslint-plugin-react/blob/master/CHANGELOG.md)
- [Commits](https://github.com/jsx-eslint/eslint-plugin-react/compare/v7.37.3...v7.37.4)

---
updated-dependencies:
- dependency-name: eslint-plugin-react
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

* build(deps-dev): bump @vitest/coverage-v8 from 2.1.8 to 3.0.2 in /client

Bumps [@vitest/coverage-v8](https://github.com/vitest-dev/vitest/tree/HEAD/packages/coverage-v8) from 2.1.8 to 3.0.2.
- [Release notes](https://github.com/vitest-dev/vitest/releases)
- [Commits](https://github.com/vitest-dev/vitest/commits/v3.0.2/packages/coverage-v8)

---
updated-dependencies:
- dependency-name: "@vitest/coverage-v8"
  dependency-type: direct:development
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>

* build(deps-dev): bump jsdom from 25.0.1 to 26.0.0 in /client

Bumps [jsdom](https://github.com/jsdom/jsdom) from 25.0.1 to 26.0.0.
- [Release notes](https://github.com/jsdom/jsdom/releases)
- [Changelog](https://github.com/jsdom/jsdom/blob/main/Changelog.md)
- [Commits](https://github.com/jsdom/jsdom/compare/25.0.1...26.0.0)

---
updated-dependencies:
- dependency-name: jsdom
  dependency-type: direct:development
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>

* build(deps): bump @testing-library/user-event in /client

Bumps [@testing-library/user-event](https://github.com/testing-library/user-event) from 14.5.2 to 14.6.0.
- [Release notes](https://github.com/testing-library/user-event/releases)
- [Changelog](https://github.com/testing-library/user-event/blob/main/CHANGELOG.md)
- [Commits](https://github.com/testing-library/user-event/compare/v14.5.2...v14.6)

---
updated-dependencies:
- dependency-name: "@testing-library/user-event"
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>

* fix: client/package.json & client/package-lock.json to reduce vulnerabilities

The following vulnerabilities are fixed with an upgrade:
- https://snyk.io/vuln/SNYK-JS-VITE-8648411

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: snyk-bot <snyk-bot@snyk.io>
2025-01-21 17:08:36 -03:00
rmcamposandGitHub ff6b0240d7 feat: add backup shell script file (#258)
issue #257
2025-01-14 17:21:28 -03:00
rmcamposGitHubdependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>snyk-bot
2176ddebbc chore: dependabot dependencies version bump (#256)
* build(deps-dev): bump eslint-plugin-jsdoc in /client

Bumps [eslint-plugin-jsdoc](https://github.com/gajus/eslint-plugin-jsdoc) from 50.5.0 to 50.6.1.
- [Release notes](https://github.com/gajus/eslint-plugin-jsdoc/releases)
- [Changelog](https://github.com/gajus/eslint-plugin-jsdoc/blob/main/.releaserc)
- [Commits](https://github.com/gajus/eslint-plugin-jsdoc/compare/v50.5.0...v50.6.1)

---
updated-dependencies:
- dependency-name: eslint-plugin-jsdoc
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>

* build(deps-dev): bump typescript-eslint from 8.19.0 to 8.19.1 in /client

Bumps [typescript-eslint](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/typescript-eslint) from 8.19.0 to 8.19.1.
- [Release notes](https://github.com/typescript-eslint/typescript-eslint/releases)
- [Changelog](https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/typescript-eslint/CHANGELOG.md)
- [Commits](https://github.com/typescript-eslint/typescript-eslint/commits/v8.19.1/packages/typescript-eslint)

---
updated-dependencies:
- dependency-name: typescript-eslint
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

* build(deps): bump react, react-dom and @types/react in /client

Bumps [react](https://github.com/facebook/react/tree/HEAD/packages/react), [react-dom](https://github.com/facebook/react/tree/HEAD/packages/react-dom) and [@types/react](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/react). These dependencies needed to be updated together.

Updates `react` from 18.3.1 to 19.0.0
- [Release notes](https://github.com/facebook/react/releases)
- [Changelog](https://github.com/facebook/react/blob/main/CHANGELOG.md)
- [Commits](https://github.com/facebook/react/commits/v19.0.0/packages/react)

Updates `react-dom` from 18.3.1 to 19.0.0
- [Release notes](https://github.com/facebook/react/releases)
- [Changelog](https://github.com/facebook/react/blob/main/CHANGELOG.md)
- [Commits](https://github.com/facebook/react/commits/v19.0.0/packages/react-dom)

Updates `@types/react` from 18.3.12 to 19.0.3
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/react)

---
updated-dependencies:
- dependency-name: react
  dependency-type: direct:production
  update-type: version-update:semver-major
- dependency-name: react-dom
  dependency-type: direct:production
  update-type: version-update:semver-major
- dependency-name: "@types/react"
  dependency-type: direct:development
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>

* build(deps): bump @types/node from 22.10.2 to 22.10.5 in /client

Bumps [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node) from 22.10.2 to 22.10.5.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/node)

---
updated-dependencies:
- dependency-name: "@types/node"
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

* build(deps): bump i18next from 23.16.8 to 24.2.1 in /client

Bumps [i18next](https://github.com/i18next/i18next) from 23.16.8 to 24.2.1.
- [Release notes](https://github.com/i18next/i18next/releases)
- [Changelog](https://github.com/i18next/i18next/blob/master/CHANGELOG.md)
- [Commits](https://github.com/i18next/i18next/compare/v23.16.8...v24.2.1)

---
updated-dependencies:
- dependency-name: i18next
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>

* fix: upgrade @types/react-dom from 18.3.3 to 18.3.5

Snyk has created this PR to upgrade @types/react-dom from 18.3.3 to 18.3.5.

See this package in npm:
@types/react-dom

See this project in Snyk:
https://app.snyk.io/org/ricardocampos-dcn/project/4d31651d-a849-4b8a-83a3-f8aaba677c53?utm_source=github&utm_medium=referral&page=upgrade-pr

* fix: upgrade react-i18next from 15.1.4 to 15.2.0

Snyk has created this PR to upgrade react-i18next from 15.1.4 to 15.2.0.

See this package in npm:
react-i18next

See this project in Snyk:
https://app.snyk.io/org/ricardocampos-dcn/project/4d31651d-a849-4b8a-83a3-f8aaba677c53?utm_source=github&utm_medium=referral&page=upgrade-pr

* build(deps): bump org.springdoc:springdoc-openapi-starter-webmvc-ui

Bumps [org.springdoc:springdoc-openapi-starter-webmvc-ui](https://github.com/springdoc/springdoc-openapi) from 2.7.0 to 2.8.3.
- [Release notes](https://github.com/springdoc/springdoc-openapi/releases)
- [Changelog](https://github.com/springdoc/springdoc-openapi/blob/main/CHANGELOG.md)
- [Commits](https://github.com/springdoc/springdoc-openapi/compare/v2.7.0...v2.8.3)

---
updated-dependencies:
- dependency-name: org.springdoc:springdoc-openapi-starter-webmvc-ui
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>

* chore: fix build and react-dom type version

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: snyk-bot <snyk-bot@snyk.io>
2025-01-14 16:33:31 -03:00
rmcamposGitHubdependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>snyk-bot
c5fdf01aa7 chore: dependencies bump (#245)
* build(deps-dev): bump eslint-plugin-react in /client

Bumps [eslint-plugin-react](https://github.com/jsx-eslint/eslint-plugin-react) from 7.37.2 to 7.37.3.
- [Release notes](https://github.com/jsx-eslint/eslint-plugin-react/releases)
- [Changelog](https://github.com/jsx-eslint/eslint-plugin-react/blob/master/CHANGELOG.md)
- [Commits](https://github.com/jsx-eslint/eslint-plugin-react/compare/v7.37.2...v7.37.3)

---
updated-dependencies:
- dependency-name: eslint-plugin-react
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

* build(deps-dev): bump sass from 1.80.4 to 1.83.0 in /client

Bumps [sass](https://github.com/sass/dart-sass) from 1.80.4 to 1.83.0.
- [Release notes](https://github.com/sass/dart-sass/releases)
- [Changelog](https://github.com/sass/dart-sass/blob/main/CHANGELOG.md)
- [Commits](https://github.com/sass/dart-sass/compare/1.80.4...1.83.0)

---
updated-dependencies:
- dependency-name: sass
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>

* build(deps-dev): bump typescript-eslint from 8.18.0 to 8.19.0 in /client

Bumps [typescript-eslint](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/typescript-eslint) from 8.18.0 to 8.19.0.
- [Release notes](https://github.com/typescript-eslint/typescript-eslint/releases)
- [Changelog](https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/typescript-eslint/CHANGELOG.md)
- [Commits](https://github.com/typescript-eslint/typescript-eslint/commits/v8.19.0/packages/typescript-eslint)

---
updated-dependencies:
- dependency-name: typescript-eslint
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>

* build(deps): bump vite from 6.0.3 to 6.0.6 in /client

Bumps [vite](https://github.com/vitejs/vite/tree/HEAD/packages/vite) from 6.0.3 to 6.0.6.
- [Release notes](https://github.com/vitejs/vite/releases)
- [Changelog](https://github.com/vitejs/vite/blob/main/packages/vite/CHANGELOG.md)
- [Commits](https://github.com/vitejs/vite/commits/v6.0.6/packages/vite)

---
updated-dependencies:
- dependency-name: vite
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

* build(deps): bump react-i18next from 15.1.3 to 15.4.0 in /client

Bumps [react-i18next](https://github.com/i18next/react-i18next) from 15.1.3 to 15.4.0.
- [Changelog](https://github.com/i18next/react-i18next/blob/master/CHANGELOG.md)
- [Commits](https://github.com/i18next/react-i18next/compare/v15.1.3...v15.4.0)

---
updated-dependencies:
- dependency-name: react-i18next
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>

* build(deps): bump com.puppycrawl.tools:checkstyle in /server

Bumps [com.puppycrawl.tools:checkstyle](https://github.com/checkstyle/checkstyle) from 10.21.0 to 10.21.1.
- [Release notes](https://github.com/checkstyle/checkstyle/releases)
- [Commits](https://github.com/checkstyle/checkstyle/compare/checkstyle-10.21.0...checkstyle-10.21.1)

---
updated-dependencies:
- dependency-name: com.puppycrawl.tools:checkstyle
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

* fix: upgrade @types/react-dom from 18.3.1 to 18.3.3

Snyk has created this PR to upgrade @types/react-dom from 18.3.1 to 18.3.3.

See this package in npm:
@types/react-dom

See this project in Snyk:
https://app.snyk.io/org/ricardocampos-dcn/project/4d31651d-a849-4b8a-83a3-f8aaba677c53?utm_source=github&utm_medium=referral&page=upgrade-pr

* fix: upgrade @testing-library/react from 16.0.1 to 16.1.0

Snyk has created this PR to upgrade @testing-library/react from 16.0.1 to 16.1.0.

See this package in npm:
@testing-library/react

See this project in Snyk:
https://app.snyk.io/org/ricardocampos-dcn/project/4d31651d-a849-4b8a-83a3-f8aaba677c53?utm_source=github&utm_medium=referral&page=upgrade-pr

* fix: upgrade react-i18next from 15.1.3 to 15.1.4

Snyk has created this PR to upgrade react-i18next from 15.1.3 to 15.1.4.

See this package in npm:
react-i18next

See this project in Snyk:
https://app.snyk.io/org/ricardocampos-dcn/project/4d31651d-a849-4b8a-83a3-f8aaba677c53?utm_source=github&utm_medium=referral&page=upgrade-pr

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: snyk-bot <snyk-bot@snyk.io>
2025-01-02 17:24:19 -03:00
rmcamposandGitHub 93dda8e5d6 doc: improve jsdocs (#235)
* doc: improve jsdocs

* ci: fix sonar project key on main workflow

* chore: improvements and refactoring

* test: fix test case

* chore: upadte sonar

* ci: add sonar propertiles file for client

* chore: fix delete request
2025-01-02 17:03:21 -03:00
9af9b2e9cc fix: server/pom.xml to reduce vulnerabilities (#234)
The following vulnerabilities are fixed with an upgrade:
- https://snyk.io/vuln/SNYK-JAVA-ORGSPRINGFRAMEWORK-7687447
- https://snyk.io/vuln/SNYK-JAVA-ORGSPRINGFRAMEWORK-7945490
- https://snyk.io/vuln/SNYK-JAVA-ORGSPRINGFRAMEWORK-8230364
- https://snyk.io/vuln/SNYK-JAVA-ORGSPRINGFRAMEWORK-8230365
- https://snyk.io/vuln/SNYK-JAVA-ORGSPRINGFRAMEWORK-8230366
- https://snyk.io/vuln/SNYK-JAVA-ORGSPRINGFRAMEWORK-8230368
- https://snyk.io/vuln/SNYK-JAVA-ORGSPRINGFRAMEWORK-8230373

Co-authored-by: snyk-bot <snyk-bot@snyk.io>
2024-12-30 15:53:42 -03:00
rmcamposGitHubdependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
81ff0a12ec feat: dependabot server (#233)
* build(deps): bump org.springframework.boot:spring-boot-starter-parent

Bumps [org.springframework.boot:spring-boot-starter-parent](https://github.com/spring-projects/spring-boot) from 3.3.6 to 3.3.7.
- [Release notes](https://github.com/spring-projects/spring-boot/releases)
- [Commits](https://github.com/spring-projects/spring-boot/compare/v3.3.6...v3.3.7)

---
updated-dependencies:
- dependency-name: org.springframework.boot:spring-boot-starter-parent
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

* build(deps): bump org.hibernate.orm.tooling:hibernate-enhance-maven-plugin

Bumps [org.hibernate.orm.tooling:hibernate-enhance-maven-plugin](https://github.com/hibernate/hibernate-orm) from 6.6.2.Final to 6.6.4.Final.
- [Release notes](https://github.com/hibernate/hibernate-orm/releases)
- [Changelog](https://github.com/hibernate/hibernate-orm/blob/6.6.4/changelog.txt)
- [Commits](https://github.com/hibernate/hibernate-orm/compare/6.6.2...6.6.4)

---
updated-dependencies:
- dependency-name: org.hibernate.orm.tooling:hibernate-enhance-maven-plugin
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

* feat: try to bump spring to 3.4.1

* feat: decrease code coverage

* fix: add flyway to cloud native config

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-12-30 14:57:57 -03:00
rmcamposGitHubdependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>snyk-bot
7106db7d64 feat: dependabot changes (#232)
* build(deps-dev): bump @stylistic/eslint-plugin in /client

Bumps [@stylistic/eslint-plugin](https://github.com/eslint-stylistic/eslint-stylistic/tree/HEAD/packages/eslint-plugin) from 2.10.1 to 2.12.1.
- [Release notes](https://github.com/eslint-stylistic/eslint-stylistic/releases)
- [Changelog](https://github.com/eslint-stylistic/eslint-stylistic/blob/main/CHANGELOG.md)
- [Commits](https://github.com/eslint-stylistic/eslint-stylistic/commits/v2.12.1/packages/eslint-plugin)

---
updated-dependencies:
- dependency-name: "@stylistic/eslint-plugin"
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>

* build(deps): bump react-router-dom from 6.28.0 to 7.1.1 in /client

Bumps [react-router-dom](https://github.com/remix-run/react-router/tree/HEAD/packages/react-router-dom) from 6.28.0 to 7.1.1.
- [Release notes](https://github.com/remix-run/react-router/releases)
- [Changelog](https://github.com/remix-run/react-router/blob/main/packages/react-router-dom/CHANGELOG.md)
- [Commits](https://github.com/remix-run/react-router/commits/react-router-dom@7.1.1/packages/react-router-dom)

---
updated-dependencies:
- dependency-name: react-router-dom
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>

* build(deps-dev): bump globals from 15.13.0 to 15.14.0 in /client

Bumps [globals](https://github.com/sindresorhus/globals) from 15.13.0 to 15.14.0.
- [Release notes](https://github.com/sindresorhus/globals/releases)
- [Commits](https://github.com/sindresorhus/globals/compare/v15.13.0...v15.14.0)

---
updated-dependencies:
- dependency-name: globals
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>

* build(deps-dev): bump eslint-plugin-n from 17.11.1 to 17.15.1 in /client

Bumps [eslint-plugin-n](https://github.com/eslint-community/eslint-plugin-n) from 17.11.1 to 17.15.1.
- [Release notes](https://github.com/eslint-community/eslint-plugin-n/releases)
- [Changelog](https://github.com/eslint-community/eslint-plugin-n/blob/master/CHANGELOG.md)
- [Commits](https://github.com/eslint-community/eslint-plugin-n/compare/v17.11.1...v17.15.1)

---
updated-dependencies:
- dependency-name: eslint-plugin-n
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>

* build(deps): bump react-bootstrap from 2.10.6 to 2.10.7 in /client

Bumps [react-bootstrap](https://github.com/react-bootstrap/react-bootstrap) from 2.10.6 to 2.10.7.
- [Release notes](https://github.com/react-bootstrap/react-bootstrap/releases)
- [Changelog](https://github.com/react-bootstrap/react-bootstrap/blob/master/CHANGELOG.md)
- [Commits](https://github.com/react-bootstrap/react-bootstrap/compare/v2.10.6...v2.10.7)

---
updated-dependencies:
- dependency-name: react-bootstrap
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

* fix: upgrade react-i18next from 15.1.2 to 15.1.3

Snyk has created this PR to upgrade react-i18next from 15.1.2 to 15.1.3.

See this package in npm:
react-i18next

See this project in Snyk:
https://app.snyk.io/org/ricardocampos-dcn/project/4d31651d-a849-4b8a-83a3-f8aaba677c53?utm_source=github&utm_medium=referral&page=upgrade-pr

* feat: update to react router v7

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: snyk-bot <snyk-bot@snyk.io>
2024-12-30 13:35:05 -03:00
rmcamposandGitHub a1098dad03 test: add more unit and integration tests for the backend (#202)
* test: add server unit tests for controllers - partial

issue #71

* test: add task controller unit tests

issue #71

* docs: add cloud scripts to start services

* docs: add sonar to backend

issue #198

* docs: add sonar params

* fix: russian text

* test: add note controller test

issue #71

* test: add auth service unit tests - wip

issue #71

* test: add auth and home service unit tests

issue #71
2024-12-27 16:19:31 -03:00
1cd2d248ac feat: snyk changes (#223)
* fix: upgrade typescript from 5.6.3 to 5.7.2

Snyk has created this PR to upgrade typescript from 5.6.3 to 5.7.2.

See this package in npm:
typescript

See this project in Snyk:
https://app.snyk.io/org/ricardocampos-dcn/project/4d31651d-a849-4b8a-83a3-f8aaba677c53?utm_source=github&utm_medium=referral&page=upgrade-pr

* fix: upgrade i18next from 23.16.5 to 23.16.8

Snyk has created this PR to upgrade i18next from 23.16.5 to 23.16.8.

See this package in npm:
i18next

See this project in Snyk:
https://app.snyk.io/org/ricardocampos-dcn/project/4d31651d-a849-4b8a-83a3-f8aaba677c53?utm_source=github&utm_medium=referral&page=upgrade-pr

* fix: upgrade react-bootstrap from 2.10.5 to 2.10.6

Snyk has created this PR to upgrade react-bootstrap from 2.10.5 to 2.10.6.

See this package in npm:
react-bootstrap

See this project in Snyk:
https://app.snyk.io/org/ricardocampos-dcn/project/4d31651d-a849-4b8a-83a3-f8aaba677c53?utm_source=github&utm_medium=referral&page=upgrade-pr

* fix: upgrade react-i18next from 15.1.1 to 15.1.2

Snyk has created this PR to upgrade react-i18next from 15.1.1 to 15.1.2.

See this package in npm:
react-i18next

See this project in Snyk:
https://app.snyk.io/org/ricardocampos-dcn/project/4d31651d-a849-4b8a-83a3-f8aaba677c53?utm_source=github&utm_medium=referral&page=upgrade-pr

---------

Co-authored-by: snyk-bot <snyk-bot@snyk.io>
2024-12-19 20:54:58 -03:00
rmcamposGitHubdependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
c31ef55341 feat: dependabot versions upgrade (#222)
* build(deps): bump com.puppycrawl.tools:checkstyle in /server

Bumps [com.puppycrawl.tools:checkstyle](https://github.com/checkstyle/checkstyle) from 10.20.2 to 10.21.0.
- [Release notes](https://github.com/checkstyle/checkstyle/releases)
- [Commits](https://github.com/checkstyle/checkstyle/compare/checkstyle-10.20.2...checkstyle-10.21.0)

---
updated-dependencies:
- dependency-name: com.puppycrawl.tools:checkstyle
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>

* build(deps): bump @types/node from 22.10.1 to 22.10.2 in /client

Bumps [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node) from 22.10.1 to 22.10.2.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/node)

---
updated-dependencies:
- dependency-name: "@types/node"
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

* build(deps-dev): bump @eslint/js from 9.16.0 to 9.17.0 in /client

Bumps [@eslint/js](https://github.com/eslint/eslint/tree/HEAD/packages/js) from 9.16.0 to 9.17.0.
- [Release notes](https://github.com/eslint/eslint/releases)
- [Changelog](https://github.com/eslint/eslint/blob/main/CHANGELOG.md)
- [Commits](https://github.com/eslint/eslint/commits/v9.17.0/packages/js)

---
updated-dependencies:
- dependency-name: "@eslint/js"
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>

* build(deps-dev): bump eslint from 9.16.0 to 9.17.0 in /client

Bumps [eslint](https://github.com/eslint/eslint) from 9.16.0 to 9.17.0.
- [Release notes](https://github.com/eslint/eslint/releases)
- [Changelog](https://github.com/eslint/eslint/blob/main/CHANGELOG.md)
- [Commits](https://github.com/eslint/eslint/compare/v9.16.0...v9.17.0)

---
updated-dependencies:
- dependency-name: eslint
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>

* build(deps-dev): bump prettier from 3.3.3 to 3.4.2 in /client

Bumps [prettier](https://github.com/prettier/prettier) from 3.3.3 to 3.4.2.
- [Release notes](https://github.com/prettier/prettier/releases)
- [Changelog](https://github.com/prettier/prettier/blob/main/CHANGELOG.md)
- [Commits](https://github.com/prettier/prettier/compare/3.3.3...3.4.2)

---
updated-dependencies:
- dependency-name: prettier
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>

* build(deps-dev): bump @eslint/compat from 1.2.2 to 1.2.4 in /client

Bumps [@eslint/compat](https://github.com/eslint/rewrite) from 1.2.2 to 1.2.4.
- [Release notes](https://github.com/eslint/rewrite/releases)
- [Changelog](https://github.com/eslint/rewrite/blob/main/release-please-config.json)
- [Commits](https://github.com/eslint/rewrite/compare/compat-v1.2.2...compat-v1.2.4)

---
updated-dependencies:
- dependency-name: "@eslint/compat"
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-12-19 20:45:00 -03:00
rmcamposGitHubdependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
fcaf887b89 chore: dependencies bump (#211)
* build(deps): bump SonarSource/sonarcloud-github-action

Bumps [SonarSource/sonarcloud-github-action](https://github.com/sonarsource/sonarcloud-github-action) from 3.1.0 to 4.0.0.
- [Release notes](https://github.com/sonarsource/sonarcloud-github-action/releases)
- [Commits](https://github.com/sonarsource/sonarcloud-github-action/compare/v3.1.0...v4.0.0)

---
updated-dependencies:
- dependency-name: SonarSource/sonarcloud-github-action
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>

* build(deps): bump org.apache.maven.plugins:maven-javadoc-plugin

Bumps [org.apache.maven.plugins:maven-javadoc-plugin](https://github.com/apache/maven-javadoc-plugin) from 3.11.1 to 3.11.2.
- [Release notes](https://github.com/apache/maven-javadoc-plugin/releases)
- [Commits](https://github.com/apache/maven-javadoc-plugin/compare/maven-javadoc-plugin-3.11.1...maven-javadoc-plugin-3.11.2)

---
updated-dependencies:
- dependency-name: org.apache.maven.plugins:maven-javadoc-plugin
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

* build(deps-dev): bump globals from 15.12.0 to 15.13.0 in /client

Bumps [globals](https://github.com/sindresorhus/globals) from 15.12.0 to 15.13.0.
- [Release notes](https://github.com/sindresorhus/globals/releases)
- [Commits](https://github.com/sindresorhus/globals/compare/v15.12.0...v15.13.0)

---
updated-dependencies:
- dependency-name: globals
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>

* build(deps-dev): bump typescript-eslint from 8.17.0 to 8.18.0 in /client

Bumps [typescript-eslint](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/typescript-eslint) from 8.17.0 to 8.18.0.
- [Release notes](https://github.com/typescript-eslint/typescript-eslint/releases)
- [Changelog](https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/typescript-eslint/CHANGELOG.md)
- [Commits](https://github.com/typescript-eslint/typescript-eslint/commits/v8.18.0/packages/typescript-eslint)

---
updated-dependencies:
- dependency-name: typescript-eslint
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>

* build(deps): bump vite from 5.4.11 to 6.0.3 in /client

Bumps [vite](https://github.com/vitejs/vite/tree/HEAD/packages/vite) from 5.4.11 to 6.0.3.
- [Release notes](https://github.com/vitejs/vite/releases)
- [Changelog](https://github.com/vitejs/vite/blob/main/packages/vite/CHANGELOG.md)
- [Commits](https://github.com/vitejs/vite/commits/v6.0.3/packages/vite)

---
updated-dependencies:
- dependency-name: vite
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>

* build(deps): bump @types/node from 22.9.1 to 22.10.1 in /client

Bumps [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node) from 22.9.1 to 22.10.1.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/node)

---
updated-dependencies:
- dependency-name: "@types/node"
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>

* build(deps): bump react-bootstrap-icons from 1.11.4 to 1.11.5 in /client

Bumps [react-bootstrap-icons](https://github.com/ismamz/react-bootstrap-icons) from 1.11.4 to 1.11.5.
- [Commits](https://github.com/ismamz/react-bootstrap-icons/compare/v1.11.4...v1.11.5)

---
updated-dependencies:
- dependency-name: react-bootstrap-icons
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

* build(deps): bump nanoid from 3.3.7 to 3.3.8 in /client

Bumps [nanoid](https://github.com/ai/nanoid) from 3.3.7 to 3.3.8.
- [Release notes](https://github.com/ai/nanoid/releases)
- [Changelog](https://github.com/ai/nanoid/blob/main/CHANGELOG.md)
- [Commits](https://github.com/ai/nanoid/compare/3.3.7...3.3.8)

---
updated-dependencies:
- dependency-name: nanoid
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>

* ci: fix sonar project key for client

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-12-16 16:21:52 -03:00
rmcamposGitHubdependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
8a9df47477 chore: combine front PRs (#201)
* build(deps-dev): bump @vitest/coverage-v8 from 2.1.4 to 2.1.8 in /client

Bumps [@vitest/coverage-v8](https://github.com/vitest-dev/vitest/tree/HEAD/packages/coverage-v8) from 2.1.4 to 2.1.8.
- [Release notes](https://github.com/vitest-dev/vitest/releases)
- [Commits](https://github.com/vitest-dev/vitest/commits/v2.1.8/packages/coverage-v8)

---
updated-dependencies:
- dependency-name: "@vitest/coverage-v8"
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

* build(deps-dev): bump eslint-plugin-promise in /client

Bumps [eslint-plugin-promise](https://github.com/eslint-community/eslint-plugin-promise) from 7.2.0 to 7.2.1.
- [Release notes](https://github.com/eslint-community/eslint-plugin-promise/releases)
- [Changelog](https://github.com/eslint-community/eslint-plugin-promise/blob/main/CHANGELOG.md)
- [Commits](https://github.com/eslint-community/eslint-plugin-promise/compare/v7.2.0...v7.2.1)

---
updated-dependencies:
- dependency-name: eslint-plugin-promise
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

* build(deps-dev): bump eslint from 9.14.0 to 9.16.0 in /client

Bumps [eslint](https://github.com/eslint/eslint) from 9.14.0 to 9.16.0.
- [Release notes](https://github.com/eslint/eslint/releases)
- [Changelog](https://github.com/eslint/eslint/blob/main/CHANGELOG.md)
- [Commits](https://github.com/eslint/eslint/compare/v9.14.0...v9.16.0)

---
updated-dependencies:
- dependency-name: eslint
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>

* build(deps-dev): bump typescript-eslint from 8.15.0 to 8.17.0 in /client

Bumps [typescript-eslint](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/typescript-eslint) from 8.15.0 to 8.17.0.
- [Release notes](https://github.com/typescript-eslint/typescript-eslint/releases)
- [Changelog](https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/typescript-eslint/CHANGELOG.md)
- [Commits](https://github.com/typescript-eslint/typescript-eslint/commits/v8.17.0/packages/typescript-eslint)

---
updated-dependencies:
- dependency-name: typescript-eslint
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>

* build(deps): bump @vitejs/plugin-react from 4.3.3 to 4.3.4 in /client

Bumps [@vitejs/plugin-react](https://github.com/vitejs/vite-plugin-react/tree/HEAD/packages/plugin-react) from 4.3.3 to 4.3.4.
- [Release notes](https://github.com/vitejs/vite-plugin-react/releases)
- [Changelog](https://github.com/vitejs/vite-plugin-react/blob/main/packages/plugin-react/CHANGELOG.md)
- [Commits](https://github.com/vitejs/vite-plugin-react/commits/v4.3.4/packages/plugin-react)

---
updated-dependencies:
- dependency-name: "@vitejs/plugin-react"
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-12-05 21:17:35 -03:00
rmcamposandGitHub 07bb98d645 feat: add Russian language support (#189)
* feat: add Russian language support

* chore: improve readability - wip

* test: add portuguese util unit tests

* test: add portuguese utils unit tests

* test: add russian utils unit tests

* test: add translator utils unit tests

* chore: refactor to reduce complexity

* test: improve tests

* test: improving tests and reducing duplicataions

* test: fix russian and spanish test cases

* chore: fix sonar issues

* test: fix russian translations and add more test cases
2024-12-05 21:02:26 -03:00
rmcamposGitHubdependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
32fd9c4ff5 Chore/server prs (#197)
* build(deps): bump com.puppycrawl.tools:checkstyle in /server

Bumps [com.puppycrawl.tools:checkstyle](https://github.com/checkstyle/checkstyle) from 10.20.1 to 10.20.2.
- [Release notes](https://github.com/checkstyle/checkstyle/releases)
- [Commits](https://github.com/checkstyle/checkstyle/compare/checkstyle-10.20.1...checkstyle-10.20.2)

---
updated-dependencies:
- dependency-name: com.puppycrawl.tools:checkstyle
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

* build(deps): bump org.springframework.boot:spring-boot-starter-parent

Bumps [org.springframework.boot:spring-boot-starter-parent](https://github.com/spring-projects/spring-boot) from 3.3.5 to 3.3.6.
- [Release notes](https://github.com/spring-projects/spring-boot/releases)
- [Commits](https://github.com/spring-projects/spring-boot/compare/v3.3.5...v3.3.6)

---
updated-dependencies:
- dependency-name: org.springframework.boot:spring-boot-starter-parent
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

* docs: add cloud native compile command to tools

* docs: improve tools for backend and scripts

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-12-04 08:31:44 -03:00
rmcamposGitHubdependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
8f57fc3509 chore: Upgrade javascript packages (#187)
* build(deps-dev): bump eslint-plugin-promise in /client

Bumps [eslint-plugin-promise](https://github.com/eslint-community/eslint-plugin-promise) from 7.1.0 to 7.2.0.
- [Release notes](https://github.com/eslint-community/eslint-plugin-promise/releases)
- [Changelog](https://github.com/eslint-community/eslint-plugin-promise/blob/main/CHANGELOG.md)
- [Commits](https://github.com/eslint-community/eslint-plugin-promise/compare/v7.1.0...v7.2.0)

---
updated-dependencies:
- dependency-name: eslint-plugin-promise
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>

* build(deps-dev): bump @testing-library/jest-dom in /client

Bumps [@testing-library/jest-dom](https://github.com/testing-library/jest-dom) from 6.6.2 to 6.6.3.
- [Release notes](https://github.com/testing-library/jest-dom/releases)
- [Changelog](https://github.com/testing-library/jest-dom/blob/main/CHANGELOG.md)
- [Commits](https://github.com/testing-library/jest-dom/compare/v6.6.2...v6.6.3)

---
updated-dependencies:
- dependency-name: "@testing-library/jest-dom"
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

* build(deps-dev): bump eslint-plugin-jsdoc in /client

Bumps [eslint-plugin-jsdoc](https://github.com/gajus/eslint-plugin-jsdoc) from 50.4.3 to 50.5.0.
- [Release notes](https://github.com/gajus/eslint-plugin-jsdoc/releases)
- [Changelog](https://github.com/gajus/eslint-plugin-jsdoc/blob/main/.releaserc)
- [Commits](https://github.com/gajus/eslint-plugin-jsdoc/compare/v50.4.3...v50.5.0)

---
updated-dependencies:
- dependency-name: eslint-plugin-jsdoc
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>

* build(deps): bump react-router-dom from 6.28.0 to 7.0.1 in /client

Bumps [react-router-dom](https://github.com/remix-run/react-router/tree/HEAD/packages/react-router-dom) from 6.28.0 to 7.0.1.
- [Release notes](https://github.com/remix-run/react-router/releases)
- [Changelog](https://github.com/remix-run/react-router/blob/main/packages/react-router-dom/CHANGELOG.md)
- [Commits](https://github.com/remix-run/react-router/commits/react-router-dom@7.0.1/packages/react-router-dom)

---
updated-dependencies:
- dependency-name: react-router-dom
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>

* build(deps-dev): bump @types/react from 18.3.11 to 18.3.12 in /client

Bumps [@types/react](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/react) from 18.3.11 to 18.3.12.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/react)

---
updated-dependencies:
- dependency-name: "@types/react"
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

* Revert "build(deps): bump react-router-dom from 6.28.0 to 7.0.1 in /client"

This reverts commit 013d57083824dcb06724ac44937c1240f45e383e.

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-11-30 12:32:43 -03:00
rmcamposandGitHub 8c1d268b97 feat: improve accessibility a bit (#178) 2024-11-22 16:57:32 -03:00
rmcamposandGitHub 7e494ab95e Feat/102 notes with more than 300 characters (#175)
* feat: update tasks UI and add high priority and and due-date option

issue #57

* improve ui

* improve ui for task

* feat: handles due date and high priority tasks

issue #57

* feat: update task with new features

issue #52

* feat: allow users to set high priority tasks and due date done

issue #52

issue #57

* test: add unit tests

* doc: improve readme

* doc: fix table of contents on readme

* feat: enable users to type up to 2000 chars on notes

issue #102
2024-11-22 11:42:00 -03:00
rmcamposGitHubdependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
943644301b chore: combine front bumps (#176)
* build(deps-dev): bump typescript-eslint from 8.14.0 to 8.15.0 in /client

Bumps [typescript-eslint](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/typescript-eslint) from 8.14.0 to 8.15.0.
- [Release notes](https://github.com/typescript-eslint/typescript-eslint/releases)
- [Changelog](https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/typescript-eslint/CHANGELOG.md)
- [Commits](https://github.com/typescript-eslint/typescript-eslint/commits/v8.15.0/packages/typescript-eslint)

---
updated-dependencies:
- dependency-name: typescript-eslint
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>

* build(deps-dev): bump @eslint/js from 9.14.0 to 9.15.0 in /client

Bumps [@eslint/js](https://github.com/eslint/eslint/tree/HEAD/packages/js) from 9.14.0 to 9.15.0.
- [Release notes](https://github.com/eslint/eslint/releases)
- [Changelog](https://github.com/eslint/eslint/blob/main/CHANGELOG.md)
- [Commits](https://github.com/eslint/eslint/commits/v9.15.0/packages/js)

---
updated-dependencies:
- dependency-name: "@eslint/js"
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>

* build(deps-dev): bump globals from 15.11.0 to 15.12.0 in /client

Bumps [globals](https://github.com/sindresorhus/globals) from 15.11.0 to 15.12.0.
- [Release notes](https://github.com/sindresorhus/globals/releases)
- [Commits](https://github.com/sindresorhus/globals/compare/v15.11.0...v15.12.0)

---
updated-dependencies:
- dependency-name: globals
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>

* build(deps): bump react-i18next from 15.0.3 to 15.1.1 in /client

Bumps [react-i18next](https://github.com/i18next/react-i18next) from 15.0.3 to 15.1.1.
- [Changelog](https://github.com/i18next/react-i18next/blob/master/CHANGELOG.md)
- [Commits](https://github.com/i18next/react-i18next/compare/v15.0.3...v15.1.1)

---
updated-dependencies:
- dependency-name: react-i18next
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>

* build(deps): bump @types/node from 22.7.9 to 22.9.1 in /client

Bumps [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node) from 22.7.9 to 22.9.1.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/node)

---
updated-dependencies:
- dependency-name: "@types/node"
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-11-22 09:46:54 -03:00
01ce402f51 feat: combine frontend prs (#168)
* fix: upgrade @types/node from 22.7.6 to 22.7.9

Snyk has created this PR to upgrade @types/node from 22.7.6 to 22.7.9.

See this package in npm:
@types/node

See this project in Snyk:
https://app.snyk.io/org/ricardocampos-dcn/project/4d31651d-a849-4b8a-83a3-f8aaba677c53?utm_source=github&utm_medium=referral&page=upgrade-pr

* fix: upgrade vite from 5.4.8 to 5.4.10

Snyk has created this PR to upgrade vite from 5.4.8 to 5.4.10.

See this package in npm:
vite

See this project in Snyk:
https://app.snyk.io/org/ricardocampos-dcn/project/4d31651d-a849-4b8a-83a3-f8aaba677c53?utm_source=github&utm_medium=referral&page=upgrade-pr

* fix: upgrade @types/jest from 29.5.13 to 29.5.14

Snyk has created this PR to upgrade @types/jest from 29.5.13 to 29.5.14.

See this package in npm:
@types/jest

See this project in Snyk:
https://app.snyk.io/org/ricardocampos-dcn/project/4d31651d-a849-4b8a-83a3-f8aaba677c53?utm_source=github&utm_medium=referral&page=upgrade-pr

* fix: upgrade @vitejs/plugin-react from 4.3.2 to 4.3.3

Snyk has created this PR to upgrade @vitejs/plugin-react from 4.3.2 to 4.3.3.

See this package in npm:
@vitejs/plugin-react

See this project in Snyk:
https://app.snyk.io/org/ricardocampos-dcn/project/4d31651d-a849-4b8a-83a3-f8aaba677c53?utm_source=github&utm_medium=referral&page=upgrade-pr

* fix: upgrade react-i18next from 15.0.3 to 15.1.0

Snyk has created this PR to upgrade react-i18next from 15.0.3 to 15.1.0.

See this package in npm:
react-i18next

See this project in Snyk:
https://app.snyk.io/org/ricardocampos-dcn/project/4d31651d-a849-4b8a-83a3-f8aaba677c53?utm_source=github&utm_medium=referral&page=upgrade-pr

---------

Co-authored-by: snyk-bot <snyk-bot@snyk.io>
2024-11-20 17:12:30 -03:00
rmcamposGitHubdependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
3cd4840f78 chore: combine client upgrades (#167)
* build(deps): bump i18next from 23.16.4 to 23.16.5 in /client

Bumps [i18next](https://github.com/i18next/i18next) from 23.16.4 to 23.16.5.
- [Release notes](https://github.com/i18next/i18next/releases)
- [Changelog](https://github.com/i18next/i18next/blob/master/CHANGELOG.md)
- [Commits](https://github.com/i18next/i18next/compare/v23.16.4...v23.16.5)

---
updated-dependencies:
- dependency-name: i18next
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

* build(deps): bump react-router-dom from 6.27.0 to 6.28.0 in /client

Bumps [react-router-dom](https://github.com/remix-run/react-router/tree/HEAD/packages/react-router-dom) from 6.27.0 to 6.28.0.
- [Release notes](https://github.com/remix-run/react-router/releases)
- [Changelog](https://github.com/remix-run/react-router/blob/main/packages/react-router-dom/CHANGELOG.md)
- [Commits](https://github.com/remix-run/react-router/commits/react-router-dom@6.28.0/packages/react-router-dom)

---
updated-dependencies:
- dependency-name: react-router-dom
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>

* build(deps-dev): bump typescript-eslint from 8.12.2 to 8.14.0 in /client

Bumps [typescript-eslint](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/typescript-eslint) from 8.12.2 to 8.14.0.
- [Release notes](https://github.com/typescript-eslint/typescript-eslint/releases)
- [Changelog](https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/typescript-eslint/CHANGELOG.md)
- [Commits](https://github.com/typescript-eslint/typescript-eslint/commits/v8.14.0/packages/typescript-eslint)

---
updated-dependencies:
- dependency-name: typescript-eslint
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>

* build(deps): bump vite from 5.4.8 to 5.4.11 in /client

Bumps [vite](https://github.com/vitejs/vite/tree/HEAD/packages/vite) from 5.4.8 to 5.4.11.
- [Release notes](https://github.com/vitejs/vite/releases)
- [Changelog](https://github.com/vitejs/vite/blob/v5.4.11/packages/vite/CHANGELOG.md)
- [Commits](https://github.com/vitejs/vite/commits/v5.4.11/packages/vite)

---
updated-dependencies:
- dependency-name: vite
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

* build(deps): bump @types/jest from 29.5.13 to 29.5.14 in /client

Bumps [@types/jest](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/jest) from 29.5.13 to 29.5.14.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/jest)

---
updated-dependencies:
- dependency-name: "@types/jest"
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-11-15 16:44:14 -03:00
rmcamposGitHubdependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
eb7b184de1 chore: combine server PRs (#166)
* build(deps): bump com.puppycrawl.tools:checkstyle in /server

Bumps [com.puppycrawl.tools:checkstyle](https://github.com/checkstyle/checkstyle) from 10.20.0 to 10.20.1.
- [Release notes](https://github.com/checkstyle/checkstyle/releases)
- [Commits](https://github.com/checkstyle/checkstyle/compare/checkstyle-10.20.0...checkstyle-10.20.1)

---
updated-dependencies:
- dependency-name: com.puppycrawl.tools:checkstyle
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

* build(deps): bump org.hibernate.orm.tooling:hibernate-enhance-maven-plugin

Bumps [org.hibernate.orm.tooling:hibernate-enhance-maven-plugin](https://github.com/hibernate/hibernate-orm) from 6.5.3.Final to 6.6.2.Final.
- [Release notes](https://github.com/hibernate/hibernate-orm/releases)
- [Changelog](https://github.com/hibernate/hibernate-orm/blob/6.6.2/changelog.txt)
- [Commits](https://github.com/hibernate/hibernate-orm/compare/6.5.3...6.6.2)

---
updated-dependencies:
- dependency-name: org.hibernate.orm.tooling:hibernate-enhance-maven-plugin
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>

* ci: add script to run with native pr

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-11-15 16:23:23 -03:00
rmcamposandGitHub 6bdd0d7c3c feat: Create user area and allow users to delete their account (#153)
* feat: create migration to update task table schema

issue #52

issue #57

* chore: fix docker compose and client package-lock file

* fix: wrong placeholder for email at the login page

issue #134

* fix: wrong placeholder for email at the register page

issue #134

* feat: update all forms to start as valid

* feat: create user area where he can manage data and language

issue #135

issue #130

issue #104

* chore: simplify back-end services

* feat: delete user data from server

issue #104

* test: add simple test case for login and register and fix footer
2024-11-10 17:10:14 -03:00
c5a0763e28 chore: updagre snyk packages (#152)
* fix: upgrade react-router-dom from 6.26.2 to 6.27.0

Snyk has created this PR to upgrade react-router-dom from 6.26.2 to 6.27.0.

See this package in npm:
react-router-dom

See this project in Snyk:
https://app.snyk.io/org/ricardocampos-dcn/project/4d31651d-a849-4b8a-83a3-f8aaba677c53?utm_source=github&utm_medium=referral&page=upgrade-pr

* fix: upgrade @types/node from 22.7.5 to 22.7.6

Snyk has created this PR to upgrade @types/node from 22.7.5 to 22.7.6.

See this package in npm:
@types/node

See this project in Snyk:
https://app.snyk.io/org/ricardocampos-dcn/project/4d31651d-a849-4b8a-83a3-f8aaba677c53?utm_source=github&utm_medium=referral&page=upgrade-pr

* fix: upgrade @types/jest from 29.5.12 to 29.5.13

Snyk has created this PR to upgrade @types/jest from 29.5.12 to 29.5.13.

See this package in npm:
@types/jest

See this project in Snyk:
https://app.snyk.io/org/ricardocampos-dcn/project/4d31651d-a849-4b8a-83a3-f8aaba677c53?utm_source=github&utm_medium=referral&page=upgrade-pr

* fix: upgrade i18next from 23.15.2 to 23.16.0

Snyk has created this PR to upgrade i18next from 23.15.2 to 23.16.0.

See this package in npm:
i18next

See this project in Snyk:
https://app.snyk.io/org/ricardocampos-dcn/project/4d31651d-a849-4b8a-83a3-f8aaba677c53?utm_source=github&utm_medium=referral&page=upgrade-pr

* fix: upgrade react-i18next from 15.0.2 to 15.0.3

Snyk has created this PR to upgrade react-i18next from 15.0.2 to 15.0.3.

See this package in npm:
react-i18next

See this project in Snyk:
https://app.snyk.io/org/ricardocampos-dcn/project/4d31651d-a849-4b8a-83a3-f8aaba677c53?utm_source=github&utm_medium=referral&page=upgrade-pr

---------

Co-authored-by: snyk-bot <snyk-bot@snyk.io>
2024-11-09 13:40:57 -03:00
rmcamposGitHubdependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
3c185eef4e feat: client versions bump (#151)
* build(deps): bump i18next from 23.15.2 to 23.16.4 in /client

Bumps [i18next](https://github.com/i18next/i18next) from 23.15.2 to 23.16.4.
- [Release notes](https://github.com/i18next/i18next/releases)
- [Changelog](https://github.com/i18next/i18next/blob/master/CHANGELOG.md)
- [Commits](https://github.com/i18next/i18next/compare/v23.15.2...v23.16.4)

---
updated-dependencies:
- dependency-name: i18next
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>

* build(deps): bump typescript from 5.6.2 to 5.6.3 in /client

Bumps [typescript](https://github.com/microsoft/TypeScript) from 5.6.2 to 5.6.3.
- [Release notes](https://github.com/microsoft/TypeScript/releases)
- [Changelog](https://github.com/microsoft/TypeScript/blob/main/azure-pipelines.release.yml)
- [Commits](https://github.com/microsoft/TypeScript/compare/v5.6.2...v5.6.3)

---
updated-dependencies:
- dependency-name: typescript
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

* build(deps-dev): bump @eslint/js from 9.13.0 to 9.14.0 in /client

Bumps [@eslint/js](https://github.com/eslint/eslint/tree/HEAD/packages/js) from 9.13.0 to 9.14.0.
- [Release notes](https://github.com/eslint/eslint/releases)
- [Changelog](https://github.com/eslint/eslint/blob/main/CHANGELOG.md)
- [Commits](https://github.com/eslint/eslint/commits/v9.14.0/packages/js)

---
updated-dependencies:
- dependency-name: "@eslint/js"
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>

* build(deps-dev): bump eslint from 9.13.0 to 9.14.0 in /client

Bumps [eslint](https://github.com/eslint/eslint) from 9.13.0 to 9.14.0.
- [Release notes](https://github.com/eslint/eslint/releases)
- [Changelog](https://github.com/eslint/eslint/blob/main/CHANGELOG.md)
- [Commits](https://github.com/eslint/eslint/compare/v9.13.0...v9.14.0)

---
updated-dependencies:
- dependency-name: eslint
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>

* build(deps-dev): bump @vitest/coverage-v8 from 2.1.1 to 2.1.4 in /client

Bumps [@vitest/coverage-v8](https://github.com/vitest-dev/vitest/tree/HEAD/packages/coverage-v8) from 2.1.1 to 2.1.4.
- [Release notes](https://github.com/vitest-dev/vitest/releases)
- [Commits](https://github.com/vitest-dev/vitest/commits/v2.1.4/packages/coverage-v8)

---
updated-dependencies:
- dependency-name: "@vitest/coverage-v8"
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

* chore: update to use npm ci instead of just install

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-11-07 13:13:09 -03:00
rmcamposGitHubdependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
66b206b29b feat server versions bump (#150)
* build(deps): bump org.apache.maven.plugins:maven-surefire-plugin

Bumps [org.apache.maven.plugins:maven-surefire-plugin](https://github.com/apache/maven-surefire) from 3.5.1 to 3.5.2.
- [Release notes](https://github.com/apache/maven-surefire/releases)
- [Commits](https://github.com/apache/maven-surefire/compare/surefire-3.5.1...surefire-3.5.2)

---
updated-dependencies:
- dependency-name: org.apache.maven.plugins:maven-surefire-plugin
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

* build(deps): bump org.apache.maven.plugins:maven-javadoc-plugin

Bumps [org.apache.maven.plugins:maven-javadoc-plugin](https://github.com/apache/maven-javadoc-plugin) from 3.10.1 to 3.11.1.
- [Release notes](https://github.com/apache/maven-javadoc-plugin/releases)
- [Commits](https://github.com/apache/maven-javadoc-plugin/compare/maven-javadoc-plugin-3.10.1...maven-javadoc-plugin-3.11.1)

---
updated-dependencies:
- dependency-name: org.apache.maven.plugins:maven-javadoc-plugin
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>

* build(deps): bump org.apache.maven.plugins:maven-failsafe-plugin

Bumps [org.apache.maven.plugins:maven-failsafe-plugin](https://github.com/apache/maven-surefire) from 3.5.1 to 3.5.2.
- [Release notes](https://github.com/apache/maven-surefire/releases)
- [Commits](https://github.com/apache/maven-surefire/compare/surefire-3.5.1...surefire-3.5.2)

---
updated-dependencies:
- dependency-name: org.apache.maven.plugins:maven-failsafe-plugin
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

* build(deps): bump com.puppycrawl.tools:checkstyle in /server

Bumps [com.puppycrawl.tools:checkstyle](https://github.com/checkstyle/checkstyle) from 10.19.0 to 10.20.0.
- [Release notes](https://github.com/checkstyle/checkstyle/releases)
- [Commits](https://github.com/checkstyle/checkstyle/compare/checkstyle-10.19.0...checkstyle-10.20.0)

---
updated-dependencies:
- dependency-name: com.puppycrawl.tools:checkstyle
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-11-07 12:01:58 -03:00
rmcamposandGitHub a8c7bffe9f chore: improve readme and automations (#133) 2024-11-01 20:57:43 -03:00
rmcamposandGitHub cc0a9c3de1 feat: Add Brazilian Portuguese and Spanish languages (#132)
* feat: add languages - wip

issue #90

based on article https://dev.to/franklin030601/building-a-multi-language-app-with-react-js-2och

* feat: translate landing, login and register pages

issue #90

* feat: translate all the external texts and messages

issue #90

* feat: add new automations scripts and remove old ones

* feat: add server build info on actuator health page

* feat: language handling for all external pages

issue #90

* feat: start translation at the home page - wip

issue #90

* feat: improve automation to run services on docker

* feat: more automations for the client this time

* feat: translate finished for the home page

issue #90

* feat: translate about page, header and footer

issue #90

* feat: translate task page

issue #90

* feat: translate notes

issue #90

* feat: increase token expiration to one week

* test: fix test cases

* ci: remove client docker image from workflow

* feat: improve reliability

* chore: reduce duplications

* feat: fix lint issues

thansk to https://dev.to/aolyang/eslint-9-flat-config-tutorial-2bm5

* fix: path when login or register
2024-11-01 15:25:57 -03:00
rmcamposGitHubdependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
b17e59a6b4 feat: server versions bump (#129)
* build(deps): bump com.puppycrawl.tools:checkstyle in /server

Bumps [com.puppycrawl.tools:checkstyle](https://github.com/checkstyle/checkstyle) from 10.18.2 to 10.19.0.
- [Release notes](https://github.com/checkstyle/checkstyle/releases)
- [Commits](https://github.com/checkstyle/checkstyle/compare/checkstyle-10.18.2...checkstyle-10.19.0)

---
updated-dependencies:
- dependency-name: com.puppycrawl.tools:checkstyle
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>

* build(deps): bump org.apache.maven.plugins:maven-checkstyle-plugin

Bumps [org.apache.maven.plugins:maven-checkstyle-plugin](https://github.com/apache/maven-checkstyle-plugin) from 3.5.0 to 3.6.0.
- [Commits](https://github.com/apache/maven-checkstyle-plugin/compare/maven-checkstyle-plugin-3.5.0...maven-checkstyle-plugin-3.6.0)

---
updated-dependencies:
- dependency-name: org.apache.maven.plugins:maven-checkstyle-plugin
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>

* build(deps): bump org.springframework.boot:spring-boot-starter-parent

Bumps [org.springframework.boot:spring-boot-starter-parent](https://github.com/spring-projects/spring-boot) from 3.3.4 to 3.3.5.
- [Release notes](https://github.com/spring-projects/spring-boot/releases)
- [Commits](https://github.com/spring-projects/spring-boot/compare/v3.3.4...v3.3.5)

---
updated-dependencies:
- dependency-name: org.springframework.boot:spring-boot-starter-parent
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

* feat: add backend version to all responses in a header

issue #105

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-10-29 18:55:24 -03:00
rmcamposandGitHub 2fabd67217 feat: fixes #120 #121 #122 #123 (#128) 2024-10-29 13:07:08 -03:00
dependabot[bot]andGitHub d1f3e8f782 build(deps-dev): bump eslint from 8.57.0 to 9.13.0 in /client (#117) 2024-10-29 15:55:54 +00:00
rmcamposandGitHub cdbe89684a Merge pull request #119 from ricardo-campos-org/feat/bump-client-versions
feat: bump client versions
2024-10-23 13:42:13 -03:00
Ricardo Campos d30448e5f5 Merge branch 'dependabot/npm_and_yarn/client/typescript-eslint/eslint-plugin-8.11.0' into feat/bump-client-versions 2024-10-23 13:07:42 -03:00
Ricardo Campos c649463bec Merge branch 'dependabot/npm_and_yarn/client/sass-1.80.3' into feat/bump-client-versions 2024-10-23 13:05:19 -03:00
Ricardo Campos e2d6ee25ed Merge branch 'dependabot/npm_and_yarn/client/types/react-18.3.11' into feat/bump-client-versions 2024-10-23 13:03:28 -03:00
dependabot[bot]andGitHub aec7683a9f build(deps-dev): bump @typescript-eslint/eslint-plugin in /client
Bumps [@typescript-eslint/eslint-plugin](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/eslint-plugin) from 8.4.0 to 8.11.0.
- [Release notes](https://github.com/typescript-eslint/typescript-eslint/releases)
- [Changelog](https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/eslint-plugin/CHANGELOG.md)
- [Commits](https://github.com/typescript-eslint/typescript-eslint/commits/v8.11.0/packages/eslint-plugin)

---
updated-dependencies:
- dependency-name: "@typescript-eslint/eslint-plugin"
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-10-21 23:46:20 +00:00
dependabot[bot]andGitHub 87faeb271f build(deps-dev): bump sass from 1.79.4 to 1.80.3 in /client
Bumps [sass](https://github.com/sass/dart-sass) from 1.79.4 to 1.80.3.
- [Release notes](https://github.com/sass/dart-sass/releases)
- [Changelog](https://github.com/sass/dart-sass/blob/main/CHANGELOG.md)
- [Commits](https://github.com/sass/dart-sass/compare/1.79.4...1.80.3)

---
updated-dependencies:
- dependency-name: sass
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-10-21 23:45:23 +00:00
dependabot[bot]andGitHub 442b84c3cc build(deps-dev): bump @types/react from 18.3.10 to 18.3.11 in /client
Bumps [@types/react](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/react) from 18.3.10 to 18.3.11.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/react)

---
updated-dependencies:
- dependency-name: "@types/react"
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-10-14 23:31:15 +00:00
dependabot[bot]andGitHub bf499926b8 build(deps): bump @types/react-dom from 18.3.0 to 18.3.1 in /client
Bumps [@types/react-dom](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/react-dom) from 18.3.0 to 18.3.1.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/react-dom)

---
updated-dependencies:
- dependency-name: "@types/react-dom"
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-10-14 23:31:00 +00:00
rmcamposandGitHub 14a00ea3a1 Merge pull request #110 from ricardo-campos-org/feat/56-login-and-registering-improvements
feat: login and registering improvements
2024-10-12 14:01:40 -03:00
rmcamposandGitHub 21a5d66aa3 Merge pull request #106 from ricardo-campos-org/fix/website-content-category
fix: website content category
2024-10-10 21:36:07 -03:00
Ricardo Campos 9990a0cfbd feat: fix backend validation for passwords and max attemps
issue #56
2024-10-10 21:35:29 -03:00
Ricardo Campos 0c7f990b0a feat: improve login with max attempt limit and better passwords
issue #56
2024-10-09 19:19:24 -03:00
Ricardo Campos 8810baf2e3 add nginx file template and fix reloading outside of the app
issue #89
2024-10-09 18:05:31 -03:00
Ricardo Campos 119add1544 Merge branch 'main' into fix/website-content-category 2024-10-09 17:47:22 -03:00
rmcamposandGitHub 46f8dacbb8 Merge pull request #108 from ricardo-campos-org/feat/54-sort-tasks-by-undone-first-then-done
feat: sort tasks by undone first then done
2024-10-09 14:22:27 -03:00
Ricardo Campos 878e0955c2 fix: npe when formatting 2024-10-09 12:27:18 -03:00
Ricardo Campos c2f570dd34 feat: remove lib and format manually
docs: add javadoc
2024-10-09 12:06:33 -03:00
Ricardo Campos 1eade5e53e feat: add all prettytime resources to config cloudnative 2024-10-09 10:55:26 -03:00
Ricardo Campos 172f3950c7 fix: attempt to fix locale issue again again again 2024-10-08 19:37:57 -03:00
Ricardo Campos c7ffe1b3fc fix: attempt to fix locale issue again again 2024-10-08 19:21:31 -03:00
Ricardo Campos f6a4554224 fix: attempt to fix locale issue again 2024-10-08 19:06:50 -03:00
Ricardo Campos c96d076174 fix: attempt to fix locale issue 2024-10-08 18:46:45 -03:00
Ricardo Campos 1905df6692 fix: locale settings for server 2024-10-08 18:11:34 -03:00
Ricardo Campos 7f9a798f95 chore: fix lint issues 2024-10-08 16:37:02 -03:00
Ricardo Campos 83602c5ba0 Merge branch 'main' into feat/54-sort-tasks-by-undone-first-then-done 2024-10-08 15:50:41 -03:00
rmcamposandGitHub c3d607b0bb Merge pull request #107 from ricardo-campos-org/feat/server-versions-bump
feat: server versions bump
2024-10-08 15:49:56 -03:00
Ricardo Campos 508788dbf2 feat: sort by undone first
feat: add time ago format for the last updated task time

issue #54
2024-10-08 15:48:51 -03:00
Ricardo Campos 424acbec73 Merge branch 'dependabot/maven/server/org.apache.maven.plugins-maven-failsafe-plugin-3.5.1' into feat/server-versions-bump 2024-10-08 13:55:32 -03:00
Ricardo Campos be9157e5c1 Merge branch 'dependabot/maven/server/org.apache.maven.plugins-maven-surefire-plugin-3.5.1' into feat/server-versions-bump 2024-10-08 13:55:18 -03:00
Ricardo Campos 0a45443756 Merge branch 'dependabot/maven/server/org.apache.maven.plugins-maven-javadoc-plugin-3.10.1' into feat/server-versions-bump 2024-10-08 13:55:01 -03:00
Ricardo Campos 44668d1c28 Merge branch 'main' into fix/website-content-category 2024-10-08 13:04:01 -03:00
dependabot[bot]andGitHub 52fcd589e9 build(deps): bump @testing-library/react from 16.0.0 to 16.0.1 in /client (#98) 2024-10-08 12:55:13 +00:00
dependabot[bot]andGitHub a77bd5c41b build(deps): bump @types/node from 22.7.0 to 22.7.5 in /client (#96) 2024-10-08 12:47:53 +00:00
dependabot[bot]andGitHub 94a064c81d build(deps): bump @vitejs/plugin-react from 4.3.1 to 4.3.2 in /client (#95) 2024-10-08 12:41:49 +00:00
dependabot[bot]andGitHub 418de8724a build(deps): bump SonarSource/sonarcloud-github-action from 3.0.0 to 3.1.0 (#93) 2024-10-08 12:36:25 +00:00
rmcamposandGitHub 893688e542 Merge pull request #94 from ricardo-campos-org/dependabot/npm_and_yarn/client/eslint-plugin-import-2.31.0
build(deps-dev): bump eslint-plugin-import from 2.29.1 to 2.31.0 in /client
2024-10-08 09:32:48 -03:00
rmcampos 4827540313 ci: tests ok, empty commit to trigger ci 2024-10-08 09:29:29 -03:00
rmcamposandGitHub f08508ff84 Merge pull request #92 from ricardo-campos-org/feat/91-display-error-from-backend-registering
fix: display actual message from backend
2024-10-08 08:27:30 -03:00
dependabot[bot]andGitHub e9d99e57d1 build(deps): bump org.apache.maven.plugins:maven-failsafe-plugin
Bumps [org.apache.maven.plugins:maven-failsafe-plugin](https://github.com/apache/maven-surefire) from 3.5.0 to 3.5.1.
- [Release notes](https://github.com/apache/maven-surefire/releases)
- [Commits](https://github.com/apache/maven-surefire/compare/surefire-3.5.0...surefire-3.5.1)

---
updated-dependencies:
- dependency-name: org.apache.maven.plugins:maven-failsafe-plugin
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-10-07 23:38:47 +00:00
dependabot[bot]andGitHub 51eeaaadd5 build(deps): bump org.apache.maven.plugins:maven-surefire-plugin
Bumps [org.apache.maven.plugins:maven-surefire-plugin](https://github.com/apache/maven-surefire) from 3.5.0 to 3.5.1.
- [Release notes](https://github.com/apache/maven-surefire/releases)
- [Commits](https://github.com/apache/maven-surefire/compare/surefire-3.5.0...surefire-3.5.1)

---
updated-dependencies:
- dependency-name: org.apache.maven.plugins:maven-surefire-plugin
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-10-07 23:38:44 +00:00
dependabot[bot]andGitHub 5010293781 build(deps): bump org.apache.maven.plugins:maven-javadoc-plugin
Bumps [org.apache.maven.plugins:maven-javadoc-plugin](https://github.com/apache/maven-javadoc-plugin) from 3.10.0 to 3.10.1.
- [Release notes](https://github.com/apache/maven-javadoc-plugin/releases)
- [Commits](https://github.com/apache/maven-javadoc-plugin/compare/maven-javadoc-plugin-3.10.0...maven-javadoc-plugin-3.10.1)

---
updated-dependencies:
- dependency-name: org.apache.maven.plugins:maven-javadoc-plugin
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-10-07 23:38:40 +00:00
dependabot[bot]andGitHub 21b7a34419 build(deps-dev): bump eslint-plugin-import in /client
Bumps [eslint-plugin-import](https://github.com/import-js/eslint-plugin-import) from 2.29.1 to 2.31.0.
- [Release notes](https://github.com/import-js/eslint-plugin-import/releases)
- [Changelog](https://github.com/import-js/eslint-plugin-import/blob/main/CHANGELOG.md)
- [Commits](https://github.com/import-js/eslint-plugin-import/compare/v2.29.1...v2.31.0)

---
updated-dependencies:
- dependency-name: eslint-plugin-import
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-10-07 23:35:57 +00:00
Ricardo Campos f063c48675 ci: add upload action to save the zip 2024-10-07 18:52:43 -03:00
Ricardo Campos 3da256e177 ci: fix dist client location for zipping 2024-10-07 18:38:21 -03:00
Ricardo Campos bb11dd25a9 ci: add zip action to build and zip client 2024-10-07 18:32:39 -03:00
Ricardo Campos cb079d5a68 fix: display actual message from backend
issue #91
2024-10-07 18:04:15 -03:00
Ricardo Campos f988e76603 feat: improve meta tags 2024-10-07 11:34:33 -03:00
rmcamposandGitHub 766ded4d37 Merge pull request #88 from ricardo-campos-org/fix/87-list-of-bugs-in-the-frontend
fix: list of bugs in the frontend
2024-10-06 19:12:57 -03:00
rmcampos e56e072276 test: fix test case for the home controller test 2024-10-06 18:57:01 -03:00
rmcampos 9a8f73e4d5 feat: improve about page, fix home summary adding notes count
issue #87
2024-10-06 18:52:15 -03:00
rmcampos a68d9e650f test: fix test cases and lint issues 2024-10-06 17:58:44 -03:00
rmcampos fbcf056efa Merge branch 'fix/87-list-of-bugs-in-the-frontend' of github.com:ricardo-campos-org/react-typescript-todolist into fix/87-list-of-bugs-in-the-frontend 2024-10-06 15:39:28 -03:00
rmcampos 2f580e5940 feat: improve styling, add background, fix primary color and notifications
issue #87
2024-10-06 15:39:08 -03:00
rmcampos 0a9939c934 feat: improve styling, add background, fix primary color and notifications
issue #66
2024-10-06 15:38:34 -03:00
rmcamposandGitHub f3c7142e67 Merge pull request #86 from ricardo-campos-org/fix/backend-digitalocean
feat: enable security on backend for digitalocean
2024-10-06 14:09:22 -03:00
rmcampos 0974cc00b9 ci: fix pr workflow file 2024-10-06 14:06:46 -03:00
rmcampos a689b7e896 feat: improve workflows and remove console log 2024-10-06 14:05:46 -03:00
rmcampos c83a8cfbdc fix: disable csrf for testing 2024-10-05 19:57:41 -03:00
rmcampos 2797256e2c fix: csrf token filter handler - attemp #2 2024-10-05 19:45:55 -03:00
rmcampos 1d10c16b9a fix: csrf token filter handler 2024-10-05 19:23:47 -03:00
rmcampos 310d666907 feat: another attempt to fix backend cors 2024-10-05 14:58:48 -03:00
Ricardo Campos 025742359b chore: get back changes 2024-10-04 12:41:06 -03:00
rmcamposandGitHub d661d445ce Update application.properties 2024-10-04 12:02:23 -03:00
rmcampos 36f998cf4b feat: enable security on backend for digitalocean 2024-10-03 21:55:22 -03:00
rmcamposandGitHub a9e7fa35a5 Merge pull request #83 from ricardo-campos-org/dependabot/maven/server/com.puppycrawl.tools-checkstyle-10.18.2
build(deps): bump com.puppycrawl.tools:checkstyle from 10.18.1 to 10.18.2 in /server
2024-10-03 10:51:05 -03:00
Ricardo Campos 02d0d1e193 Merge branch 'main' into dependabot/maven/server/com.puppycrawl.tools-checkstyle-10.18.2 2024-10-03 10:28:22 -03:00
rmcamposandGitHub e4cf3870d1 Merge pull request #84 from ricardo-campos-org/chore/client-new-versions
chore: client new versions
2024-10-03 10:27:00 -03:00
Ricardo Campos 088025f03e Revert "Merge branch 'dependabot/npm_and_yarn/client/eslint-9.11.1' into chore/client-new-versions"
This reverts commit 18c830869c, reversing
changes made to d5aae0d1b0.
2024-10-03 10:12:31 -03:00
Ricardo Campos b1cf250c7a Merge branch 'dependabot/npm_and_yarn/client/vite-5.4.8' into chore/client-new-versions 2024-10-03 09:56:28 -03:00
Ricardo Campos fd95294581 Merge branch 'dependabot/npm_and_yarn/client/types/react-18.3.10' into chore/client-new-versions 2024-10-03 09:56:10 -03:00
Ricardo Campos 332ca2613c Merge branch 'dependabot/npm_and_yarn/client/sass-1.79.4' into chore/client-new-versions 2024-10-03 09:54:33 -03:00
Ricardo Campos d8b43188f5 Merge branch 'dependabot/npm_and_yarn/client/react-bootstrap-2.10.5' into chore/client-new-versions 2024-10-03 09:54:13 -03:00
Ricardo Campos 18c830869c Merge branch 'dependabot/npm_and_yarn/client/eslint-9.11.1' into chore/client-new-versions 2024-10-03 09:53:37 -03:00
dependabot[bot]andGitHub 403a64f6f0 build(deps): bump com.puppycrawl.tools:checkstyle in /server
Bumps [com.puppycrawl.tools:checkstyle](https://github.com/checkstyle/checkstyle) from 10.18.1 to 10.18.2.
- [Release notes](https://github.com/checkstyle/checkstyle/releases)
- [Commits](https://github.com/checkstyle/checkstyle/compare/checkstyle-10.18.1...checkstyle-10.18.2)

---
updated-dependencies:
- dependency-name: com.puppycrawl.tools:checkstyle
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-10-01 00:08:43 +00:00
rmcamposandGitHub d5aae0d1b0 Merge pull request #58 from ricardo-campos-org/dependabot/maven/java-api/org.springframework.boot-spring-boot-starter-parent-3.3.4
build(deps): bump org.springframework.boot:spring-boot-starter-parent from 3.3.3 to 3.3.4 in /java-api
2024-09-29 12:38:04 -03:00
rmcampos 5b06f48268 feat: adjust hibernate to spring boot version 2024-09-29 12:28:58 -03:00
rmcampos c2603e07e1 Merge branch 'main' into dependabot/maven/java-api/org.springframework.boot-spring-boot-starter-parent-3.3.4 2024-09-29 12:02:13 -03:00
dependabot[bot]andGitHub 95883ad330 build(deps): bump vite from 5.4.6 to 5.4.8 in /client
Bumps [vite](https://github.com/vitejs/vite/tree/HEAD/packages/vite) from 5.4.6 to 5.4.8.
- [Release notes](https://github.com/vitejs/vite/releases)
- [Changelog](https://github.com/vitejs/vite/blob/v5.4.8/packages/vite/CHANGELOG.md)
- [Commits](https://github.com/vitejs/vite/commits/v5.4.8/packages/vite)

---
updated-dependencies:
- dependency-name: vite
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-09-29 00:17:37 +00:00
dependabot[bot]andGitHub b7878c609d build(deps-dev): bump @types/react from 18.3.5 to 18.3.10 in /client
Bumps [@types/react](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/react) from 18.3.5 to 18.3.10.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/react)

---
updated-dependencies:
- dependency-name: "@types/react"
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-09-29 00:17:27 +00:00
dependabot[bot]andGitHub ea66930da2 build(deps-dev): bump sass from 1.77.8 to 1.79.4 in /client
Bumps [sass](https://github.com/sass/dart-sass) from 1.77.8 to 1.79.4.
- [Release notes](https://github.com/sass/dart-sass/releases)
- [Changelog](https://github.com/sass/dart-sass/blob/main/CHANGELOG.md)
- [Commits](https://github.com/sass/dart-sass/compare/1.77.8...1.79.4)

---
updated-dependencies:
- dependency-name: sass
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-09-29 00:17:21 +00:00
dependabot[bot]andGitHub 77f828d0aa build(deps): bump react-bootstrap from 2.10.4 to 2.10.5 in /client
Bumps [react-bootstrap](https://github.com/react-bootstrap/react-bootstrap) from 2.10.4 to 2.10.5.
- [Release notes](https://github.com/react-bootstrap/react-bootstrap/releases)
- [Changelog](https://github.com/react-bootstrap/react-bootstrap/blob/master/CHANGELOG.md)
- [Commits](https://github.com/react-bootstrap/react-bootstrap/compare/v2.10.4...v2.10.5)

---
updated-dependencies:
- dependency-name: react-bootstrap
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-09-29 00:17:14 +00:00
dependabot[bot]andGitHub 7662144cbf build(deps-dev): bump eslint from 8.57.0 to 9.11.1 in /client
Bumps [eslint](https://github.com/eslint/eslint) from 8.57.0 to 9.11.1.
- [Release notes](https://github.com/eslint/eslint/releases)
- [Changelog](https://github.com/eslint/eslint/blob/main/CHANGELOG.md)
- [Commits](https://github.com/eslint/eslint/compare/v8.57.0...v9.11.1)

---
updated-dependencies:
- dependency-name: eslint
  dependency-type: direct:development
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-09-29 00:17:08 +00:00
rmcamposandGitHub a2a0b2f288 Merge pull request #70 from ricardo-campos-org/fix/69-handle-csrf
fix: handle CSRF gracefully
2024-09-28 21:15:53 -03:00
rmcampos 1f816dd88c feat: fix cloud native image running graalvm 2024-09-28 21:07:22 -03:00
rmcampos a02c1ecede chore: fix lint issues 2024-09-28 16:06:46 -03:00
Ricardo Campos 90e3d1799a fix: CSRF finally
issue #69
2024-09-27 18:58:08 -03:00
rmcampos e2e7cc2613 feat: rename packages 2024-09-27 11:02:48 -03:00
rmcampos 6eaadd814d feat: rename java-api to server 2024-09-27 09:03:48 -03:00
rmcamposandGitHub dc7981035c Merge pull request #68 from ricardo-campos-org/feat/65-fix-env-file-with-server-address
fix env file with server address and error handling in the backend
2024-09-26 21:44:45 -03:00
rmcampos 96ca92a2d0 chore: fix lint issues 2024-09-26 21:31:11 -03:00
rmcampos 7a60eaa6e4 fix: env file not being loaded into caddy and client. Issue 65
fix: handle refresh token on backend. Issue #53
2024-09-26 21:27:04 -03:00
Ricardo Campos 521c28aec6 feat: add server address into env vars on caddy
issue #65
2024-09-26 19:06:14 -03:00
rmcamposandGitHub 6c56f408bf Merge pull request #67 from ricardo-campos-org/feat/dependabot-versions-bump
feat: dependabot versions bump
2024-09-26 18:23:51 -03:00
Ricardo Campos a89c8960ea Merge branch 'dependabot/npm_and_yarn/client/typescript-5.6.2' into feat/dependabot-versions-bump 2024-09-26 18:11:59 -03:00
Ricardo Campos ebfd94d1d6 Merge branch 'dependabot/npm_and_yarn/client/react-router-dom-6.26.2' into feat/dependabot-versions-bump 2024-09-26 18:10:47 -03:00
Ricardo Campos c670f6a205 Merge branch 'dependabot/npm_and_yarn/client/eslint-plugin-react-7.36.1' into feat/dependabot-versions-bump 2024-09-26 18:10:32 -03:00
Ricardo Campos 92fa8e183b Merge branch 'dependabot/npm_and_yarn/client/vitest/coverage-v8-2.1.1' into feat/dependabot-versions-bump 2024-09-26 18:10:15 -03:00
Ricardo Campos ff3d1b7b1e Merge branch 'dependabot/npm_and_yarn/client/types/node-22.7.0' into feat/dependabot-versions-bump 2024-09-26 18:09:55 -03:00
rmcamposandGitHub 0c08cffdf9 Merge pull request #55 from ricardo-campos-org/dependabot/npm_and_yarn/client/rollup-4.22.4
build(deps): bump rollup from 4.21.0 to 4.22.4 in /client
2024-09-25 15:03:23 -03:00
Ricardo Campos ee603b8059 ci: empty commit to trigger ci 2024-09-25 14:38:49 -03:00
dependabot[bot]andGitHub cc280f515c build(deps): bump typescript from 5.5.4 to 5.6.2 in /client
Bumps [typescript](https://github.com/microsoft/TypeScript) from 5.5.4 to 5.6.2.
- [Release notes](https://github.com/microsoft/TypeScript/releases)
- [Changelog](https://github.com/microsoft/TypeScript/blob/main/azure-pipelines.release.yml)
- [Commits](https://github.com/microsoft/TypeScript/compare/v5.5.4...v5.6.2)

---
updated-dependencies:
- dependency-name: typescript
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-09-25 17:02:30 +00:00
dependabot[bot]andGitHub 986667042b build(deps): bump react-router-dom from 6.26.1 to 6.26.2 in /client
Bumps [react-router-dom](https://github.com/remix-run/react-router/tree/HEAD/packages/react-router-dom) from 6.26.1 to 6.26.2.
- [Release notes](https://github.com/remix-run/react-router/releases)
- [Changelog](https://github.com/remix-run/react-router/blob/main/packages/react-router-dom/CHANGELOG.md)
- [Commits](https://github.com/remix-run/react-router/commits/react-router-dom@6.26.2/packages/react-router-dom)

---
updated-dependencies:
- dependency-name: react-router-dom
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-09-25 17:02:22 +00:00
dependabot[bot]andGitHub 9ae34f5046 build(deps-dev): bump eslint-plugin-react in /client
Bumps [eslint-plugin-react](https://github.com/jsx-eslint/eslint-plugin-react) from 7.35.0 to 7.36.1.
- [Release notes](https://github.com/jsx-eslint/eslint-plugin-react/releases)
- [Changelog](https://github.com/jsx-eslint/eslint-plugin-react/blob/master/CHANGELOG.md)
- [Commits](https://github.com/jsx-eslint/eslint-plugin-react/compare/v7.35.0...v7.36.1)

---
updated-dependencies:
- dependency-name: eslint-plugin-react
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-09-25 17:02:15 +00:00
dependabot[bot]andGitHub c940019620 build(deps-dev): bump @vitest/coverage-v8 from 2.0.5 to 2.1.1 in /client
Bumps [@vitest/coverage-v8](https://github.com/vitest-dev/vitest/tree/HEAD/packages/coverage-v8) from 2.0.5 to 2.1.1.
- [Release notes](https://github.com/vitest-dev/vitest/releases)
- [Commits](https://github.com/vitest-dev/vitest/commits/v2.1.1/packages/coverage-v8)

---
updated-dependencies:
- dependency-name: "@vitest/coverage-v8"
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-09-25 17:02:09 +00:00
dependabot[bot]andGitHub 42b235b01d build(deps): bump @types/node from 22.5.2 to 22.7.0 in /client
Bumps [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node) from 22.5.2 to 22.7.0.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/node)

---
updated-dependencies:
- dependency-name: "@types/node"
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-09-25 17:01:59 +00:00
dependabot[bot]andGitHub 4ad665de22 build(deps): bump org.springframework.boot:spring-boot-starter-parent
Bumps [org.springframework.boot:spring-boot-starter-parent](https://github.com/spring-projects/spring-boot) from 3.3.3 to 3.3.4.
- [Release notes](https://github.com/spring-projects/spring-boot/releases)
- [Commits](https://github.com/spring-projects/spring-boot/compare/v3.3.3...v3.3.4)

---
updated-dependencies:
- dependency-name: org.springframework.boot:spring-boot-starter-parent
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-09-25 17:01:49 +00:00
rmcamposandGitHub f22bfa10ae Merge pull request #50 from ricardo-campos-org/feat/46-task-management-api
feat: task management api
2024-09-25 14:01:05 -03:00
Ricardo Campos 334baf5897 fix: docker build name 2024-09-25 11:23:30 -03:00
Ricardo Campos 5b81f5bfab ci: fix wrong syntax yml pr workflow file 2024-09-25 11:11:55 -03:00
Ricardo Campos c252cb5db0 ci: fix wrong syntax yml workflow files 2024-09-25 11:10:21 -03:00
Ricardo Campos 32465a6a03 ci: enable dependabot updated for server api 2024-09-25 11:09:08 -03:00
Ricardo Campos d64dbc90fe ci: enable tests passing for now - sorry 2024-09-25 11:07:30 -03:00
Ricardo Campos ff05b152b7 test: add home controller test case
issue #46
2024-09-25 11:05:34 -03:00
Ricardo Campos a48e22916f test: fix exclusions and add auth sign-up test cases
issue #46
2024-09-25 10:29:22 -03:00
Ricardo Campos c730f1adc5 test: add sign-up controller test
issue #46
2024-09-25 10:16:06 -03:00
rmcampos 15ac501dd4 test: add auth controller unit test 2024-09-25 09:12:50 -03:00
Ricardo Campos 3035bf8fa6 test: add frontend tests
issue #46
2024-09-24 12:08:13 -03:00
Ricardo Campos 32bb45772b chore: delete used files 2024-09-24 12:07:55 -03:00
Ricardo Campos c81517d080 feat: improve docker compose file 2024-09-24 12:07:37 -03:00
dependabot[bot]andGitHub 93a921dc8b build(deps): bump rollup from 4.21.0 to 4.22.4 in /client
Bumps [rollup](https://github.com/rollup/rollup) from 4.21.0 to 4.22.4.
- [Release notes](https://github.com/rollup/rollup/releases)
- [Changelog](https://github.com/rollup/rollup/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rollup/rollup/compare/v4.21.0...v4.22.4)

---
updated-dependencies:
- dependency-name: rollup
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-09-24 04:19:24 +00:00
rmcampos 519e5a42a2 chore: fix jwt token issue 2024-09-23 09:16:35 -03:00
rmcampos f0185058be chore: remove duplications on delete request 2024-09-23 09:02:38 -03:00
rmcampos 0114c2d7d1 feat: add backend dockerfile and cloud native config 2024-09-22 17:42:02 -03:00
rmcampos b7920c622c chore: refactor to remove duplication - post requests
issue #46

From now on, only a single postJSON function will be used to call the backend api. No more duplications
2024-09-21 18:20:30 -03:00
rmcampos d19677ad14 chore: refactor to remove duplication - patch requests
issue #46

From now on, only a single patchJSON function will be used to call the backend api. No more duplications
2024-09-21 18:10:52 -03:00
rmcampos 1b7d32b27d chore: refactor to remove duplication
issue #46

From now on, only a single getJSON function will be used to call the backend api. No more duplications
2024-09-21 17:42:55 -03:00
Ricardo Campos 1c7576109e feat: search ok
issue #46
2024-09-20 19:32:05 -03:00
Ricardo Campos 081efbcf12 chore: fix client and java-rest api 2024-09-20 18:54:51 -03:00
Ricardo Campos f5ce187816 chore: fix lint issues, build issue, and a bit of refactoring
issue #46
2024-09-20 18:50:00 -03:00
Ricardo Campos 2e504972a0 chore: fix build issue 2024-09-20 18:01:53 -03:00
Ricardo Campos 6943f99346 feat: add save edit and delete notes
issue #46
2024-09-20 17:30:23 -03:00
Ricardo Campos 137f764540 feat: add notes client frontend
issue #46
2024-09-20 13:41:04 -03:00
Ricardo Campos aeff426065 feat: add notes api
issue #46
2024-09-20 13:24:11 -03:00
Ricardo Campos 28f699138a Merge branch 'main' into feat/46-task-management-api 2024-09-20 11:52:33 -03:00
rmcamposandGitHub 1129e5a1c6 Merge pull request #49 from ricardo-campos-org/ci/sonar-cloud-integration
add sonar to main workflow
2024-09-20 11:49:03 -03:00
Ricardo Campos 23cc2ab7a3 ci: add sonar to the same test coverage workflow 2024-09-20 11:45:11 -03:00
Ricardo Campos 421123c57d ci: fix test and workflows 2024-09-20 11:42:15 -03:00
Ricardo Campos 204c5142b8 ci: fix sonar exclusion 2024-09-20 11:23:31 -03:00
Ricardo Campos 911fb7ccb2 ci: delete ci, not needed and another attempt to fix sonar analysis 2024-09-20 10:44:57 -03:00
Ricardo Campos bf35432562 ci: exclude mocks files from sonar 2024-09-20 10:39:23 -03:00
Ricardo Campos ff05563ce2 ci: exclude setup tests ts file from sonar 2024-09-20 10:36:15 -03:00
Ricardo Campos d46befedd5 ci: fix test directory 2024-09-20 10:29:12 -03:00
Ricardo Campos 4171192d1e test: add basic test case and setup coverage 2024-09-20 10:27:16 -03:00
Ricardo Campos 160432c517 ci: fix action version 2024-09-20 10:11:00 -03:00
rmcamposandGitHub 4229a43698 Update pr.yml 2024-09-20 08:58:12 -03:00
rmcamposandGitHub 63f2a8d895 add sonar-project.properties file 2024-09-20 08:52:13 -03:00
rmcamposandGitHub cc8aa20544 add sonar to PR workflow 2024-09-20 08:50:40 -03:00
Ricardo CamposandGitHub 389d3679d1 add sonar to main workflow 2024-09-20 08:46:16 -03:00
Ricardo Campos 539bd327c2 feat: home summary and search wip
issue #46
2024-09-19 21:16:06 -03:00
Ricardo Campos e98f095704 task crud finished
issue #46
2024-09-19 20:16:50 -03:00
Ricardo Campos e79198153e feat: error handling when login in
issue #46
2024-09-19 15:33:52 -03:00
Ricardo Campos aa0a7875b0 feat: login and register ok
issue #46
2024-09-19 15:13:10 -03:00
Ricardo Campos c21d7876a5 feat: login and routes finally ok
issue #46
2024-09-19 12:10:55 -03:00
Ricardo Campos bfc311f7e3 feat: add real login - wip
issue #46
2024-09-19 10:49:16 -03:00
Ricardo Campos 50f1a6b780 feat: add cors config and refresh token api
issue #46
2024-09-19 10:48:49 -03:00
Ricardo Campos 79ccf2317b feat: delete task done, list users for admins done
issue #46
2024-09-18 15:31:44 -03:00
Ricardo Campos 380429c7a0 feat: delete task ok
issue #46
2024-09-18 13:50:38 -03:00
Ricardo Campos cdc3d0dfa3 Merge branch 'main' into feat/46-task-management-api 2024-09-18 13:28:35 -03:00
dependabot[bot]andGitHub 3057a2af23 build(deps): bump vite from 5.4.2 to 5.4.6 in /client (#48) 2024-09-18 16:24:12 +00:00
Ricardo Campos 814f26da49 test: add application properties file for test
issue #46
2024-09-18 13:11:16 -03:00
Ricardo Campos d0d441f67a ci: add java rest api build and test to workflows
issue #44
2024-09-18 11:50:27 -03:00
Ricardo Campos 5aac9c43d6 docs: add open api docs and javadoc
issue #46
2024-09-18 11:45:20 -03:00
Ricardo Campos 0bdb68c7e2 feat: patch tasks done
issue #46
2024-09-18 10:57:51 -03:00
Ricardo Campos 67940048fe feat: create task done
issue #46
2024-09-18 10:07:27 -03:00
Ricardo Campos 13ef1b63c9 feat: task crud - wip
issue #46
2024-09-14 17:59:57 -03:00
Ricardo CamposandGitHub c039d5f755 Merge pull request #47 from ricardo-campos-org/feat/33-from-docker-to-github-registry
feat: change to ghcr
2024-09-12 21:50:14 -03:00
Ricardo Campos 95aa8aa896 ci: fix build tag
issue #33
2024-09-12 21:48:00 -03:00
Ricardo Campos ba17ab2100 ci: fix context client build
issue #33
2024-09-12 21:38:43 -03:00
Ricardo Campos dbb8fe0496 chore: fix lint issues
issue #33
2024-09-12 21:36:10 -03:00
Ricardo Campos 50bb9ef5db feat: change to ghcr -m issue 2024-09-12 21:31:41 -03:00
Ricardo CamposandGitHub 7b94eccfaf Merge pull request #45 from ricardo-campos-org/feat/43-setup-and-authentication
feat: setup and authentication
2024-09-05 17:40:24 -03:00
Ricardo Campos 374c61dcd5 ci: fix ci and cd workflows 2024-09-05 17:38:35 -03:00
Ricardo Campos 48d2a728fc feat: add authentication and authorization
issue #43
2024-09-05 17:27:34 -03:00
Ricardo Campos e44b2ba82e chore: delete unused file 2024-09-04 16:48:28 -03:00
Ricardo Campos e45457bc14 feat: add backend, move client to a separate folder
issue #43
2024-09-04 16:47:27 -03:00
dependabot[bot]andGitHub 0ad99b6883 build(deps): bump @testing-library/jest-dom from 5.16.5 to 6.5.0 (#42) 2024-09-04 12:56:20 +00:00
dependabot[bot]andGitHub e944af612c build(deps-dev): bump @typescript-eslint/eslint-plugin from 8.3.0 to 8.4.0 (#41) 2024-09-04 12:52:49 +00:00
dependabot[bot]andGitHub 5bcb2906c1 build(deps): bump @types/node from 22.5.0 to 22.5.2 (#40) 2024-09-04 12:48:33 +00:00
dependabot[bot]andGitHub 26e2103fb4 build(deps-dev): bump @types/react from 18.3.4 to 18.3.5 (#39) 2024-09-04 12:41:37 +00:00
dependabot[bot]andGitHub cba0701e58 build(deps-dev): bump jsdom from 24.1.1 to 25.0.0 (#38) 2024-08-28 20:02:20 +00:00
dependabot[bot]andGitHub f0a5fd299d build(deps): bump typescript from 4.8.4 to 5.5.4 (#37) 2024-08-28 19:58:25 +00:00
dependabot[bot]andGitHub c8352b7456 build(deps-dev): bump @typescript-eslint/eslint-plugin (#36) 2024-08-28 19:55:42 +00:00
dependabot[bot]andGitHub d88c8d748d build(deps): bump @testing-library/user-event from 13.5.0 to 14.5.2 (#35) 2024-08-28 19:51:56 +00:00
Ricardo CamposandGitHub 16a8386eba Merge pull request #32 from ricardo-campos-org/feat/31-define-functions-and-screens
feat: define functions and screens
2024-08-26 10:29:15 -03:00
Ricardo Campos 3b27f00d29 fix: build issue with bootstrp type dependency 2024-08-26 10:21:26 -03:00
Ricardo Campos 4899810744 chore: fix lint issues 2024-08-26 10:03:11 -03:00
Ricardo Campos abaa45bc66 feat: fix login issue and add env file
issue #31
2024-08-25 20:12:03 -03:00
Ricardo Campos 6bcf8ec1a9 feat: add a lof of things, see issue #31 2024-08-25 19:30:13 -03:00
Ricardo CamposandGitHub 401e728db4 Merge pull request #30 from ricardo-campos-org/feat/25-fix-main-workflow
ci: fix main workflow
2024-08-25 14:59:42 -03:00
Ricardo Campos 85ec74b7ca chore: improve package json with description 2024-08-25 14:56:15 -03:00
Ricardo Campos 6bdcc26b8c feat: add dockerfile and docker compose
issue #29
2024-08-25 14:47:10 -03:00
Ricardo Campos 7b8b49420b ci: fix main workflow
issue #25
2024-08-25 14:00:05 -03:00
Ricardo CamposandGitHub 748ac748a9 Merge pull request #28 from ricardo-campos-org/dependabot/npm_and_yarn/micromatch-4.0.8
build(deps): bump micromatch from 4.0.5 to 4.0.8
2024-08-24 17:40:24 -03:00
dependabot[bot]andGitHub 280ed20ca8 build(deps): bump micromatch from 4.0.5 to 4.0.8
Bumps [micromatch](https://github.com/micromatch/micromatch) from 4.0.5 to 4.0.8.
- [Release notes](https://github.com/micromatch/micromatch/releases)
- [Changelog](https://github.com/micromatch/micromatch/blob/4.0.8/CHANGELOG.md)
- [Commits](https://github.com/micromatch/micromatch/compare/4.0.5...4.0.8)

---
updated-dependencies:
- dependency-name: micromatch
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-08-24 20:39:41 +00:00
Ricardo CamposandGitHub 97143dea9b Merge pull request #27 from ricardo-campos-org/feat/26-improve-repository
feat: improve repository fixing lots of issues
2024-08-24 17:38:44 -03:00
Ricardo Campos e0c19b2a4d chore: fix build issue 2024-08-24 17:36:36 -03:00
Ricardo Campos d83874e2c0 ci: add lint to CI workflow
issue #11
2024-08-24 17:20:10 -03:00
Ricardo Campos 5c1b1bc7ae chore: fix lint ussues 2024-08-24 17:19:40 -03:00
Ricardo Campos 9f077e5756 feat: add eslint and scripts
issue #11
2024-08-24 16:57:30 -03:00
Ricardo Campos ccc6bc99c0 feat: replace CRA by vite and add vitest
issue #9
2024-08-24 16:56:40 -03:00
Ricardo Campos c46fe2bc3c feat: improve readme, add issue template and add PR template
issue #26
2024-08-24 16:53:40 -03:00
Ricardo CamposandGitHub 6ebf5939f5 Merge pull request #24 from ricardo-campos-org/ci/fix-ci-and-main-workflows
ci: fix ci and main workflows
2024-08-22 15:58:20 -03:00
Ricardo Campos 7f0cf5a1fc ci: fix ci and main workflows 2024-08-22 15:55:57 -03:00
Ricardo CamposandGitHub 0a3ad7744e Merge pull request #23 from ricardo-campos-org/dependabot/npm_and_yarn/multi-7f0e0a7f19
build(deps): bump minimatch and recursive-readdir
2024-08-22 15:54:42 -03:00
Ricardo CamposandGitHub 952a755919 Merge pull request #15 from ricardo-campos-org/dependabot/npm_and_yarn/types/node-22.5.0
build(deps): bump @types/node from 16.11.62 to 22.5.0
2024-08-22 15:53:52 -03:00
dependabot[bot]andGitHub e5fb72fff3 build(deps): bump minimatch and recursive-readdir
Bumps [minimatch](https://github.com/isaacs/minimatch) and [recursive-readdir](https://github.com/jergason/recursive-readdir). These dependencies needed to be updated together.

Updates `minimatch` from 3.0.4 to 3.1.2
- [Changelog](https://github.com/isaacs/minimatch/blob/main/changelog.md)
- [Commits](https://github.com/isaacs/minimatch/compare/v3.0.4...v3.1.2)

Updates `recursive-readdir` from 2.2.2 to 2.2.3
- [Changelog](https://github.com/jergason/recursive-readdir/blob/master/CHANGELOG.md)
- [Commits](https://github.com/jergason/recursive-readdir/commits/v2.2.3)

---
updated-dependencies:
- dependency-name: minimatch
  dependency-type: indirect
- dependency-name: recursive-readdir
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-08-22 18:53:12 +00:00
dependabot[bot]andGitHub f3951a806b build(deps): bump @types/node from 16.11.62 to 22.5.0
Bumps [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node) from 16.11.62 to 22.5.0.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/node)

---
updated-dependencies:
- dependency-name: "@types/node"
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-08-22 18:52:42 +00:00
Ricardo CamposandGitHub 50bc4f2d4f Merge pull request #22 from ricardo-campos-org/dependabot/npm_and_yarn/webpack-5.94.0
build(deps): bump webpack from 5.74.0 to 5.94.0
2024-08-22 15:52:24 -03:00
Ricardo CamposandGitHub 1ec7fb56c7 Merge pull request #21 from ricardo-campos-org/dependabot/npm_and_yarn/tough-cookie-4.1.4
build(deps): bump tough-cookie from 4.1.2 to 4.1.4
2024-08-22 15:52:11 -03:00
Ricardo CamposandGitHub d0e6dc6ad0 Merge pull request #20 from ricardo-campos-org/dependabot/npm_and_yarn/multi-4cbdc11141
build(deps): bump json5
2024-08-22 15:51:39 -03:00
Ricardo CamposandGitHub 296bacec5c Merge pull request #19 from ricardo-campos-org/dependabot/npm_and_yarn/multi-781d63ddae
build(deps): bump semver
2024-08-22 15:51:11 -03:00
Ricardo CamposandGitHub e684c820d3 Merge pull request #18 from ricardo-campos-org/dependabot/npm_and_yarn/word-wrap-1.2.5
build(deps): bump word-wrap from 1.2.3 to 1.2.5
2024-08-22 15:50:46 -03:00
Ricardo CamposandGitHub 2c85b8e133 Merge pull request #17 from ricardo-campos-org/dependabot/npm_and_yarn/multi-ec30208de6
build(deps): bump react-dom and @types/react-dom
2024-08-22 15:50:04 -03:00
dependabot[bot]andGitHub 2c658df13d build(deps): bump react-dom and @types/react-dom
Bumps [react-dom](https://github.com/facebook/react/tree/HEAD/packages/react-dom) and [@types/react-dom](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/react-dom). These dependencies needed to be updated together.

Updates `react-dom` from 18.2.0 to 18.3.1
- [Release notes](https://github.com/facebook/react/releases)
- [Changelog](https://github.com/facebook/react/blob/main/CHANGELOG.md)
- [Commits](https://github.com/facebook/react/commits/v18.3.1/packages/react-dom)

Updates `@types/react-dom` from 18.0.6 to 18.3.0
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/react-dom)

---
updated-dependencies:
- dependency-name: react-dom
  dependency-type: direct:production
  update-type: version-update:semver-minor
- dependency-name: "@types/react-dom"
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-08-22 18:48:51 +00:00
Ricardo CamposandGitHub 430266a360 Merge pull request #16 from ricardo-campos-org/dependabot/npm_and_yarn/testing-library/react-16.0.0
build(deps): bump @testing-library/react from 13.4.0 to 16.0.0
2024-08-22 15:48:30 -03:00
dependabot[bot]andGitHub be4044381c build(deps): bump webpack from 5.74.0 to 5.94.0
Bumps [webpack](https://github.com/webpack/webpack) from 5.74.0 to 5.94.0.
- [Release notes](https://github.com/webpack/webpack/releases)
- [Commits](https://github.com/webpack/webpack/compare/v5.74.0...v5.94.0)

---
updated-dependencies:
- dependency-name: webpack
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-08-22 18:48:10 +00:00
Ricardo CamposandGitHub 0747e9c395 Merge pull request #14 from ricardo-campos-org/dependabot/npm_and_yarn/types/jest-29.5.12
build(deps): bump @types/jest from 27.5.2 to 29.5.12
2024-08-22 15:48:01 -03:00
dependabot[bot]andGitHub f264c44b31 build(deps): bump json5
Bumps  and [json5](https://github.com/json5/json5). These dependencies needed to be updated together.

Updates `json5` from 2.2.1 to 2.2.3
- [Release notes](https://github.com/json5/json5/releases)
- [Changelog](https://github.com/json5/json5/blob/main/CHANGELOG.md)
- [Commits](https://github.com/json5/json5/compare/v2.2.1...v2.2.3)

Updates `json5` from 1.0.1 to 2.2.3
- [Release notes](https://github.com/json5/json5/releases)
- [Changelog](https://github.com/json5/json5/blob/main/CHANGELOG.md)
- [Commits](https://github.com/json5/json5/compare/v2.2.1...v2.2.3)

---
updated-dependencies:
- dependency-name: json5
  dependency-type: indirect
- dependency-name: json5
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-08-22 18:47:50 +00:00
dependabot[bot]andGitHub b189225f1f build(deps): bump tough-cookie from 4.1.2 to 4.1.4
Bumps [tough-cookie](https://github.com/salesforce/tough-cookie) from 4.1.2 to 4.1.4.
- [Release notes](https://github.com/salesforce/tough-cookie/releases)
- [Changelog](https://github.com/salesforce/tough-cookie/blob/master/CHANGELOG.md)
- [Commits](https://github.com/salesforce/tough-cookie/compare/v4.1.2...v4.1.4)

---
updated-dependencies:
- dependency-name: tough-cookie
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-08-22 18:47:48 +00:00
Ricardo CamposandGitHub 59ebde232a Merge pull request #13 from ricardo-campos-org/dependabot/npm_and_yarn/multi-1015d7eecf
build(deps): bump react and @types/react
2024-08-22 15:47:38 -03:00
dependabot[bot]andGitHub d405f60438 build(deps): bump semver
Bumps  and [semver](https://github.com/npm/node-semver). These dependencies needed to be updated together.

Updates `semver` from 6.3.0 to 7.6.3
- [Release notes](https://github.com/npm/node-semver/releases)
- [Changelog](https://github.com/npm/node-semver/blob/main/CHANGELOG.md)
- [Commits](https://github.com/npm/node-semver/compare/v6.3.0...v7.6.3)

Updates `semver` from 7.3.7 to 7.6.3
- [Release notes](https://github.com/npm/node-semver/releases)
- [Changelog](https://github.com/npm/node-semver/blob/main/CHANGELOG.md)
- [Commits](https://github.com/npm/node-semver/compare/v6.3.0...v7.6.3)

---
updated-dependencies:
- dependency-name: semver
  dependency-type: indirect
- dependency-name: semver
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-08-22 18:47:22 +00:00
dependabot[bot]andGitHub 66ca3980fd build(deps): bump word-wrap from 1.2.3 to 1.2.5
Bumps [word-wrap](https://github.com/jonschlinkert/word-wrap) from 1.2.3 to 1.2.5.
- [Release notes](https://github.com/jonschlinkert/word-wrap/releases)
- [Commits](https://github.com/jonschlinkert/word-wrap/compare/1.2.3...1.2.5)

---
updated-dependencies:
- dependency-name: word-wrap
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-08-22 18:47:09 +00:00
Ricardo CamposandGitHub c545298886 Merge pull request #7 from ricardo-campos-org/dependabot/npm_and_yarn/ejs-3.1.10
Bump ejs from 3.1.8 to 3.1.10
2024-08-22 15:47:05 -03:00
Ricardo CamposandGitHub 7f24b5aa4e Merge pull request #6 from ricardo-campos-org/dependabot/npm_and_yarn/adobe/css-tools-4.4.0
Bump @adobe/css-tools from 4.0.1 to 4.4.0
2024-08-22 15:46:54 -03:00
Ricardo CamposandGitHub e86fa29915 Merge pull request #5 from ricardo-campos-org/dependabot/npm_and_yarn/webpack-dev-middleware-5.3.4
Bump webpack-dev-middleware from 5.3.3 to 5.3.4
2024-08-22 15:46:42 -03:00
Ricardo CamposandGitHub 12ce91a7e0 Merge pull request #4 from ricardo-campos-org/dependabot/npm_and_yarn/babel/traverse-7.25.4
Bump @babel/traverse from 7.19.3 to 7.25.4
2024-08-22 15:46:32 -03:00
Ricardo CamposandGitHub bc9f22c0ca Merge pull request #3 from ricardo-campos-org/dependabot/npm_and_yarn/braces-3.0.3
Bump braces from 3.0.2 to 3.0.3
2024-08-22 15:46:20 -03:00
Ricardo CamposandGitHub ddb7a57fe1 Merge pull request #2 from ricardo-campos-org/dependabot/npm_and_yarn/express-4.19.2
Bump express from 4.18.1 to 4.19.2
2024-08-22 15:46:07 -03:00
Ricardo CamposandGitHub 6ac37ef599 Merge pull request #1 from ricardo-campos-org/dependabot/npm_and_yarn/follow-redirects-1.15.6
Bump follow-redirects from 1.15.2 to 1.15.6
2024-08-22 15:45:09 -03:00
dependabot[bot]andGitHub 01f4553c10 build(deps): bump @testing-library/react from 13.4.0 to 16.0.0
Bumps [@testing-library/react](https://github.com/testing-library/react-testing-library) from 13.4.0 to 16.0.0.
- [Release notes](https://github.com/testing-library/react-testing-library/releases)
- [Changelog](https://github.com/testing-library/react-testing-library/blob/main/CHANGELOG.md)
- [Commits](https://github.com/testing-library/react-testing-library/compare/v13.4.0...v16.0.0)

---
updated-dependencies:
- dependency-name: "@testing-library/react"
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-08-22 18:43:36 +00:00
dependabot[bot]andGitHub 7f1dc1ac46 build(deps): bump @types/jest from 27.5.2 to 29.5.12
Bumps [@types/jest](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/jest) from 27.5.2 to 29.5.12.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/jest)

---
updated-dependencies:
- dependency-name: "@types/jest"
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-08-22 18:43:21 +00:00
dependabot[bot]andGitHub 578a1c6437 build(deps): bump react and @types/react
Bumps [react](https://github.com/facebook/react/tree/HEAD/packages/react) and [@types/react](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/react). These dependencies needed to be updated together.

Updates `react` from 18.2.0 to 18.3.1
- [Release notes](https://github.com/facebook/react/releases)
- [Changelog](https://github.com/facebook/react/blob/main/CHANGELOG.md)
- [Commits](https://github.com/facebook/react/commits/v18.3.1/packages/react)

Updates `@types/react` from 18.0.21 to 18.3.4
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/react)

---
updated-dependencies:
- dependency-name: react
  dependency-type: direct:production
  update-type: version-update:semver-minor
- dependency-name: "@types/react"
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-08-22 18:43:12 +00:00
Ricardo CamposandGitHub cc77842bce Merge pull request #8 from ricardo-campos-org/feat/readme-and-dependabot
feat: improve readme and add dependabot
2024-08-22 15:42:09 -03:00
Ricardo Campos 54171d735c ci: pr workflow fix 2024-08-22 15:34:35 -03:00
Ricardo Campos 0c454f7b54 ci: add workflows 2024-08-22 15:33:26 -03:00
Ricardo Campos a8f49ca41b feat: improve readme and add dependabot 2024-08-22 14:57:33 -03:00
dependabot[bot]andGitHub 3da9f93523 Bump ejs from 3.1.8 to 3.1.10
Bumps [ejs](https://github.com/mde/ejs) from 3.1.8 to 3.1.10.
- [Release notes](https://github.com/mde/ejs/releases)
- [Commits](https://github.com/mde/ejs/compare/v3.1.8...v3.1.10)

---
updated-dependencies:
- dependency-name: ejs
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-08-22 16:24:48 +00:00
dependabot[bot]andGitHub a87743cb15 Bump @adobe/css-tools from 4.0.1 to 4.4.0
Bumps [@adobe/css-tools](https://github.com/adobe/css-tools) from 4.0.1 to 4.4.0.
- [Changelog](https://github.com/adobe/css-tools/blob/main/History.md)
- [Commits](https://github.com/adobe/css-tools/commits)

---
updated-dependencies:
- dependency-name: "@adobe/css-tools"
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-08-22 16:24:17 +00:00
dependabot[bot]andGitHub a53cefdcf7 Bump webpack-dev-middleware from 5.3.3 to 5.3.4
Bumps [webpack-dev-middleware](https://github.com/webpack/webpack-dev-middleware) from 5.3.3 to 5.3.4.
- [Release notes](https://github.com/webpack/webpack-dev-middleware/releases)
- [Changelog](https://github.com/webpack/webpack-dev-middleware/blob/v5.3.4/CHANGELOG.md)
- [Commits](https://github.com/webpack/webpack-dev-middleware/compare/v5.3.3...v5.3.4)

---
updated-dependencies:
- dependency-name: webpack-dev-middleware
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-08-22 16:24:00 +00:00
dependabot[bot]andGitHub abf6129f90 Bump @babel/traverse from 7.19.3 to 7.25.4
Bumps [@babel/traverse](https://github.com/babel/babel/tree/HEAD/packages/babel-traverse) from 7.19.3 to 7.25.4.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/commits/v7.25.4/packages/babel-traverse)

---
updated-dependencies:
- dependency-name: "@babel/traverse"
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-08-22 16:23:59 +00:00
dependabot[bot]andGitHub 5fbfadef23 Bump braces from 3.0.2 to 3.0.3
Bumps [braces](https://github.com/micromatch/braces) from 3.0.2 to 3.0.3.
- [Changelog](https://github.com/micromatch/braces/blob/master/CHANGELOG.md)
- [Commits](https://github.com/micromatch/braces/compare/3.0.2...3.0.3)

---
updated-dependencies:
- dependency-name: braces
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-08-22 16:23:55 +00:00
dependabot[bot]andGitHub 84825aa45a Bump express from 4.18.1 to 4.19.2
Bumps [express](https://github.com/expressjs/express) from 4.18.1 to 4.19.2.
- [Release notes](https://github.com/expressjs/express/releases)
- [Changelog](https://github.com/expressjs/express/blob/master/History.md)
- [Commits](https://github.com/expressjs/express/compare/4.18.1...4.19.2)

---
updated-dependencies:
- dependency-name: express
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-08-22 16:23:55 +00:00
dependabot[bot]andGitHub 69ae4426cf Bump follow-redirects from 1.15.2 to 1.15.6
Bumps [follow-redirects](https://github.com/follow-redirects/follow-redirects) from 1.15.2 to 1.15.6.
- [Release notes](https://github.com/follow-redirects/follow-redirects/releases)
- [Commits](https://github.com/follow-redirects/follow-redirects/compare/v1.15.2...v1.15.6)

---
updated-dependencies:
- dependency-name: follow-redirects
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-08-22 16:23:54 +00:00
Ricardo CamposandGitHub 715ab849fd Update README.md 2022-10-23 16:33:49 -03:00
132 changed files with 5361 additions and 2063 deletions
+23
View File
@@ -0,0 +1,23 @@
---
name: client-updater
description: A bot that updates the client software to the latest version.
tools: [run_shell_command, read_file, write_file, replace, list_directory, glob, grep_search, ask_user]
---
# Instructions
1. Navigate to the `client` directory.
2. Execute the following command to check for updates:
`npx npm-check-updates --target minor`
3. Display the resulting list of available minor updates to the user.
4. If there are packages to update:
- Run `npx npm-check-updates --target minor -u` to update `package.json`.
- Run `npm install` to update the `package-lock.json` and install the new versions.
5. Run the validation script to ensure stability:
`../tools/check-frontend.sh`
6. If the validation passes:
- Create a new branch (e.g., `update-deps-[date]`).
- Commit the changes to `package.json` and `package-lock.json`.
- Push and create a Pull Request (using `gh pr create` if available).
7. If validation fails (lint, build, or test issues):
- Diagnose the failure using `grep_search` and `read_file`.
- Fix the issues, then retry the validation and PR steps.
8. Report the final status and the PR link to the user.
+12
View File
@@ -0,0 +1,12 @@
description = "Create a formatted GitHub issue"
prompt = """
Act as a project manager. Based on the following input: {{args}}
Create a GitHub issue using the `gh` CLI tool with this exact structure:
- Title: [Feat/Bug] <short summary>
- Body: A detailed description, technical requirements, and acceptance criteria.
- Label: Automatically determine if it's 'bug', 'enhencement', or 'task'.
Once the user confirms the plan, execute the command:
`gh issue create --title "[Type] Title" --body "..." --label "..."
"""
+2
View File
@@ -109,6 +109,8 @@ jobs:
-var="db_name=${{ secrets.DB_NAME }}" \
-var="security_key=${{ secrets.JWT_SECURITY_KEY }}" \
-var="mailgun_apikey=${{ secrets.MAILGUN_API_KEY }}" \
-var="r2_access_key=${{ secrets.R2_ACCESS_KEY_ID }}" \
-var="r2_secret_key=${{ secrets.R2_SECRET_ACCESS_KEY }}" \
-var="backend_image=${{ steps.deploy-vars.outputs.backend_image }}" \
-var="frontend_image=${{ steps.deploy-vars.outputs.frontend_image }}"
terraform show -json tfplan > tfplan.json
+1 -52
View File
@@ -23,8 +23,6 @@ jobs:
- name: Setup Terraform
uses: hashicorp/setup-terraform@v3
with:
terraform_version: "1.10.0"
- name: Show Terraform provider versions
working-directory: terraform-stg
@@ -68,61 +66,13 @@ jobs:
working-directory: terraform-stg
run: terraform validate
- name: Test TLS from subprocess
run: |
cat > /tmp/tlstest.sh << 'EOF'
#!/bin/bash
echo "Testing from subprocess PID: $$"
echo "GODEBUG=$GODEBUG"
openssl s_client -connect 191.252.159.227:6443 </dev/null 2>&1 | grep -E "CONNECTED|error|timeout|TLS"
EOF
chmod +x /tmp/tlstest.sh
# Run in a subprocess the same way Terraform spawns providers
bash /tmp/tlstest.sh &
wait $!
- name: Check system resources
run: |
echo "--- Memory ---"
free -h
echo "--- Ulimits ---"
ulimit -a
echo "--- OOM kills ---"
sudo dmesg | grep -i "killed process\|oom" | tail -20
- name: Test provider binary directly
working-directory: terraform-stg
run: |
PROVIDER=".terraform/providers/registry.terraform.io/hashicorp/kubernetes/2.38.0/linux_amd64/terraform-provider-kubernetes_v2.38.0_x5"
echo "--- Provider binary info ---"
ls -lh $PROVIDER
file $PROVIDER
echo "--- Run provider directly ---"
timeout 5 $PROVIDER --help 2>&1 || true
- name: Test TLS with CA verification like Terraform does
run: |
kubectl config view --raw -o jsonpath='{.clusters[0].cluster.certificate-authority-data}' | base64 -d > /tmp/ca.crt
kubectl config view --raw -o jsonpath='{.users[0].user.client-certificate-data}' | base64 -d > /tmp/client.crt
kubectl config view --raw -o jsonpath='{.users[0].user.client-key-data}' | base64 -d > /tmp/client.key
echo "--- Test with CA verification (exactly like Terraform) ---"
curl -v \
--cacert /tmp/ca.crt \
--cert /tmp/client.crt \
--key /tmp/client.key \
https://191.252.159.227:6443/api/v1/namespaces/tasknote-stg 2>&1 | grep -E "TLS|SSL|Connected|error|timeout|HTTP|issuer|subject"
- name: Terraform Plan
id: check-changes
working-directory: terraform-stg
env:
AWS_ACCESS_KEY_ID: ${{ secrets.R2_ACCESS_KEY_ID }}
AWS_SECRET_ACCESS_KEY: ${{ secrets.R2_SECRET_ACCESS_KEY }}
TF_LOG: DEBUG
GODEBUG: http2client=1
run: |
echo "Start: $(date)"
timeout 3m terraform plan -input=false -out=tfplan \
-var="db_user=${{ secrets.DB_USER }}" \
-var="db_password=${{ secrets.DB_PASSWORD }}" \
@@ -132,7 +82,6 @@ jobs:
-var="backend_image=${{ steps.deploy-vars.outputs.backend_image }}" \
-var="frontend_image=${{ steps.deploy-vars.outputs.frontend_image }}" \
-var="deploy_version=${{ github.run_id }}"
echo "End: $(date)"
terraform show -json tfplan > tfplan.json
if jq -e '.resource_changes | length == 0' tfplan.json >/dev/null; then
echo "no_changes=true" >> "$GITHUB_OUTPUT"
@@ -173,7 +122,7 @@ jobs:
- name: Setup Kubeconfig
run: |
mkdir -p ${{ runner.temp }}/.kube
mkdir -p ~/.kube
echo "${{ secrets.KUBECONFIG_DATA }}" | base64 -d > ~/.kube/config
chmod 600 ~/.kube/config
+1
View File
@@ -10,6 +10,7 @@ on:
- 'server/**/*.java'
- 'server/**/*.xml'
- 'server/pom.xml'
- 'server/**/*.yml'
- '.github/workflows/server-ci.yml'
jobs:
+18
View File
@@ -7,6 +7,8 @@ client.pnp.js
# testing
client/coverage
client/cypress/videos
client/cypress/screenshots
# production
client/build
@@ -34,3 +36,19 @@ yarn-error.log*
# Schema Spy
schemaspy/output/
# Terraform
.terraform/
*.tfstate
*.tfstate.backup
*.tfplan
tfplan
*.tfvars
*.tfvars.json
override.tf
override.tf.json
_override.tf
_override.tf.json
.terraformrc
terraform.rc
+9 -5
View File
@@ -9,22 +9,27 @@
## Architecture details that matter
- Frontend route split is auth-state driven in `client/src/App.tsx` + `client/src/routes/ProtectedRoute/index.tsx`; private screens render through `client/src/layout/PrivateLayout/index.tsx`.
- Home view (`client/src/views/Home/index.tsx`) is a key integration surface: loads tasks/notes/tags, applies client-side filtering, and drives note sharing (`/rest/notes/{id}/share` + `/public/notes/{token}`).
- Three React Contexts are active at runtime: `AuthProvider` (JWT lifecycle), `FilterProvider` (search text + option persisted to `localStorage` as `FILTER_TEXT`/`FILTER_OPTION`), and `SidebarProvider` (sidebar open/close state) — all under `client/src/context/`.
- Backend follows controller -> service -> repository layering (`server/src/main/java/br/com/tasknoteapp/server/{controller,service,repository}`).
- `HomeController` (`/rest/home`) exposes aggregated data such as `/rest/home/tasks/tags`; it is separate from `TaskController` and `NoteController`.
- Global API error shape comes from `server/src/main/java/br/com/tasknoteapp/server/controller/RestExceptionController.java`; frontend expects `message` or `fields[].fieldMessage` (`client/src/api-service/api.ts`).
- Email and password-reset flows are Mailgun-backed (`server/src/main/java/br/com/tasknoteapp/server/service/MailgunEmailService.java`) and use templates under `server/src/main/java/br/com/tasknoteapp/server/templates/` + `mailgun-templates/`.
- Backend targets **Java 25** and **Spring Boot 4.x** (`server/pom.xml`).
## Developer workflows (use these first)
- Frontend quality gate: `bash tools/check-frontend.sh` (runs `npm ci`, `lint:fix`, `build`, `test:no-watch`).
- Backend quality gate: `bash tools/check-backend.sh` (runs checkstyle, compile, then `clean verify -P tests`).
- Backend dependency freshness check: `bash tools/check-be-deps.sh` (verifies that `failsafe`, `surefire`, `jacoco`, `checkstyle`, and Spring Boot plugin versions in `pom.xml` match the latest releases on Maven Central; must be run from the repo root or `server/`).
- Important Maven default: tests/checkstyle/jacoco are skipped unless profile `-P tests` is enabled (`server/pom.xml`).
- Dev stack via Docker Compose/Taskfile (`Taskfile.yml`, `docker-compose.dev.yml`): app `5000`, API `8585`, Java debug port `5005`, Postgres `5432`.
- Frontend local dev: run from `client/` with `npm start`; backend local dev: run from `server/` with `./mvnw spring-boot:run`.
## CI/CD and release behavior
- PR workflows (`.github/workflows/client-ci.yml`, `.github/workflows/server-ci.yml`) run checks then push `:candidate` images to GHCR.
- Main workflows (`.github/workflows/main-client.yml`, `.github/workflows/main-server.yml`) push versioned tags + `latest`; backend workflow also increments `server/pom.xml` version.
- Deploy workflows (`.github/workflows/deploy-stg.yml`, `.github/workflows/deploy.yml`) apply Terraform in `terraform-stg/` and `terraform/` to Kubernetes.
- Infra wiring (secrets, services, ingress, image vars) is defined in `terraform/main.tf`.
- PR workflows (`.github/workflows/ci-pr-frontend.yml`, `.github/workflows/ci-pr-backend.yml`) run checks then push `:candidate` and `:pr-<N>` images to GHCR.
- Main workflows (`.github/workflows/ci-main-frontend.yml`, `.github/workflows/ci-main-backend.yml`) push versioned tags (`app-v<date>.<run>` / `api-v<pom-version>`) + `latest`; backend workflow also increments `server/pom.xml` version.
- Staging deploy workflow (`.github/workflows/cd-pr.yml`) triggers on completion of either PR CI workflow and applies Terraform in `terraform-stg/` using a plan→apply split.
- Production deploy workflow (`.github/workflows/cd-main.yml`) triggers on completion of either Main CI workflow and applies Terraform in `terraform/` using a plan→apply split; `apply` can be skipped if there are no Terraform changes.
- Infra wiring (secrets, services, ingress, image vars) is defined in `terraform/main.tf`; an alternative GCP target is under `terraform-gcp/`.
## Project conventions to preserve
- Frontend style is ESLint flat config + stylistic rules (2-space indent, single quotes, semicolons) in `client/eslint.config.mjs`.
@@ -37,4 +42,3 @@
- Keep API contract compatibility with frontend `ApiConfig` paths; changing endpoint paths requires synchronized client updates.
- When changing auth/session behavior, update both backend filters/controllers and frontend `AuthProvider` token lifecycle.
- If you change CI/build/deploy commands, update both `README.md` and this `AGENTS.md` to keep workflows discoverable.
+1 -1
View File
@@ -34,7 +34,7 @@
media-src 'self';
object-src 'none';
script-src 'unsafe-inline' 'report-sample' 'self' https://*.cloudfront.net;
style-src 'report-sample' 'self' https://cdn.jsdelivr.net/ https://fonts.googleapis.com;
style-src 'report-sample' 'self' https://cdn.jsdelivr.net/ https://fonts.googleapis.com 'sha256-+OsIn6RhyCZCUkkvtHxFtP0kU3CGdGeLjDd9Fzqdl3o=';
worker-src 'none';
"
Referrer-Policy "same-origin"
+16
View File
@@ -0,0 +1,16 @@
import { defineConfig } from 'cypress';
export default defineConfig({
e2e: {
baseUrl: 'http://localhost:5000',
specPattern: 'cypress/e2e/**/*.cy.{ts,tsx}',
supportFile: 'cypress/support/e2e.ts',
videosFolder: 'cypress/videos',
screenshotsFolder: 'cypress/screenshots',
viewportWidth: 1280,
viewportHeight: 720,
setupNodeEvents(on, config) {
return config;
}
}
});
+141
View File
@@ -0,0 +1,141 @@
/**
* E2E tests for authentication flows: User Signup and Login.
*
* These tests cover the primary user journeys for account creation
* and logging in to the TaskNote application.
*/
describe('Authentication', () => {
/**
* User Signup (Registration) flow
*/
describe('Signup', () => {
beforeEach(() => {
cy.visit('/register');
});
it('displays the registration form', () => {
cy.contains('h2', 'Create account').should('be.visible');
cy.get('input[name="email"]').should('be.visible');
cy.get('input[name="password"]').should('be.visible');
cy.get('input[name="passwordAgain"]').should('be.visible');
cy.get('button[type="submit"]').should('be.visible').and('contain', 'Create account');
});
it('shows a validation error when the form is submitted empty', () => {
cy.get('button[type="submit"]').click();
cy.get('.alert-danger').should('be.visible');
});
it('shows a validation error when passwords do not match', () => {
cy.get('input[name="email"]').type('testuser@example.com');
cy.get('input[name="password"]').type('Password1!');
cy.get('input[name="passwordAgain"]').type('DifferentPass1!');
cy.get('button[type="submit"]').click();
cy.get('.alert-danger').should('be.visible');
});
it('navigates to the login page via the login link', () => {
cy.contains('a', 'Login').first().click();
cy.url().should('include', '/login');
});
it('navigates back to the landing page via the back-to-home link', () => {
cy.contains('a', 'Back to home').click();
cy.url().should('eq', `${Cypress.config('baseUrl')}/`);
});
it('submits the signup form and shows a confirmation message on success', () => {
cy.intercept({ method: 'PUT', url: /\/auth\/sign-up/ }, {
statusCode: 201,
body: { message: 'User created' }
}).as('signUp');
cy.get('input[name="email"]').type(`newuser${Date.now()}@example.com`);
cy.get('input[name="password"]').type('Password1!');
cy.get('input[name="passwordAgain"]').type('Password1!');
cy.get('button[type="submit"]').click();
cy.wait('@signUp');
cy.get('.alert-success').should('be.visible');
});
it('displays an error alert when the API returns an error on signup', () => {
cy.intercept({ method: 'PUT', url: /\/auth\/sign-up/ }, {
statusCode: 409,
body: { message: 'Email already in use' }
}).as('signUpFail');
cy.get('input[name="email"]').type(`existing${Date.now()}@example.com`);
cy.get('input[name="password"]').type('Password1!');
cy.get('input[name="passwordAgain"]').type('Password1!');
cy.get('button[type="submit"]').click();
cy.wait('@signUpFail');
cy.get('.alert-danger').should('be.visible');
});
});
/**
* User Login flow
*/
describe('Login', () => {
beforeEach(() => {
cy.visit('/login');
});
it('displays the login form', () => {
cy.contains('h2', 'Login').should('be.visible');
cy.get('input[name="email"]').should('be.visible');
cy.get('input[name="password"]').should('be.visible');
cy.get('button[type="submit"]').should('be.visible').and('contain', 'Login');
});
it('shows a validation error when the form is submitted empty', () => {
cy.get('button[type="submit"]').click();
cy.get('.alert-danger').should('be.visible');
});
it('navigates to the register page via the create account link', () => {
cy.contains('a', 'Create account').click();
cy.url().should('include', '/register');
});
it('navigates back to the landing page via the back-to-home link', () => {
cy.contains('a', 'Back to home').click();
cy.url().should('eq', `${Cypress.config('baseUrl')}/`);
});
it('navigates to the reset password page via the forgot password link', () => {
cy.contains('a', 'Forgot your password?').click();
cy.url().should('include', '/reset-password');
});
it('redirects to home after a successful login', () => {
cy.intercept({ method: 'POST', url: /\/auth\/sign-in/ }, {
statusCode: 200,
body: { token: 'fake-jwt-token', email: 'user@example.com' }
}).as('signIn');
cy.get('input[name="email"]').type('user@example.com');
cy.get('input[name="password"]').type('Password1!');
cy.get('button[type="submit"]').click();
cy.wait('@signIn');
cy.url().should('include', '/home');
});
it('displays an error alert when the API returns an error on login', () => {
cy.intercept({ method: 'POST', url: /\/auth\/sign-in/ }, {
statusCode: 401,
body: { message: 'Invalid credentials' }
}).as('signInFail');
cy.get('input[name="email"]').type('user@example.com');
cy.get('input[name="password"]').type('wrongpassword');
cy.get('button[type="submit"]').click();
cy.wait('@signInFail');
cy.get('.alert-danger').should('be.visible');
});
});
});
+199
View File
@@ -0,0 +1,199 @@
/**
* E2E tests for Home page management: searching and filtering tasks and notes.
*/
const mockUser = {
userId: 1,
name: 'Test User',
email: 'test@example.com',
admin: false,
createdAt: '2026-01-01T00:00:00.000Z',
gravatarImageUrl: '',
lang: 'en'
};
const mockTasks = [
{
id: 1,
description: 'Buy groceries',
done: false,
highPriority: true,
dueDate: '2026-06-01',
dueDateFmt: 'Jun 1, 2026',
lastUpdate: '2026-05-01',
tag: 'personal',
urls: []
},
{
id: 2,
description: 'Write report',
done: false,
highPriority: false,
dueDate: '',
dueDateFmt: '',
lastUpdate: '2026-05-02',
tag: 'work',
urls: []
}
];
const mockNotes = [
{
id: 1,
title: 'Meeting notes',
description: 'Discuss quarterly goals',
url: null,
tag: 'work',
lastUpdate: '2026-05-01',
shared: false,
shareToken: null
},
{
id: 2,
title: 'Recipe',
description: 'Pasta carbonara recipe',
url: null,
tag: 'personal',
lastUpdate: '2026-05-02',
shared: false,
shareToken: null
}
];
const mockTags = ['personal', 'work'];
describe('Home Management', () => {
beforeEach(() => {
cy.intercept('GET', /\/rest\/user-sessions\/refresh/, {
statusCode: 200,
body: { token: 'fake-jwt-token', ...mockUser }
}).as('refreshToken');
cy.intercept('GET', /\/rest\/home\/tasks\/tags/, {
statusCode: 200,
body: mockTags
}).as('getTags');
cy.intercept('GET', /\/rest\/tasks$/, {
statusCode: 200,
body: mockTasks
}).as('getTasks');
cy.intercept('GET', /\/rest\/notes$/, {
statusCode: 200,
body: mockNotes
}).as('getNotes');
cy.visit('/home', {
onBeforeLoad(win) {
win.localStorage.setItem('TASKNOTE-TOKEN', 'fake-jwt-token');
win.localStorage.setItem('TASKNOTE-USER', JSON.stringify(mockUser));
}
});
});
/**
* Home page display
*/
describe('Display', () => {
it('shows tasks and notes after loading', () => {
cy.wait('@getTasks');
cy.wait('@getNotes');
cy.contains('Buy groceries').should('be.visible');
cy.contains('Write report').should('be.visible');
cy.contains('Meeting notes').should('be.visible');
cy.contains('Recipe').should('be.visible');
});
});
/**
* Search / text filtering
*/
describe('Search', () => {
beforeEach(() => {
cy.wait('@getTasks');
cy.wait('@getNotes');
});
it('filters items by search text matching a task description', () => {
cy.get('input[placeholder="Filter tasks & notes"]').type('groceries');
cy.contains('Buy groceries').should('be.visible');
cy.contains('Write report').should('not.exist');
cy.contains('Meeting notes').should('not.exist');
cy.contains('Recipe').should('not.exist');
});
it('filters items by search text matching a note title', () => {
cy.get('input[placeholder="Filter tasks & notes"]').type('Meeting');
cy.contains('Meeting notes').should('be.visible');
cy.contains('Buy groceries').should('not.exist');
cy.contains('Recipe').should('not.exist');
});
it('restores all items after clearing the search', () => {
cy.get('input[placeholder="Filter tasks & notes"]').type('groceries');
cy.contains('Write report').should('not.exist');
cy.get('input[placeholder="Filter tasks & notes"]').clear();
cy.contains('Buy groceries').should('be.visible');
cy.contains('Meeting notes').should('be.visible');
});
});
/**
* Dropdown filter
*/
describe('Dropdown Filter', () => {
beforeEach(() => {
cy.wait('@getTasks');
cy.wait('@getNotes');
});
it('shows only tasks when Tasks filter is selected', () => {
cy.get('[data-testid="dropdown-tag-filter"]').click();
cy.contains('Tasks').click();
cy.contains('Buy groceries').should('be.visible');
cy.contains('Write report').should('be.visible');
cy.contains('Meeting notes').should('not.exist');
cy.contains('Recipe').should('not.exist');
});
it('shows only notes when Notes filter is selected', () => {
cy.get('[data-testid="dropdown-tag-filter"]').click();
cy.contains('Notes').click();
cy.contains('Meeting notes').should('be.visible');
cy.contains('Recipe').should('be.visible');
cy.contains('Buy groceries').should('not.exist');
cy.contains('Write report').should('not.exist');
});
it('shows everything when Everything filter is selected', () => {
cy.get('[data-testid="dropdown-tag-filter"]').click();
cy.contains('Tasks').click();
cy.get('[data-testid="dropdown-tag-filter"]').click();
cy.contains('Everything').click();
cy.contains('Buy groceries').should('be.visible');
cy.contains('Meeting notes').should('be.visible');
});
it('filters by tag when a tag is selected', () => {
cy.wait('@getTags');
cy.get('[data-testid="dropdown-tag-filter"]').click();
cy.contains('#personal').click();
cy.contains('Buy groceries').should('be.visible');
cy.contains('Recipe').should('be.visible');
cy.contains('Write report').should('not.exist');
cy.contains('Meeting notes').should('not.exist');
});
});
});
+268
View File
@@ -0,0 +1,268 @@
/**
* E2E tests for Notes Management: Create, Update, Delete, and Share notes.
*/
const mockUser = {
userId: 1,
name: 'Test User',
email: 'test@example.com',
admin: false,
createdAt: '2026-01-01T00:00:00.000Z',
gravatarImageUrl: '',
lang: 'en'
};
const mockNote = {
id: 1,
title: 'Meeting notes',
description: 'Discuss quarterly goals',
url: null,
tag: 'work',
lastUpdate: '2026-05-01',
shared: false,
shareToken: null
};
describe('Notes Management', () => {
/**
* Sets up authentication intercepts and visits the given path.
*
* @param {string} path - The path to visit.
*/
const visitWithAuth = (path: string): void => {
cy.intercept('GET', /\/rest\/user-sessions\/refresh/, {
statusCode: 200,
body: { token: 'fake-jwt-token', ...mockUser }
}).as('refreshToken');
cy.intercept('GET', /\/rest\/home\/tasks\/tags/, {
statusCode: 200,
body: ['work', 'personal']
}).as('getTags');
cy.visit(path, {
onBeforeLoad(win) {
win.localStorage.setItem('TASKNOTE-TOKEN', 'fake-jwt-token');
win.localStorage.setItem('TASKNOTE-USER', JSON.stringify(mockUser));
}
});
};
/**
* Create note
*/
describe('Create', () => {
beforeEach(() => {
visitWithAuth('/notes/new');
});
it('displays the add note form', () => {
cy.contains('Add Note').should('be.visible');
cy.get('input[name="note_title"]').should('be.visible');
cy.get('textarea[name="note_description"]').should('be.visible');
cy.contains('button', 'Save note').should('be.visible');
});
it('shows a validation error when submitted without a title', () => {
cy.contains('button', 'Save note').click();
cy.get('.alert-danger').should('be.visible');
});
it('shows a validation error when submitted without content', () => {
cy.get('input[name="note_title"]').type('A note title');
cy.contains('button', 'Save note').click();
cy.get('.alert-danger').should('be.visible');
});
it('creates a note and navigates to home on success', () => {
cy.intercept('POST', /\/rest\/notes/, {
statusCode: 201,
body: {
id: 10,
title: 'New note',
description: 'Some content',
url: null,
tag: '',
lastUpdate: '',
shared: false,
shareToken: null
}
}).as('createNote');
cy.intercept('GET', /\/rest\/tasks$/, { statusCode: 200, body: [] }).as('getTasks');
cy.intercept('GET', /\/rest\/notes$/, { statusCode: 200, body: [] }).as('getNotes');
cy.get('input[name="note_title"]').type('New note');
cy.get('textarea[name="note_description"]').type('Some content');
cy.contains('button', 'Save note').click();
cy.wait('@createNote');
cy.url().should('include', '/home');
});
it('shows an error alert when the API returns an error on create', () => {
cy.intercept('POST', /\/rest\/notes/, {
statusCode: 500,
body: { message: 'Internal Server Error' }
}).as('createNoteFail');
cy.get('input[name="note_title"]').type('Failing note');
cy.get('textarea[name="note_description"]').type('Some content');
cy.contains('button', 'Save note').click();
cy.wait('@createNoteFail');
cy.get('.alert-danger').should('be.visible');
});
it('navigates back to home when Cancel is clicked', () => {
cy.intercept('GET', /\/rest\/tasks$/, { statusCode: 200, body: [] }).as('getTasks');
cy.intercept('GET', /\/rest\/notes$/, { statusCode: 200, body: [] }).as('getNotes');
cy.contains('button', 'Cancel').click();
cy.url().should('include', '/home');
});
});
/**
* Update note
*/
describe('Update', () => {
beforeEach(() => {
cy.intercept('GET', /\/rest\/notes\/\d+/, {
statusCode: 200,
body: mockNote
}).as('getNote');
visitWithAuth('/notes/edit/1');
cy.wait('@getNote');
});
it('pre-fills the form with the existing note data', () => {
cy.get('input[name="note_title"]').should('have.value', 'Meeting notes');
cy.get('textarea[name="note_description"]').should('have.value', 'Discuss quarterly goals');
});
it('updates the note and navigates to home on success', () => {
cy.intercept('PATCH', /\/rest\/notes\/\d+/, {
statusCode: 200,
body: { ...mockNote, title: 'Updated meeting notes' }
}).as('updateNote');
cy.intercept('GET', /\/rest\/tasks$/, { statusCode: 200, body: [] }).as('getTasks');
cy.intercept('GET', /\/rest\/notes$/, { statusCode: 200, body: [] }).as('getNotes');
cy.get('input[name="note_title"]').clear().type('Updated meeting notes');
cy.contains('button', 'Save note').click();
cy.wait('@updateNote');
cy.url().should('include', '/home');
});
it('shows an error alert when the update API call fails', () => {
cy.intercept('PATCH', /\/rest\/notes\/\d+/, {
statusCode: 500,
body: { message: 'Internal Server Error' }
}).as('updateNoteFail');
cy.get('input[name="note_title"]').clear().type('Updated note');
cy.contains('button', 'Save note').click();
cy.wait('@updateNoteFail');
cy.get('.alert-danger').should('be.visible');
});
});
/**
* Delete note
*/
describe('Delete', () => {
beforeEach(() => {
cy.intercept('GET', /\/rest\/tasks$/, {
statusCode: 200,
body: []
}).as('getTasks');
cy.intercept('GET', /\/rest\/notes$/, {
statusCode: 200,
body: [mockNote]
}).as('getNotes');
visitWithAuth('/home');
cy.wait('@getNotes');
});
it('deletes a note via the note dropdown menu', () => {
cy.intercept('DELETE', /\/rest\/notes\/\d+/, {
statusCode: 204
}).as('deleteNote');
cy.get('[data-testid="note-dropdown-menu-1"]').click();
cy.get('[data-testid="note-dropdown-delete-item-1"]').click();
cy.wait('@deleteNote');
});
});
/**
* Share note
*/
describe('Share', () => {
beforeEach(() => {
cy.intercept('GET', /\/rest\/tasks$/, {
statusCode: 200,
body: []
}).as('getTasks');
cy.intercept('GET', /\/rest\/notes$/, {
statusCode: 200,
body: [mockNote]
}).as('getNotes');
visitWithAuth('/home');
cy.wait('@getNotes');
});
it('shares a note via the note dropdown menu', () => {
cy.intercept('PUT', /\/rest\/notes\/\d+\/share/, {
statusCode: 200,
body: { ...mockNote, shared: true, shareToken: 'abc123' }
}).as('shareNote');
cy.get('[data-testid="note-dropdown-menu-1"]').click();
cy.get('[data-testid="note-dropdown-share-item-1"]').click();
cy.wait('@shareNote');
});
it('unshares a shared note via the note dropdown menu', () => {
const sharedNote = { ...mockNote, shared: true, shareToken: 'abc123' };
cy.intercept('GET', /\/rest\/notes$/, {
statusCode: 200,
body: [sharedNote]
}).as('getSharedNotes');
cy.intercept('PUT', /\/rest\/notes\/\d+\/unshare/, {
statusCode: 200,
body: { ...sharedNote, shared: false, shareToken: null }
}).as('unshareNote');
cy.visit('/home', {
onBeforeLoad(win) {
win.localStorage.setItem('TASKNOTE-TOKEN', 'fake-jwt-token');
win.localStorage.setItem('TASKNOTE-USER', JSON.stringify(mockUser));
}
});
cy.wait('@getSharedNotes');
cy.get('[data-testid="note-dropdown-menu-1"]').click();
cy.get('[data-testid="note-dropdown-share-item-1"]').click();
cy.wait('@unshareNote');
});
});
});
+226
View File
@@ -0,0 +1,226 @@
/**
* E2E tests for Task Management: Create, Update, and Delete tasks.
*/
const mockUser = {
userId: 1,
name: 'Test User',
email: 'test@example.com',
admin: false,
createdAt: '2026-01-01T00:00:00.000Z',
gravatarImageUrl: '',
lang: 'en'
};
const mockTask = {
id: 1,
description: 'Buy groceries',
done: false,
highPriority: false,
dueDate: '',
dueDateFmt: '',
lastUpdate: '2026-05-01',
tag: 'personal',
urls: []
};
describe('Task Management', () => {
/**
* Sets up authentication intercepts and visits the given path.
*
* @param {string} path - The path to visit.
*/
const visitWithAuth = (path: string): void => {
cy.intercept('GET', /\/rest\/user-sessions\/refresh/, {
statusCode: 200,
body: { token: 'fake-jwt-token', ...mockUser }
}).as('refreshToken');
cy.intercept('GET', /\/rest\/home\/tasks\/tags/, {
statusCode: 200,
body: ['personal', 'work']
}).as('getTags');
cy.visit(path, {
onBeforeLoad(win) {
win.localStorage.setItem('TASKNOTE-TOKEN', 'fake-jwt-token');
win.localStorage.setItem('TASKNOTE-USER', JSON.stringify(mockUser));
}
});
};
/**
* Create task
*/
describe('Create', () => {
beforeEach(() => {
visitWithAuth('/tasks/new');
});
it('displays the add task form', () => {
cy.contains('Add Task').should('be.visible');
cy.get('input[name="description"]').should('be.visible');
cy.get('input[name="url"]').should('be.visible');
cy.get('input[name="tag"]').should('be.visible');
cy.contains('button', 'Save task').should('be.visible');
});
it('shows a validation error when submitted without a description', () => {
cy.contains('button', 'Save task').click();
cy.get('.alert-danger').should('be.visible');
});
it('creates a task and navigates to home on success', () => {
cy.intercept('POST', /\/rest\/tasks/, {
statusCode: 201,
body: {
id: 10,
description: 'New task',
done: false,
highPriority: false,
dueDate: '',
dueDateFmt: '',
lastUpdate: '',
tag: '',
urls: []
}
}).as('createTask');
cy.intercept('GET', /\/rest\/tasks$/, { statusCode: 200, body: [] }).as('getTasks');
cy.intercept('GET', /\/rest\/notes$/, { statusCode: 200, body: [] }).as('getNotes');
cy.get('input[name="description"]').type('New task');
cy.contains('button', 'Save task').click();
cy.wait('@createTask');
cy.url().should('include', '/home');
});
it('shows an error alert when the API returns an error on create', () => {
cy.intercept('POST', /\/rest\/tasks/, {
statusCode: 500,
body: { message: 'Internal Server Error' }
}).as('createTaskFail');
cy.get('input[name="description"]').type('Failing task');
cy.contains('button', 'Save task').click();
cy.wait('@createTaskFail');
cy.get('.alert-danger').should('be.visible');
});
it('navigates back to home when Cancel is clicked', () => {
cy.intercept('GET', /\/rest\/tasks$/, { statusCode: 200, body: [] }).as('getTasks');
cy.intercept('GET', /\/rest\/notes$/, { statusCode: 200, body: [] }).as('getNotes');
cy.contains('button', 'Cancel').click();
cy.url().should('include', '/home');
});
});
/**
* Update task
*/
describe('Update', () => {
beforeEach(() => {
cy.intercept('GET', /\/rest\/tasks\/\d+/, {
statusCode: 200,
body: mockTask
}).as('getTask');
visitWithAuth('/tasks/edit/1');
cy.wait('@getTask');
});
it('pre-fills the form with the existing task data', () => {
cy.get('input[name="description"]').should('have.value', 'Buy groceries');
});
it('updates the task and navigates to home on success', () => {
cy.intercept('PATCH', /\/rest\/tasks\/\d+/, {
statusCode: 200,
body: { ...mockTask, description: 'Buy more groceries' }
}).as('updateTask');
cy.intercept('GET', /\/rest\/tasks$/, { statusCode: 200, body: [] }).as('getTasks');
cy.intercept('GET', /\/rest\/notes$/, { statusCode: 200, body: [] }).as('getNotes');
cy.get('input[name="description"]').clear().type('Buy more groceries');
cy.contains('button', 'Save task').click();
cy.wait('@updateTask');
cy.url().should('include', '/home');
});
it('shows an error alert when the update API call fails', () => {
cy.intercept('PATCH', /\/rest\/tasks\/\d+/, {
statusCode: 500,
body: { message: 'Internal Server Error' }
}).as('updateTaskFail');
cy.get('input[name="description"]').clear().type('Updated task');
cy.contains('button', 'Save task').click();
cy.wait('@updateTaskFail');
cy.get('.alert-danger').should('be.visible');
});
});
/**
* Mark as done / undone
*/
describe('Mark as Done', () => {
beforeEach(() => {
cy.intercept('GET', /\/rest\/tasks$/, {
statusCode: 200,
body: [mockTask]
}).as('getTasks');
cy.intercept('GET', /\/rest\/notes$/, {
statusCode: 200,
body: []
}).as('getNotes');
visitWithAuth('/home');
cy.wait('@getTasks');
});
it('marks a task as done via the task dropdown menu', () => {
cy.intercept('DELETE', /\/rest\/tasks\/\d+/, {
statusCode: 204
}).as('markDone');
cy.get('[data-testid="task-dropdown-menu-1"]').click();
cy.get('[data-testid="task-dropdown-done-item-1"]').click();
cy.wait('@markDone');
});
it('marks a done task as undone via the task dropdown menu', () => {
cy.intercept('GET', /\/rest\/tasks$/, {
statusCode: 200,
body: [{ ...mockTask, done: true }]
}).as('getDoneTasks');
cy.intercept('DELETE', /\/rest\/tasks\/\d+/, {
statusCode: 204
}).as('markUndone');
cy.visit('/home', {
onBeforeLoad(win) {
win.localStorage.setItem('TASKNOTE-TOKEN', 'fake-jwt-token');
win.localStorage.setItem('TASKNOTE-USER', JSON.stringify(mockUser));
}
});
cy.wait('@getDoneTasks');
cy.get('[data-testid="task-dropdown-menu-1"]').click();
cy.get('[data-testid="task-dropdown-done-item-1"]').click();
cy.wait('@markUndone');
});
});
});
+26
View File
@@ -0,0 +1,26 @@
// Custom Cypress commands.
// Add any project-wide custom commands here.
// Prevent TypeScript errors for cy.login usage
declare global {
// eslint-disable-next-line @typescript-eslint/no-namespace
namespace Cypress {
interface Chainable {
/**
* Custom command to log in via the UI.
* @param email - User email address
* @param password - User password
*/
login(email: string, password: string): Chainable<void>;
}
}
}
Cypress.Commands.add('login', (email: string, password: string) => {
cy.visit('/login');
cy.get('input[name="email"]').clear().type(email);
cy.get('input[name="password"]').clear().type(password);
cy.get('button[type="submit"]').click();
});
export {};
+4
View File
@@ -0,0 +1,4 @@
// Support file for Cypress E2E tests.
// This file is loaded before each spec file.
import './commands';
+17
View File
@@ -0,0 +1,17 @@
{
"compilerOptions": {
"target": "ESNext",
"lib": ["ESNext", "dom"],
"module": "ESNext",
"moduleResolution": "bundler",
"types": ["cypress", "node"],
"esModuleInterop": true,
"allowSyntheticDefaultImports": true,
"strict": false,
"skipLibCheck": true
},
"include": [
"./**/*.ts",
"./**/*.tsx"
]
}
+1
View File
@@ -21,6 +21,7 @@ export default [
{
ignores: [
'**/__test__/*',
'cypress/**',
'**/assets/*',
'**/*.scss',
'**/*.css',
+2831 -1487
View File
File diff suppressed because it is too large Load Diff
+23 -19
View File
@@ -13,25 +13,25 @@
"private": true,
"dependencies": {
"@popperjs/core": "^2.11.8",
"@types/node": "^25.6.0",
"@types/node": "^25.7.0",
"@types/react-dom": "^19.2.3",
"@vitejs/plugin-react": "^5.2.0",
"@vitejs/plugin-react": "^6.0.1",
"bootstrap": "^5.3.8",
"dompurify": "^3.4.1",
"i18next": "^25.10.10",
"react": "^19.2.5",
"dompurify": "^3.4.2",
"i18next": "^26.1.0",
"react": "^19.2.6",
"react-bootstrap": "^2.10.10",
"react-bootstrap-icons": "^1.11.6",
"react-charts": "^3.0.0-beta.57",
"react-datepicker": "^9.1.0",
"react-dom": "^19.2.5",
"react-i18next": "^16.6.6",
"react-dom": "^19.2.6",
"react-i18next": "^17.0.7",
"react-markdown": "^10.1.0",
"react-router": "^7.14.2",
"react-router": "^7.15.0",
"react-router-bootstrap": "^0.26.3",
"remark-gfm": "^4.0.1",
"typescript": "^5.9.3",
"vite": "^7.3.2"
"typescript": "^6.0.3",
"vite": "^8.0.12"
},
"scripts": {
"start": "vite --host",
@@ -41,7 +41,10 @@
"test:no-watch": "vitest --watch=false",
"test:coverage": "vitest run --coverage --watch=false",
"lint": "./node_modules/.bin/eslint",
"lint:fix": "./node_modules/.bin/eslint --fix"
"lint:fix": "./node_modules/.bin/eslint --fix",
"cypress:open": "cypress open",
"cypress:run": "cypress run",
"cypress:run:headless": "cypress run --headless"
},
"eslintConfig": {
"extends": [
@@ -62,7 +65,7 @@
]
},
"devDependencies": {
"@eslint/compat": "^2.0.5",
"@eslint/compat": "^2.1.0",
"@eslint/eslintrc": "^3.3.5",
"@eslint/js": "^9.39.4",
"@stylistic/eslint-plugin": "^5.10.0",
@@ -72,20 +75,21 @@
"@types/jest": "^30.0.0",
"@types/react": "^19.2.14",
"@types/react-router-bootstrap": "^0.26.8",
"@vitest/coverage-v8": "^4.1.5",
"@vitest/coverage-v8": "^4.1.6",
"cypress": "^15.14.2",
"eslint": "^9.39.4",
"eslint-config-prettier": "^10.1.8",
"eslint-plugin-import": "^2.32.0",
"eslint-plugin-import-x": "^4.16.2",
"eslint-plugin-jsdoc": "^62.9.0",
"eslint-plugin-n": "^17.24.0",
"eslint-plugin-n": "^18.0.1",
"eslint-plugin-promise": "^7.3.0",
"eslint-plugin-react": "^7.37.5",
"globals": "^17.5.0",
"jsdom": "^29.1.0",
"globals": "^17.6.0",
"jsdom": "^29.1.1",
"prettier": "^3.8.3",
"sass": "^1.99.0",
"source-map-support": "^0.5.21",
"typescript-eslint": "^8.59.1",
"vitest": "^4.1.5"
"typescript-eslint": "^8.59.3",
"vitest": "^4.1.6"
}
}
+4 -8
View File
@@ -27,7 +27,7 @@ import './styles/custom.scss';
* @returns {React.ReactNode} The rendered component.
*/
function App(): React.ReactNode {
const { signed, checkCurrentAuthUser } = useContext(AuthContext);
const { signed, loading } = useContext(AuthContext);
const [theme, setTheme] = useState(() => {
return localStorage.getItem('theme') ?? 'light';
});
@@ -103,7 +103,7 @@ function App(): React.ReactNode {
/**
* Determines the appropriate router based on the user's authentication status.
* @returns {Router} The configured router.
* @returns The configured router.
*/
const getBrowserRouter = () => {
if (signed) {
@@ -114,10 +114,6 @@ function App(): React.ReactNode {
const browserRouter = getBrowserRouter();
useEffect(() => {
checkCurrentAuthUser(window.location.pathname);
}, []);
useEffect(() => {
document.body.setAttribute('data-bs-theme', theme);
localStorage.setItem('theme', theme);
@@ -138,9 +134,9 @@ function App(): React.ReactNode {
</button>
{/* Your routes or content here */}
<RouterProvider router={browserRouter} />
{!loading && <RouterProvider router={browserRouter} />}
</>
);
};
}
export default App;
+13 -3
View File
@@ -1,16 +1,24 @@
import React from 'react';
import React, { act } from 'react';
import { test, vi } from 'vitest';
import App from '../App';
import { act, render } from '@testing-library/react';
import { render } from '@testing-library/react';
import AuthContext from '../context/AuthContext';
import authContextMock from './__mocks__/authContextMock';
import SidebarContext from '../context/SidebarContext';
import FilterContext from '../context/FilterContext';
const sidebarContextMock = {
currentPage: '/home',
setNewPage: vi.fn()
};
const filterContextMock = {
filterText: '',
selectedOption: 'everything',
setFilterText: vi.fn(),
setSelectedOption: vi.fn()
};
vi.mock('react-charts', () => ({
Chart: ({ options }) => <div data-testid="mocked-chart">Mocked Chart</div>
}));
@@ -20,7 +28,9 @@ test('Renders the app', async () => {
render(
<AuthContext.Provider value={authContextMock}>
<SidebarContext.Provider value={sidebarContextMock}>
<App />
<FilterContext.Provider value={filterContextMock}>
<App />
</FilterContext.Provider>
</SidebarContext.Provider>
</AuthContext.Provider>
);
@@ -2,6 +2,7 @@ import { vi } from "vitest";
const authContextMock = {
signed: true,
loading: false,
user: undefined,
checkCurrentAuthUser: vi.fn(),
signIn: vi.fn(),
@@ -7,7 +7,7 @@ describe('AlertError Component tests', () => {
const dataTestId: string = "alert-error-msg-tests";
const renderAlert = (message?: string) => {
return render(
<AlertError errorMessage={message} dataTestid={dataTestId} />
<AlertError errorMessage={message} dataTestId={dataTestId} />
);
};
@@ -1,5 +1,5 @@
import React from 'react';
import { describe, it, expect, vi, beforeEach } from 'vitest';
import React, { act } from 'react';
import { describe, it, expect, vi, beforeEach, afterEach } from 'vitest';
import { BrowserRouter } from 'react-router';
import { fireEvent, render, screen } from '@testing-library/react';
import LoginForm from '../../components/LoginForm';
@@ -119,6 +119,7 @@ describe('LoginForm Component test', () => {
});
it('should disable resend button and show countdown for "register" prefix', async () => {
vi.useFakeTimers();
renderFn("register");
const emailInput = screen.getByTestId('register_email_input');
@@ -129,9 +130,36 @@ describe('LoginForm Component test', () => {
fireEvent.change(emailInput, { target: { value: 'test@example.com' } });
fireEvent.change(passwordInput, { target: { value: 'password123' } });
fireEvent.change(repeatPasswordInput, { target: { value: 'password123' } });
fireEvent.click(submitButton);
await act(async () => {
fireEvent.click(submitButton);
});
const resendButton = screen.queryByRole('button', { name: /resend confirmation email/i }) as HTMLButtonElement;
expect(resendButton).toBeNull();
vi.useRealTimers();
});
it('should display resend button when login fails with "Email not confirmed!"', async () => {
authContextMock.signIn.mockRejectedValue(new Error('Email not confirmed!'));
renderFn("login");
const emailInput = screen.getByTestId('login_email_input');
const passwordInput = screen.getByTestId('account-password-login');
const submitButton = screen.getByRole('button', { name: /login/i });
fireEvent.change(emailInput, { target: { value: 'test@example.com' } });
fireEvent.change(passwordInput, { target: { value: 'password123' } });
await act(async () => {
fireEvent.click(submitButton);
});
const errorMessage = await screen.findByText(/email not confirmed/i);
expect(errorMessage).toBeDefined();
const resendButton = screen.getByRole('button', { name: /resend confirmation email/i });
expect(resendButton).toBeDefined();
});
});
@@ -1,7 +1,7 @@
// AuthProvider.test.tsx
import React, { useContext } from 'react';
import React, { useContext, act } from 'react';
import { describe, it, expect, vi, beforeEach, afterEach } from 'vitest';
import { render, act, waitFor, cleanup } from '@testing-library/react';
import { render, waitFor, cleanup } from '@testing-library/react';
import userEvent from '@testing-library/user-event';
import AuthProvider from '../../context/AuthProvider';
import AuthContext, { AuthContextData } from '../../context/AuthContext';
@@ -15,6 +15,7 @@ vi.mock('../../api-service/api');
const ConsumerComponent: React.FC = () => {
const {
signed,
loading,
user,
signIn,
register,
@@ -26,6 +27,7 @@ const ConsumerComponent: React.FC = () => {
return (
<div>
<div data-testid="signed">{signed ? 'true' : 'false'}</div>
<div data-testid="loading">{loading ? 'true' : 'false'}</div>
<div data-testid="user">{user ? user.name : 'none'}</div>
<button
data-testid="signIn"
@@ -89,15 +91,57 @@ describe('AuthProvider', () => {
cleanup();
});
it('should render the default context values', () => {
it('should render the default context values', async () => {
const { getByTestId } = render(
<AuthProvider>
<ConsumerComponent />
</AuthProvider>
);
await waitFor(() => {
expect(getByTestId('signed').textContent).toBe('false');
expect(getByTestId('user').textContent).toBe('none');
});
});
it('should set loading to false after initial auth check with no token', async () => {
// No token in localStorage, so fetchCurrentSession returns immediately.
const { getByTestId } = render(
<AuthProvider>
<ConsumerComponent />
</AuthProvider>
);
await waitFor(() =>
expect(getByTestId('loading').textContent).toBe('false')
);
expect(getByTestId('signed').textContent).toBe('false');
expect(getByTestId('user').textContent).toBe('none');
});
it('should set loading to false and signed to true after successful initial auth check', async () => {
const fakeResponse = {
token: 'refresh-token',
userId: '789',
name: 'Refreshed User',
email: 'refreshed@example.com',
admin: false,
createdAt: new Date().toISOString(),
gravatarImageUrl: 'http://dummyimage.com'
};
vi.spyOn(api, 'getJSON').mockResolvedValue(fakeResponse);
localStorage.setItem(API_TOKEN, 'dummy');
const { getByTestId } = render(
<AuthProvider>
<ConsumerComponent />
</AuthProvider>
);
await waitFor(() =>
expect(getByTestId('loading').textContent).toBe('false')
);
expect(getByTestId('signed').textContent).toBe('true');
});
it('should sign in a user successfully', async () => {
@@ -120,9 +164,7 @@ describe('AuthProvider', () => {
</AuthProvider>
);
await act(async () => {
userEvent.click(getByTestId('signIn'));
});
await userEvent.click(getByTestId('signIn'));
await waitFor(() =>
expect(getByTestId('signed').textContent).toBe('true')
@@ -169,18 +211,14 @@ describe('AuthProvider', () => {
);
// Make sure that the context initially renders with the signed user by triggering a signIn.
await act(async () => {
userEvent.click(getByTestId('signIn'));
});
await userEvent.click(getByTestId('signIn'));
await waitFor(() =>
expect(getByTestId('signed').textContent).toBe('true')
);
// Now sign out
await act(async () => {
userEvent.click(getByTestId('sign-out-btn'));
});
await userEvent.click(getByTestId('sign-out-btn'));
await waitFor(() =>
expect(getByTestId('signed').textContent).toBe('false')
@@ -198,14 +236,10 @@ describe('AuthProvider', () => {
</AuthProvider>
);
await act(async () => {
userEvent.click(getByTestId('updateUser'));
});
await userEvent.click(getByTestId('updateUser'));
await waitFor(() => {
act(() => {
expect(getByTestId('user').textContent).toBe('Updated User')
})
expect(getByTestId('user').textContent).toBe('Updated User')
const savedUser = localStorage.getItem(USER_DATA);
expect(savedUser).not.toBeNull();
@@ -60,7 +60,7 @@ describe('SidebarProvider', () => {
});
await waitFor(() =>
expect(getByTestId('page').textContent).toBe('/another')
expect(getByTestId('page').textContent).toBe('/home')
);
});
});
+4 -2
View File
@@ -1,6 +1,8 @@
import { afterEach, beforeEach } from 'vitest';
// @ts-ignore
globalThis.IS_REACT_ACT_ENVIRONMENT = true;
import { afterEach, beforeEach, vi } from 'vitest';
import { cleanup } from '@testing-library/react';
import { vi } from 'vitest';
// runs a cleanup after each test case (e.g. clearing jsdom)
afterEach(() => {
+23 -7
View File
@@ -1,4 +1,4 @@
import React from 'react';
import React, { act } from 'react';
import { render, fireEvent, waitFor } from '@testing-library/react';
import { beforeEach, describe, expect, it, vi } from 'vitest';
import { MemoryRouter } from 'react-router';
@@ -105,8 +105,12 @@ describe('NoteAdd Component', () => {
vi.resetAllMocks();
});
it('should render the NoteAdd component', () => {
const { getByText } = renderNoteAdd();
it('should render the NoteAdd component', async () => {
let result: any;
await act(async () => {
result = renderNoteAdd();
});
const { getByText } = result;
expect(getByText('note_form_title_label')).toBeDefined();
expect(getByText('task_form_url_label')).toBeDefined();
expect(getByText('note_form_content_label')).toBeDefined();
@@ -114,7 +118,11 @@ describe('NoteAdd Component', () => {
});
it('should show error message when form is invalid', async () => {
const { getByText, getByRole } = renderNoteAdd();
let result: any;
await act(async () => {
result = renderNoteAdd();
});
const { getByText, getByRole } = result;
const submitButton = getByRole('button', { name: 'note_form_submit' });
fireEvent.click(submitButton);
await waitFor(() => {
@@ -127,7 +135,11 @@ describe('NoteAdd Component', () => {
new URLSearchParams("backTo=home"),
]);
const { getByLabelText, getByTestId, getByRole } = renderNoteAdd();
let result: any;
await act(async () => {
result = renderNoteAdd();
});
const { getByLabelText, getByTestId, getByRole } = result;
const descriptionInput = getByLabelText('note_form_title_label') as HTMLInputElement;
const noteContentInput = getByTestId('note-content-input-area') as HTMLAreaElement;
const submitButton = getByRole('button', { name: 'note_form_submit' });
@@ -151,8 +163,12 @@ describe('NoteAdd Component', () => {
});
});
it('should render text based on new contentHeader component', () => {
const { getByText } = renderNoteAdd();
it('should render text based on new contentHeader component', async () => {
let result: any;
await act(async () => {
result = renderNoteAdd();
});
const { getByText } = result;
expect(getByText('Add')).toBeDefined();
expect(getByText('Note')).toBeDefined();
+24 -8
View File
@@ -1,4 +1,4 @@
import React from 'react';
import React, { act } from 'react';
import { render, fireEvent, waitFor } from '@testing-library/react';
import { beforeEach, describe, expect, it, vi } from 'vitest';
import { MemoryRouter } from 'react-router';
@@ -23,7 +23,7 @@ vi.mock('react-i18next', () => ({
}),
initReactI18next: {
type: '3rdParty',
init: vi.fn(),
init: vi.fn(),
},
I18nextProvider: ({ children }: any) => children,
}));
@@ -82,8 +82,12 @@ describe('TaskAdd Component', () => {
(useSearchParams as unknown as ReturnType<typeof vi.fn>).mockReset();
});
it('should render the TaskAdd component', () => {
const { getByText } = renderTaskAdd();
it('should render the TaskAdd component', async () => {
let result: any;
await act(async () => {
result = renderTaskAdd();
});
const { getByText } = result;
expect(getByText('task_form_title')).toBeDefined();
expect(getByText('task_form_desc_label')).toBeDefined();
expect(getByText('task_form_url_label')).toBeDefined();
@@ -92,7 +96,11 @@ describe('TaskAdd Component', () => {
});
it('should show error message when form is invalid', async () => {
const { getByText, getByRole } = renderTaskAdd();
let result: any;
await act(async () => {
result = renderTaskAdd();
});
const { getByText, getByRole } = result;
const submitButton = getByRole('button', { name: 'task_form_submit' });
fireEvent.click(submitButton);
await waitFor(() => {
@@ -105,7 +113,11 @@ describe('TaskAdd Component', () => {
new URLSearchParams("backTo=home"),
]);
const { getByLabelText, getByRole } = renderTaskAdd();
let result: any;
await act(async () => {
result = renderTaskAdd();
});
const { getByLabelText, getByRole } = result;
const descriptionInput = getByLabelText('task_form_desc_label') as HTMLInputElement;
const submitButton = getByRole('button', { name: 'task_form_submit' });
@@ -125,12 +137,16 @@ describe('TaskAdd Component', () => {
});
});
it('should render text based on new contentHeader component', () => {
it('should render text based on new contentHeader component', async () => {
(useSearchParams as unknown as ReturnType<typeof vi.fn>).mockReturnValue([
new URLSearchParams("backTo=home"),
]);
const { getByText } = renderTaskAdd();
let result: any;
await act(async () => {
result = renderTaskAdd();
});
const { getByText } = result;
expect(getByText('Add')).toBeDefined();
expect(getByText('Task')).toBeDefined();
+3 -3
View File
@@ -3,7 +3,7 @@ import { Alert } from 'react-bootstrap';
type Props = {
errorMessage?: string;
dataTestid?: string;
dataTestId?: string;
onClose?: () => void;
};
@@ -12,7 +12,7 @@ type Props = {
*
* @param {Props} props the AlertError props with the message to be displayed.
* @param {string} [props.errorMessage] Optional error message.
* @param {string} [props.dataTestid] Optional data-testid property.
* @param {string} [props.dataTestId] Optional data-testId property.
* @param {Function} [props.onClose] OnClose function to be called.
* @returns {React.ReactNode} the AlertError rendered component.
*/
@@ -25,7 +25,7 @@ const AlertError: React.FC<Props> = (props: Props): React.ReactNode => {
<Alert
variant="danger"
dismissible
data-testid={props.dataTestid}
data-testid={props.dataTestId}
onClose={props.onClose}
>
{ props.errorMessage }
+2 -2
View File
@@ -20,7 +20,7 @@ interface Props {
valueDate?: Date | null;
onChange?: (e: React.ChangeEvent<HTMLInputElement>) => void;
onChangeDate?: (date: Date | null) => void;
data_testid?: string;
dataTestId?: string;
pwdHideText?: string;
pwdShowText?: string;
pwdHelperTxt?: string;
@@ -107,7 +107,7 @@ function FormInput(props: React.PropsWithChildren<Props>): React.ReactNode {
placeholder={props.placeholder ? props.placeholder : ''}
value={props?.value}
onChange={props.onChange}
data-testid={props.data_testid}
data-testid={props.dataTestId}
/>
)}
</InputGroup>
+60 -33
View File
@@ -34,6 +34,7 @@ function LoginForm({ prefix }: { prefix: string }): React.ReactNode {
const [formInvalid, setFormInvalid] = useState<boolean>(false);
const [errorMessage, setErrorMessage] = useState<string>('');
const [successMessage, setSuccessMessage] = useState<string>('');
const [showResend, setShowResend] = useState<boolean>(false);
const [email, setEmail] = useState<string>('');
const [password, setPassword] = useState<string>('');
const [passwordAgain, setPasswordAgain] = useState<string>('');
@@ -53,16 +54,16 @@ function LoginForm({ prefix }: { prefix: string }): React.ReactNode {
/**
* Handles the form submit button click event.
*
* When clicked, checks if the form is valid. It it's not, raise an error
* message in an Alert. Otherwise, it call the signIn API and navigates to the home page.
* When clicked, checks if the form is valid. If it's not, raise an error
* message in an Alert. Otherwise, it calls the signIn API and navigates to the home page.
*/
const handleSubmit = async (event: React.FormEvent<HTMLFormElement>): Promise<void> => {
const handleSubmit = async (event: React.SubmitEvent<HTMLFormElement>): Promise<void> => {
event.preventDefault();
event.stopPropagation();
setValidated(true);
const form = event.currentTarget;
if (form.checkValidity() === false) {
if (!form.checkValidity()) {
setFormInvalid(true);
if (prefix === 'complete_reset') {
setErrorMessage(translateServerResponse('Please fill in the new password', i18n.language));
@@ -82,6 +83,7 @@ function LoginForm({ prefix }: { prefix: string }): React.ReactNode {
}
setFormInvalid(false);
setShowResend(false);
try {
if (prefix === 'login') {
await signIn(email, password);
@@ -93,6 +95,7 @@ function LoginForm({ prefix }: { prefix: string }): React.ReactNode {
setPassword('');
setPasswordAgain('');
setSuccessMessage(translateServerResponse('Please confirm your email before proceeding', i18n.language));
setShowResend(true);
setSecondsLeft(30);
setIsResendEnabled(false);
}
@@ -107,15 +110,19 @@ function LoginForm({ prefix }: { prefix: string }): React.ReactNode {
}
}
catch (e) {
console.log(e);
setFormInvalid(true);
let msg = '';
if (typeof e === 'string') {
console.log('string');
setErrorMessage(translateServerResponse(e, i18n.language));
msg = e;
}
else if (e instanceof Error) {
console.log(e.message);
setErrorMessage(translateServerResponse(e.message, i18n.language));
msg = e.message;
}
setErrorMessage(translateServerResponse(msg, i18n.language));
if (msg === 'Email not confirmed!') {
setShowResend(true);
}
}
};
@@ -124,7 +131,9 @@ function LoginForm({ prefix }: { prefix: string }): React.ReactNode {
try {
await api.postJSON(ApiConfig.resendConfirmUrl, { email });
setSuccessMessage('Confirmation email re-sent! Please check the spam folder.');
setSuccessMessage(translateServerResponse('Confirmation email re-sent! Please check the spam folder.', i18n.language));
setFormInvalid(false);
setShowResend(true);
setSecondsLeft(30);
setIsResendEnabled(false);
}
@@ -164,36 +173,48 @@ function LoginForm({ prefix }: { prefix: string }): React.ReactNode {
{formInvalid
? (
<Alert variant="danger">
{ errorMessage }
</Alert>
<>
<Alert variant="danger">{errorMessage}</Alert>
{showResend && (
<div className="text-center mt-2">
<Button
variant="outline-secondary"
size="sm"
onClick={handleResend}
disabled={!isResendEnabled}
>
{isResendEnabled
? `${t('register_resent_email')}`
: `${t('register_resent_email_secs')} ${secondsLeft}`}
</Button>
</div>
)}
</>
)
: null}
{successMessage.length > 1 && prefix === 'register' && (
{successMessage.length > 1 && (
<>
<Alert variant="success">
{ successMessage }
</Alert>
<div className="text-center">
<Button
variant="outline-secondary"
onClick={handleResend}
disabled={!isResendEnabled}
>
{isResendEnabled ? `${t('register_resent_email')}` : `${t('register_resent_email_secs')} ${secondsLeft}`}
</Button>
</div>
{showResend && (
<div className="text-center mb-3">
<Button
variant="outline-secondary"
onClick={handleResend}
disabled={!isResendEnabled}
>
{isResendEnabled
? `${t('register_resent_email')}`
: `${t('register_resent_email_secs')} ${secondsLeft}`}
</Button>
</div>
)}
</>
)}
{successMessage.length > 1 && prefix !== 'register' && (
<Alert variant="success">
{ successMessage }
</Alert>
)}
<Form noValidate validated={validated} onSubmit={handleSubmit}>
{prefix !== 'complete_reset' && (
<FormInput
@@ -202,7 +223,7 @@ function LoginForm({ prefix }: { prefix: string }): React.ReactNode {
required={true}
name="email"
placeholder={t(`${prefix}_email_placeholder`)}
data_testid={`${prefix}_email_input`}
dataTestId={`${prefix}_email_input`}
value={email}
onChange={(e: React.ChangeEvent<HTMLInputElement>) => {
setEmail(e.target.value);
@@ -225,7 +246,7 @@ function LoginForm({ prefix }: { prefix: string }): React.ReactNode {
onChange={(e: React.ChangeEvent<HTMLInputElement>) => {
setPassword(e.target.value);
}}
data_testid="account-password-login"
dataTestId="account-password-login"
/>
)}
@@ -244,7 +265,7 @@ function LoginForm({ prefix }: { prefix: string }): React.ReactNode {
onChange={(e: React.ChangeEvent<HTMLInputElement>) => {
setPasswordAgain(e.target.value);
}}
data_testid={`account-repeat-password-${prefix}`}
dataTestId={`account-repeat-password-${prefix}`}
/>
)}
@@ -259,7 +280,10 @@ function LoginForm({ prefix }: { prefix: string }): React.ReactNode {
<div className="text-center mt-3">
{t(`${prefix}_account`)}
<Link to={prefix === 'login' ? '/register' : '/login'} className="text-decoration-none ms-2">
<Link
to={prefix === 'login' ? '/register' : '/login'}
className="text-decoration-none ms-2"
>
{t(`${prefix}_go_other`)}
</Link>
</div>
@@ -271,7 +295,10 @@ function LoginForm({ prefix }: { prefix: string }): React.ReactNode {
</div>
<div className="text-center mt-3">
{prefix === 'login' && (
<Link to="/reset-password" className="text-decoration-none ms-2">
<Link
to="/reset-password"
className="text-decoration-none ms-2"
>
{t('login_forgot_password')}
</Link>
)}
+27 -5
View File
@@ -1,4 +1,4 @@
import React, { useContext, useEffect } from 'react';
import React, { useContext, useEffect, useState } from 'react';
import { Nav } from 'react-bootstrap';
import { NavLink } from 'react-router';
import { useTranslation } from 'react-i18next';
@@ -22,6 +22,7 @@ interface Props {
function Sidebar(props: React.PropsWithChildren<Props>): React.ReactNode {
const { signOut, user } = useContext(AuthContext);
const { currentPage, setNewPage } = useContext(SidebarContext);
const [lastSeen, setLastSeen] = useState('');
const { t } = useTranslation();
const build = `Build: ${env.VITE_BUILD}`;
@@ -46,7 +47,25 @@ function Sidebar(props: React.PropsWithChildren<Props>): React.ReactNode {
return '';
};
useEffect(() => {}, [user, currentPage]);
useEffect(() => {
if (user && user.lastLogin) {
const utcString = user.lastLogin.endsWith('Z') ? user.lastLogin : `${user.lastLogin}Z`;
const date = new Date(utcString);
if (Number.isNaN(date.getTime())) {
setLastSeen('');
return;
}
const fmtted = date.toLocaleString(navigator.language, {
timeZone: Intl.DateTimeFormat().resolvedOptions().timeZone,
day: '2-digit',
month: '2-digit',
year: 'numeric',
hour: '2-digit',
minute: '2-digit'
});
setLastSeen(fmtted);
}
}, [user]);
return (
<>
@@ -95,9 +114,12 @@ function Sidebar(props: React.PropsWithChildren<Props>): React.ReactNode {
{/* Footer at the bottom */}
<div className="mt-auto text-center text-muted py-3">
<small data-testid="footer-text">
{build}
</small>
{lastSeen && (
<div>
<small>{t('sidebar_last_seen', { time: lastSeen })}</small>
</div>
)}
<small data-testid="footer-text">{build}</small>
</div>
</div>
+1
View File
@@ -187,6 +187,7 @@ const enTranslations = {
account_delete_btn: 'Yes, delete everything',
footer_my_account: 'My Account ',
sidebar_last_seen: 'Last seen {{time}}',
logout: 'Logout'
};
+7 -1
View File
@@ -90,6 +90,8 @@ export const serverResponsesTranslations: Record<string, string> = {
WRONG_IDENTIFICATION_pt_br: 'Identificação incorreta ou faltando',
WRONG_OR_MISSING_INFO_pt_br: 'Informação errada ou incompleta!',
NOTHING_TO_UPDATE_pt_br: 'Nada para atualizar!',
EMAIL_NOT_CONFIRMED_pt_br: 'E-mail não confirmado!',
CONFIRMATION_RESENT_pt_br: 'E-mail de confirmação reenviado! Por favor, verifique a pasta de spam.',
BAD_PASSWORD_8_es: 'Contraseña inválida: La contraseña debe tener al menos 8 caracteres',
BAD_PASSWORD_7_es: 'Contraseña inválida: La contraseña debe tener al menos 8 caracteres, 1 carácter especial',
@@ -117,6 +119,8 @@ export const serverResponsesTranslations: Record<string, string> = {
WRONG_IDENTIFICATION_es: 'Identificación incorrecta o faltante',
WRONG_OR_MISSING_INFO_es: '¡Información incorrecta o incompleta!',
NOTHING_TO_UPDATE_es: '¡Nada que actualizar!',
EMAIL_NOT_CONFIRMED_es: '¡Correo no confirmado!',
CONFIRMATION_RESENT_es: '¡Correo de confirmación reenviado! Por favor, revisa la carpeta de spam.',
BAD_PASSWORD_8_ru: 'Неправильный пароль: Пароль должен содержать не менее 8 символов.',
BAD_PASSWORD_7_ru: 'Неправильный пароль: Пароль должен содержать не менее 8 символов, 1 специальный символ.',
@@ -143,5 +147,7 @@ export const serverResponsesTranslations: Record<string, string> = {
UNKNOWN_ru: 'Неизвестная ошибка',
WRONG_IDENTIFICATION_ru: 'Неправильная или отсутствующая идентификация',
WRONG_OR_MISSING_INFO_ru: 'Неверная или отсутствующая информация!',
NOTHING_TO_UPDATE_ru: 'Нечего обновлять!'
NOTHING_TO_UPDATE_ru: 'Нечего обновлять!',
EMAIL_NOT_CONFIRMED_ru: 'Электронная почта не подтверждена!',
CONFIRMATION_RESENT_ru: 'Письмо с подтверждением отправлено еще раз! Пожалуйста, проверьте папку со спамом.'
};
+1
View File
@@ -188,6 +188,7 @@ const ptBrTranslations = {
account_delete_btn: 'Sim, deletar tudo',
footer_my_account: 'Minha Conta ',
sidebar_last_seen: 'Último acesso {{time}}',
logout: 'Sair'
};
+1
View File
@@ -187,6 +187,7 @@ const ruTranslations = {
account_delete_btn: 'Да, удалить все',
footer_my_account: 'Мой аккаунт ',
sidebar_last_seen: 'Последний вход {{time}}',
logout: 'Выйти'
};
+3 -1
View File
@@ -24,5 +24,7 @@ export const serverResponses: Record<string, string> = {
'Wrong or missing identification': 'WRONG_IDENTIFICATION',
'Wrong or missing information!': 'WRONG_OR_MISSING_INFO',
'Invalid credentials': 'INVALID_CREDENTIALS',
'Nothing to update!': 'NOTHING_TO_UPDATE'
'Nothing to update!': 'NOTHING_TO_UPDATE',
'Email not confirmed!': 'EMAIL_NOT_CONFIRMED',
'Confirmation email re-sent! Please check the spam folder.': 'CONFIRMATION_RESENT'
};
+1
View File
@@ -187,6 +187,7 @@ const esTranslations = {
account_delete_btn: 'Sí, borra todo',
footer_my_account: 'Mi Cuenta ',
sidebar_last_seen: 'Último acceso {{time}}',
logout: 'Cerrar sesión'
};
+1
View File
@@ -4,6 +4,7 @@ import { UserRegistration } from '../types/UserRegistration';
export interface AuthContextData {
signed: boolean;
loading: boolean;
user: UserResponse | undefined;
checkCurrentAuthUser: (pathname: string) => Promise<void>;
signIn: (email: string, password: string) => Promise<string>;
+16 -37
View File
@@ -1,7 +1,7 @@
import React, { useMemo, useState } from 'react';
import React, { useEffect, useMemo, useState } from 'react';
import AuthContext, { AuthContextData } from './AuthContext';
import { API_TOKEN, REDIRECT_PATH, USER_DATA } from '../app-constants/app-constants';
import { SigninResponse } from '../types/SigninResponse';
import { SignInResponse } from '../types/SigninResponse';
import api from '../api-service/api';
import ApiConfig from '../api-service/apiConfig';
import { UserResponse } from '../types/UserResponse';
@@ -13,17 +13,17 @@ interface Props {
const AuthProvider: React.FC<{ children: React.ReactNode }> = ({ children }: Props) => {
const [signed, setSigned] = useState<boolean>(false);
const [loading, setLoading] = useState<boolean>(true);
const [user, setUser] = useState<UserResponse | undefined>();
const [isAdmin, setIsAdmin] = useState<boolean>(false);
const [intervalInstance, setIntervalInstance] = useState<NodeJS.Timeout | null>(null);
const fetchCurrentSession = async (pathname: string): Promise<SigninResponse | undefined> => {
const fetchCurrentSession = async (pathname: string): Promise<SignInResponse | undefined> => {
const token = localStorage.getItem(API_TOKEN);
if (!token) {
return undefined;
}
try {
const bearerToken: SigninResponse = await api.getJSON(ApiConfig.refreshTokenUrl);
const bearerToken: SignInResponse = await api.getJSON(ApiConfig.refreshTokenUrl);
setSigned(true);
return bearerToken;
}
@@ -64,7 +64,7 @@ const AuthProvider: React.FC<{ children: React.ReactNode }> = ({ children }: Pro
};
const checkCurrentAuthUser = async (pathname: string): Promise<void> => {
const bearerToken: SigninResponse | undefined = await fetchCurrentSession(pathname);
const bearerToken: SignInResponse | undefined = await fetchCurrentSession(pathname);
if (bearerToken && bearerToken.token) {
const userLocal = updateUserSession(null, bearerToken.token);
if (userLocal) {
@@ -89,7 +89,7 @@ const AuthProvider: React.FC<{ children: React.ReactNode }> = ({ children }: Pro
const signIn = async (email: string, password: string): Promise<string> => {
try {
const payload = { email, password };
const registerResponse: SigninResponse = await api.postJSON(ApiConfig.signInUrl, payload);
const registerResponse: SignInResponse = await api.postJSON(ApiConfig.signInUrl, payload);
const currentUser: UserResponse = {
userId: registerResponse.userId,
name: registerResponse.name,
@@ -97,7 +97,8 @@ const AuthProvider: React.FC<{ children: React.ReactNode }> = ({ children }: Pro
admin: registerResponse.admin,
createdAt: new Date(registerResponse.createdAt),
gravatarImageUrl: registerResponse.gravatarImageUrl,
lang: registerResponse.lang
lang: registerResponse.lang,
lastLogin: registerResponse.lastLogin
};
setSigned(true);
@@ -114,39 +115,16 @@ const AuthProvider: React.FC<{ children: React.ReactNode }> = ({ children }: Pro
setSigned(false);
setUser(undefined);
setIsAdmin(false);
if (intervalInstance) {
clearInterval(intervalInstance);
setIntervalInstance(null);
}
localStorage.removeItem(API_TOKEN);
localStorage.removeItem(REDIRECT_PATH);
localStorage.removeItem(USER_DATA);
};
const refreshTokenPvt = async (): Promise<void> => {
const bearerToken: SigninResponse | undefined = await fetchCurrentSession('/');
if (bearerToken) {
updateUserSession(null, bearerToken.token);
}
return Promise.resolve();
};
// 2 minutes
const second = 1000;
const minute = second * 60;
const REFRESH_TIMER = minute * 2;
if (intervalInstance == null && signed) {
const instance = setInterval(() => {
refreshTokenPvt()
.then(() => {
console.debug('User session successfully refreshed!');
})
.catch(e => console.error(e));
}, REFRESH_TIMER);
setIntervalInstance(instance);
}
useEffect(() => {
checkCurrentAuthUser(window.location.pathname)
.catch(e => console.error(e))
.finally(() => setLoading(false));
}, []);
const updateUser = (userUpdated: UserResponse): void => {
setUser(userUpdated);
@@ -155,6 +133,7 @@ const AuthProvider: React.FC<{ children: React.ReactNode }> = ({ children }: Pro
const contextValue: AuthContextData = useMemo(() => ({
signed,
loading,
user,
checkCurrentAuthUser,
signIn,
@@ -162,7 +141,7 @@ const AuthProvider: React.FC<{ children: React.ReactNode }> = ({ children }: Pro
register,
isAdmin,
updateUser
}), [signed, user, checkCurrentAuthUser, signIn, signOut, register, isAdmin, updateUser]);
}), [signed, loading, user, checkCurrentAuthUser, signIn, signOut, register, isAdmin, updateUser]);
return (
<AuthContext.Provider value={contextValue}>
+1 -1
View File
@@ -19,6 +19,6 @@ function ProtectedRoute(): React.ReactNode {
return <Navigate to="/" replace />;
}
return <Outlet />;
};
}
export default ProtectedRoute;
+2 -1
View File
@@ -1,4 +1,4 @@
export type SigninResponse = {
export type SignInResponse = {
userId: number;
name: string;
email: string;
@@ -7,4 +7,5 @@ export type SigninResponse = {
token: string;
gravatarImageUrl: string;
lang: string;
lastLogin: string;
};
-5
View File
@@ -1,5 +0,0 @@
export type SummaryResponse = {
pendingTaskCount: number;
doneTaskCount: number;
notesCount: number;
};
+1
View File
@@ -6,4 +6,5 @@ export type UserResponse = {
createdAt: Date;
gravatarImageUrl: string;
lang: string;
lastLogin: string;
};
+3 -3
View File
@@ -105,7 +105,7 @@ function Account(): React.ReactNode {
await patchUserInfo(patchPayload);
};
const handleSubmit = async (event?: React.FormEvent<HTMLFormElement>): Promise<void> => {
const handleSubmit = async (event?: React.SubmitEvent<HTMLFormElement>): Promise<void> => {
event?.preventDefault();
event?.stopPropagation();
setValidated(true);
@@ -164,7 +164,7 @@ function Account(): React.ReactNode {
/>
<Form noValidate validated={validated} onSubmit={handleSubmit} className="mt-4">
{/* User name */}
{/* Username */}
<FormInput
labelText={t('account_form_first_name_label')}
iconName="Person"
@@ -205,7 +205,7 @@ function Account(): React.ReactNode {
onChange={(e: React.ChangeEvent<HTMLInputElement>) => {
setUserPassword(e.target.value);
}}
data_testid="account-password-one"
dataTestId="account-password-one"
/>
{/* User password again */}
+1 -1
View File
@@ -74,7 +74,7 @@ const EmailConfirmation: React.FC = () => {
<h1 className="mb-4" data-testid="email-confirm-success-msg">{t('email_confirmation_success')}</h1>
<p className="mb-4">{t('email_confirmation_success_text')}</p>
<Link to="/login" className="btn btn-success px-4 py-2"style={{ fontWeight: 'bold', borderRadius: '6px' }}>
<Link to="/login" className="btn btn-success px-4 py-2" style={{ fontWeight: 'bold', borderRadius: '6px' }}>
{t('email_confirmation_btn')}
</Link>
</>
+10 -7
View File
@@ -82,7 +82,7 @@ function Home(): React.ReactNode {
const markAsDone = async (task: TaskResponse): Promise<void> => {
try {
await api.deleteNoContent(`${ApiConfig.tasksUrl}/${task.id}`);
loadAllTasks();
await loadAllTasks();
}
catch (e) {
handleError(e);
@@ -97,7 +97,7 @@ function Home(): React.ReactNode {
const deleteNote = async (noteIdParam: number) => {
try {
await api.deleteNoContent(`${ApiConfig.notesUrl}/${noteIdParam}`);
loadAllNotes();
await loadAllNotes();
}
catch (e) {
handleError(e);
@@ -113,7 +113,7 @@ function Home(): React.ReactNode {
try {
const action = note.shared ? 'unshare' : 'share';
await api.putJSON(`${ApiConfig.notesUrl}/${note.id}/${action}`, {});
loadAllNotes();
await loadAllNotes();
}
catch (e) {
handleError(e);
@@ -176,10 +176,9 @@ function Home(): React.ReactNode {
}
else {
let filteredTasks = allTasks.filter((task: TaskResponse) => {
const shouldFilter = task.description.toLowerCase().includes(text.toLowerCase())
return task.description.toLowerCase().includes(text.toLowerCase())
|| task.tag.toLowerCase().includes(text.toLowerCase())
|| task.urls.filter((url: string) => url.includes(text.toLowerCase())).length > 0;
return shouldFilter;
});
if (tagToFilter === 'untagged') {
@@ -487,7 +486,7 @@ function Home(): React.ReactNode {
</Col>
<Col xs={2} className="text-end">
<Dropdown>
<Dropdown.Toggle variant="success">
<Dropdown.Toggle variant="success" data-testid={`task-dropdown-menu-${task.id}`}>
<ThreeDotsVertical />
</Dropdown.Toggle>
<Dropdown.Menu>
@@ -498,7 +497,11 @@ function Home(): React.ReactNode {
</Dropdown.Item>
</NavLink>
)}
<Dropdown.Item as="button" onClick={() => markAsDone(task)}>
<Dropdown.Item
as="button"
onClick={() => markAsDone(task)}
data-testid={`task-dropdown-done-item-${task.id}`}
>
{task.done ? t('task_table_action_undone') : t('task_table_action_done')}
</Dropdown.Item>
</Dropdown.Menu>
+1 -1
View File
@@ -12,7 +12,7 @@ import './styles.scss';
* Landing page component.
*
* This component displays the landing page of the application,
* providing navigation to login or register.
* providing navigation to log in or register.
* It also checks for an existing user session.
*
* @returns {React.ReactNode} The Landing page component.
+2 -2
View File
@@ -122,13 +122,13 @@ function NoteAdd(): React.ReactNode {
*
* @param {React.FormEvent<HTMLFormElement>} event - The form submission event.
*/
const handleSubmit = async (event: React.FormEvent<HTMLFormElement>): Promise<void> => {
const handleSubmit = async (event: React.SubmitEvent<HTMLFormElement>): Promise<void> => {
event.preventDefault();
event.stopPropagation();
setValidated(true);
const form = event.currentTarget;
if (form.checkValidity() === false) {
if (!form.checkValidity()) {
setErrorMessage(translateServerResponse('Please fill in all the fields', i18n.language));
return;
}
+1 -1
View File
@@ -5,7 +5,7 @@ import LoginForm from '../../components/LoginForm';
* Register page component.
*
* This component displays the register page of the application,
* providing navigation to login or back to home.
* providing navigation to log in or back to home.
*
* @returns {React.ReactNode} The Register page component.
*/
+2 -2
View File
@@ -125,13 +125,13 @@ function TaskAdd(): React.ReactNode {
*
* @param {React.FormEvent<HTMLFormElement>} event - The form submission event.
*/
const handleSubmit = async (event: React.FormEvent<HTMLFormElement>): Promise<void> => {
const handleSubmit = async (event: React.SubmitEvent<HTMLFormElement>): Promise<void> => {
event.preventDefault();
event.stopPropagation();
setValidated(true);
const form = event.currentTarget;
if (form.checkValidity() === false) {
if (!form.checkValidity()) {
setErrorMessage(translateServerResponse('Please fill in all the fields', i18n.language));
return;
}
+4 -1
View File
@@ -17,7 +17,10 @@
"allowSyntheticDefaultImports": true,
"forceConsistentCasingInFileNames": true,
"noFallthroughCasesInSwitch": true,
"moduleResolution": "node",
"types": [
"node"
],
"moduleResolution": "bundler",
"resolveJsonModule": true,
"isolatedModules": true,
"noEmit": true,
+2
View File
@@ -17,5 +17,7 @@ docker run -d --rm \
-e POSTGRES_HOST=$POSTGRES_HOST \
-e CORS_ALLOWED_ORIGINS=$CORS_ALLOWED_ORIGINS \
-e SERVER_SERVLET_CONTEXT_PATH=$SERVER_SERVLET_CONTEXT_PATH \
-e MAILGUN_APIKEY=$MAILGUN_APIKEY \
-e SECURITY_KEY=$SECURITY_KEY \
-e BUILD=ghcr.io/ricardo-campos-org/react-typescript-todolist/server:$PR \
ghcr.io/ricardo-campos-org/react-typescript-todolist/server:$PR
+2 -2
View File
@@ -157,14 +157,14 @@
<p>If you made this change, no further action is needed.</p>
<p>
If you did not make this change, secure your account immediately and contact
<a class="link" href="mailto:ricardompcampos@gmail.com">ricardompcampos@gmail.com</a>.
<a class="link" href="mailto:support@tasknote.cc">support@tasknote.cc</a>.
</p>
</td>
</tr>
<tr>
<td class="footer">
This is an automatic message from Tasknote, please do not reply.<br />
Need help? Contact <a class="link" href="mailto:ricardompcampos@gmail.com">ricardompcampos@gmail.com</a>.
Need help? Contact <a class="link" href="mailto:support@tasknote.cc">support@tasknote.cc</a>.
</td>
</tr>
</table>
@@ -125,7 +125,7 @@
<p class="notice">
If this was you, no action is required. If this was not you, secure your account
right away and contact
<a class="link" href="mailto:ricardompcampos@gmail.com">ricardompcampos@gmail.com</a>.
<a class="link" href="mailto:support@tasknote.cc">support@tasknote.cc</a>.
</p>
<p>Thank you for helping keep your account safe.</p>
@@ -134,7 +134,7 @@
<tr>
<td class="footer">
This is an automatic message from Tasknote, please do not reply.<br />
Need help? Contact <a class="link" href="mailto:ricardompcampos@gmail.com">ricardompcampos@gmail.com</a>.
Need help? Contact <a class="link" href="mailto:support@tasknote.cc">support@tasknote.cc</a>.
</td>
</tr>
</table>
+1 -1
View File
@@ -167,7 +167,7 @@
<tr>
<td class="footer">
This is an automatic message from Tasknote, please do not reply.<br />
Need help? Contact <a class="link" href="mailto:ricardompcampos@gmail.com">ricardompcampos@gmail.com</a>.
Need help? Contact <a class="link" href="mailto:support@tasknote.cc">support@tasknote.cc</a>.
</td>
</tr>
</table>
+1 -1
View File
@@ -157,7 +157,7 @@
<tr>
<td class="footer">
This is an automatic message from Tasknote, please do not reply.<br />
Need help? Contact <a class="link" href="mailto:ricardompcampos@gmail.com">ricardompcampos@gmail.com</a>.
Need help? Contact <a class="link" href="mailto:support@tasknote.cc">support@tasknote.cc</a>.
</td>
</tr>
</table>
+8 -12
View File
@@ -5,13 +5,13 @@
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>4.0.5</version>
<version>4.0.6</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>br.com.tasknoteapp</groupId>
<artifactId>server</artifactId>
<version>20</version>
<version>26</version>
<name>tasknote-api</name>
<description>Java backend REST API to serve TaskNote frontend client</description>
@@ -53,7 +53,7 @@
<surefire.version>3.5.5</surefire.version>
<jacoco.version>0.8.14</jacoco.version>
<checkstyle.version>3.6.0</checkstyle.version>
<springboot.version>4.0.5</springboot.version>
<springboot.version>4.0.6</springboot.version>
<jjwt.version>0.12.6</jjwt.version>
</properties>
@@ -100,10 +100,6 @@
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-security</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-mail</artifactId>
</dependency>
<!-- Database -->
<dependency>
@@ -165,7 +161,7 @@
</dependencies>
<build>
<plugins>
<plugins>
<plugin>
<groupId>org.hibernate.orm</groupId>
<artifactId>hibernate-maven-plugin</artifactId>
@@ -187,7 +183,7 @@
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-failsafe-plugin</artifactId>
<version>${failsafe.version}</version>
<version>${failsafe.version}</version>
<executions>
<execution>
<id>integration-tests</id>
@@ -209,7 +205,7 @@
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>${surefire.version}</version>
<version>${surefire.version}</version>
<configuration>
<argLine>@{argLine} -Xmx1024m</argLine>
<skipTests>${skip.unit.tests}</skipTests>
@@ -221,7 +217,7 @@
<plugin>
<groupId>org.jacoco</groupId>
<artifactId>jacoco-maven-plugin</artifactId>
<version>${jacoco.version}</version>
<version>${jacoco.version}</version>
<configuration>
<skip>${jacoco.skip}</skip>
<excludes>
@@ -330,7 +326,7 @@
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-checkstyle-plugin</artifactId>
<version>${checkstyle.version}</version>
<version>${checkstyle.version}</version>
<dependencies>
<dependency>
<groupId>com.puppycrawl.tools</groupId>
@@ -1,6 +1,7 @@
package br.com.tasknoteapp.server.config;
import java.util.Arrays;
import org.jspecify.annotations.NonNull;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Value;
@@ -22,7 +23,7 @@ public class CorsConfig implements WebMvcConfigurer {
*
* @param registry CorsRegistry instance.
*/
public void addCorsMappings(CorsRegistry registry) {
public void addCorsMappings(@NonNull CorsRegistry registry) {
if (allowedOrigins != null && allowedOrigins.length > 0) {
logger.info("CORS policy allowed origins: {}", Arrays.asList(allowedOrigins));
@@ -39,10 +39,9 @@ public class SecurityConfig {
*
* @param http instance of HttpSecurity containing the request.
* @return SecurityFilterChain with allowed endpoints and all configuration.
* @throws Exception due to bad configuration possibilities.
*/
@Bean
public SecurityFilterChain filterChain(HttpSecurity http) throws Exception {
public SecurityFilterChain filterChain(HttpSecurity http) {
http.cors(Customizer.withDefaults())
.csrf(AbstractHttpConfigurer::disable)
.authorizeHttpRequests(
@@ -99,11 +98,9 @@ public class SecurityConfig {
*
* @param config AuthenticationConfiguration instance
* @return AuthenticationManager instance
* @throws Exception if issues occur.
*/
@Bean
public AuthenticationManager authenticationManager(AuthenticationConfiguration config)
throws Exception {
public AuthenticationManager authenticationManager(AuthenticationConfiguration config) {
return config.getAuthenticationManager();
}
}
@@ -5,7 +5,6 @@ import java.sql.Connection;
import java.util.HashMap;
import java.util.Map;
import javax.sql.DataSource;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.GetMapping;
@@ -15,9 +14,14 @@ import org.springframework.web.bind.annotation.RestController;
@RestController
public class HealthController {
@Autowired private DataSource dataSource;
private final DataSource dataSource;
@Autowired private AppVersionService appVersionService;
private final AppVersionService appVersionService;
HealthController(DataSource dataSource, AppVersionService appVersionService) {
this.dataSource = dataSource;
this.appVersionService = appVersionService;
}
/**
* Endpoint to check the health of the application and its database connection.
@@ -33,7 +33,7 @@ public class NoteController {
/**
* Get all notes.
*
* @return List of NoteResponse with all found notes and its urls, if any.
* @return List of NoteResponse with all found notes and its URLs, if any.
*/
@GetMapping
public List<NoteResponse> getAllNotes() {
@@ -44,7 +44,7 @@ public class NoteController {
* Get a note by its ID.
*
* @param id Note identification.
* @return NoteResponse with note data and its urls, if any.
* @return NoteResponse with note data and its URLs, if any.
* @throws NoteNotFoundException when note not found.
*/
@GetMapping("/{id}")
@@ -56,7 +56,7 @@ public class NoteController {
* Patch a note.
*
* @param id The note id to be patched.
* @param noteRequest Note data to be patched, including optionally its urls.
* @param noteRequest Note data to be patched, including optionally its URLs.
* @return NoteResponse containing data that was updated.
* @throws NoteNotFoundException when note not found.
*/
@@ -70,8 +70,8 @@ public class NoteController {
/**
* Create a note.
*
* @param noteRequest Note data to be created, including optionally its urls. Following RESTful
* API pattern from https://restfulapi.net/rest-put-vs-post/.
* @param noteRequest Note data to be created, including optionally its URLs. Following RESTful
* API pattern from <a href="https://restfulapi.net/rest-put-vs-post/">docs</a>.
* @return NoteResponse containing data that was created.
*/
@PostMapping
@@ -4,6 +4,7 @@ import br.com.tasknoteapp.server.exception.BaseBadRequestException;
import br.com.tasknoteapp.server.exception.BaseNotFoundException;
import br.com.tasknoteapp.server.exception.BaseServiceUnavailableException;
import br.com.tasknoteapp.server.exception.EmailAlreadyExistsException;
import br.com.tasknoteapp.server.exception.EmailNotConfirmedException;
import br.com.tasknoteapp.server.exception.InvalidCredentialsException;
import br.com.tasknoteapp.server.exception.UserForbiddenException;
import br.com.tasknoteapp.server.response.ValidationExceptionResponse;
@@ -47,6 +48,13 @@ public class RestExceptionController {
.body(new ValidationExceptionResponse("access", ex.getReason()));
}
@ExceptionHandler(EmailNotConfirmedException.class)
ResponseEntity<ValidationExceptionResponse> handleEmailNotConfirmedException(
EmailNotConfirmedException ex) {
return ResponseEntity.status(HttpStatus.FORBIDDEN)
.body(new ValidationExceptionResponse("access", ex.getReason()));
}
/* 404 - Not Found */
@ExceptionHandler(BaseNotFoundException.class)
ResponseEntity<ValidationExceptionResponse> handleNotFoundException(BaseNotFoundException ex) {
@@ -32,7 +32,7 @@ public class TaskController {
/**
* Get all tasks.
*
* @return List of TaskResponse with all found tasks and its urls, if any.
* @return List of TaskResponse with all found tasks and its URLs, if any.
*/
@GetMapping
public List<TaskResponse> getAllTasks() {
@@ -43,7 +43,7 @@ public class TaskController {
* Get a task by its ID.
*
* @param id Task identification.
* @return TaskResponse with task data and its urls, if any.
* @return TaskResponse with task data and its URLs, if any.
* @throws TaskNotFoundException when task not found.
*/
@GetMapping("/{id}")
@@ -55,7 +55,7 @@ public class TaskController {
* Patch a task.
*
* @param id The task id to be patched.
* @param taskRequest Task data to be patched, including optionally its urls.
* @param taskRequest Task data to be patched, including optionally its URLs.
* @return TaskResponse containing data that was updated.
* @throws TaskNotFoundException when task not found.
*/
@@ -68,8 +68,8 @@ public class TaskController {
/**
* Create a task.
*
* @param taskRequest Task data to be created, including optionally its urls. Following RESTful
* API pattern from https://restfulapi.net/rest-put-vs-post/.
* @param taskRequest Task data to be created, including optionally its URLs. Following RESTful
* API pattern from <a href="https://restfulapi.net/rest-put-vs-post/">docs</a>.
* @return TaskResponse containing data that was created.
*/
@PostMapping
@@ -35,7 +35,7 @@ public class UserSessionController {
/**
* Delete all the user data and information from the server.
*
* @returns {@link UserResponse} with the user information.
* @return {@link UserResponse} with the user information.
*/
@DeleteMapping("/delete-account")
public ResponseEntity<UserResponse> deleteAccount() {
@@ -29,7 +29,7 @@ public class NoteEntity {
@ManyToOne(fetch = FetchType.LAZY)
private UserEntity user;
@Column(name = "tag", nullable = true, length = 30)
@Column(name = "tag", length = 30)
private String tag;
@Column(name = "last_update")
@@ -39,7 +39,7 @@ public class TaskEntity {
@Column(name = "high_priority")
private Boolean highPriority;
@Column(name = "tag", nullable = true, length = 30)
@Column(name = "tag", length = 30)
private String tag;
public Long getId() {
@@ -17,14 +17,6 @@ public class TaskUrlEntityPk {
this.url = url;
}
public Long getTaskId() {
return taskId;
}
public void setTaskId(Long taskId) {
this.taskId = taskId;
}
public String getUrl() {
return url;
}
@@ -34,30 +34,33 @@ public class UserEntity implements UserDetails {
@Column(name = "created_at", nullable = false)
private LocalDateTime createdAt;
@Column(name = "inactivated_at", nullable = true)
@Column(name = "inactivated_at")
private LocalDateTime inactivatedAt;
@Column(name = "name", length = 20)
private String name;
@Column(name = "email_confirmed_at", nullable = true)
@Column(name = "email_confirmed_at")
private LocalDateTime emailConfirmedAt;
@Column(name = "email_uuid", columnDefinition = "uuid", nullable = true, unique = true)
@Column(name = "email_uuid", columnDefinition = "uuid", unique = true)
private UUID emailUuid;
@Column(name = "reset_password_expiration", nullable = true)
@Column(name = "reset_password_expiration")
private LocalDateTime resetPasswordExpiration;
@Column(name = "reset_token", nullable = true, length = 35)
@Column(name = "reset_token", length = 35)
private String resetToken;
@Column(name = "lang", nullable = true, length = 6)
@Column(name = "lang", length = 6)
private String lang;
@Column(name = "last_password_change", nullable = false)
private LocalDateTime lastPasswordChange;
@Column(name = "last_login")
private LocalDateTime lastLogin;
@Override
public Collection<? extends GrantedAuthority> getAuthorities() {
return List.of();
@@ -69,26 +72,6 @@ public class UserEntity implements UserDetails {
return email;
}
@Override
public boolean isAccountNonExpired() {
return true;
}
@Override
public boolean isAccountNonLocked() {
return true;
}
@Override
public boolean isCredentialsNonExpired() {
return true;
}
@Override
public boolean isEnabled() {
return true;
}
public Long getId() {
return id;
}
@@ -193,4 +176,12 @@ public class UserEntity implements UserDetails {
public void setLastPasswordChange(LocalDateTime lastPasswordChange) {
this.lastPasswordChange = lastPasswordChange;
}
public LocalDateTime getLastLogin() {
return lastLogin;
}
public void setLastLogin(LocalDateTime lastLogin) {
this.lastLogin = lastLogin;
}
}
@@ -0,0 +1,14 @@
package br.com.tasknoteapp.server.exception;
import org.springframework.http.HttpStatus;
import org.springframework.web.bind.annotation.ResponseStatus;
import org.springframework.web.server.ResponseStatusException;
/** This class represents an Email Not Confirmed exception. */
@ResponseStatus(code = HttpStatus.FORBIDDEN)
public class EmailNotConfirmedException extends ResponseStatusException {
public EmailNotConfirmedException() {
super(HttpStatus.FORBIDDEN, "Email not confirmed!");
}
}
@@ -1,9 +0,0 @@
package br.com.tasknoteapp.server.exception;
/** This exception represents an error when sending email messages. */
public class MailServiceException extends BaseServiceUnavailableException {
public MailServiceException(String error) {
super("mail", error);
}
}
@@ -6,7 +6,7 @@ import jakarta.servlet.ServletException;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
import java.io.IOException;
import org.springframework.beans.factory.annotation.Autowired;
import org.jspecify.annotations.NonNull;
import org.springframework.stereotype.Component;
import org.springframework.web.filter.OncePerRequestFilter;
@@ -14,11 +14,15 @@ import org.springframework.web.filter.OncePerRequestFilter;
@Component
public class HeaderVersionFilter extends OncePerRequestFilter {
@Autowired private AppVersionService appVersionService;
private final AppVersionService appVersionService;
HeaderVersionFilter(AppVersionService appVersionService) {
this.appVersionService = appVersionService;
}
@Override
protected void doFilterInternal(
HttpServletRequest request,
@NonNull HttpServletRequest request,
HttpServletResponse response,
FilterChain filterChain)
throws ServletException, IOException {
@@ -8,7 +8,7 @@ import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.Objects;
import org.springframework.beans.factory.annotation.Autowired;
import org.jspecify.annotations.NonNull;
import org.springframework.security.authentication.UsernamePasswordAuthenticationToken;
import org.springframework.security.core.context.SecurityContext;
import org.springframework.security.core.context.SecurityContextHolder;
@@ -21,15 +21,20 @@ import org.springframework.web.filter.OncePerRequestFilter;
@Component
public class JwtAuthenticationFilter extends OncePerRequestFilter {
@Autowired private UserService userService;
private final UserService userService;
@Autowired private JwtService jwtService;
private final JwtService jwtService;
JwtAuthenticationFilter(UserService userService, JwtService jwtService) {
this.userService = userService;
this.jwtService = jwtService;
}
@Override
protected void doFilterInternal(
HttpServletRequest request,
HttpServletResponse response,
FilterChain filterChain)
@NonNull HttpServletResponse response,
@NonNull FilterChain filterChain)
throws ServletException, IOException {
final String authorizationHeader = request.getHeader("Authorization");
@@ -1,6 +1,7 @@
package br.com.tasknoteapp.server.hint;
import jakarta.servlet.http.HttpServletRequest;
import org.jspecify.annotations.NonNull;
import org.springframework.aot.hint.ProxyHints;
import org.springframework.aot.hint.RuntimeHints;
import org.springframework.aot.hint.RuntimeHintsRegistrar;
@@ -9,7 +10,7 @@ import org.springframework.aot.hint.RuntimeHintsRegistrar;
public class HttpServletRequestRuntimeHint implements RuntimeHintsRegistrar {
@Override
public void registerHints(RuntimeHints hints, ClassLoader classLoader) {
public void registerHints(@NonNull RuntimeHints hints, ClassLoader classLoader) {
try {
ProxyHints proxies = hints.proxies();
proxies.registerJdkProxy(HttpServletRequest.class);
@@ -2,7 +2,6 @@ package br.com.tasknoteapp.server.repository;
import br.com.tasknoteapp.server.entity.UserPwdLimitEntity;
import java.util.List;
import org.springframework.data.domain.Sort;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Modifying;
import org.springframework.data.jpa.repository.Query;
@@ -10,8 +9,6 @@ import org.springframework.data.jpa.repository.Query;
/** This interface represents a user password limit repository, for database access. */
public interface UserPwdLimitRepository extends JpaRepository<UserPwdLimitEntity, Long> {
List<UserPwdLimitEntity> findAllByUser_id(Long userId, Sort sort);
List<UserPwdLimitEntity> findTop3ByUser_idOrderByWhenHappenedDesc(Long userId);
@Modifying
@@ -10,11 +10,9 @@ public class LoginRequest {
@NotNull private String password;
private String passwordAgain;
private final String passwordAgain;
private String lang;
public LoginRequest() {}
private final String lang;
/**
* Constructs a LoginRequest with the specified email and password.
@@ -51,18 +49,10 @@ public class LoginRequest {
return passwordAgain;
}
public void setPasswordAgain(String passwordAgain) {
this.passwordAgain = passwordAgain;
}
public String lang() {
return lang;
}
public void setLang(String lang) {
this.lang = lang;
}
@Override
public boolean equals(Object o) {
if (this == o) {
@@ -8,6 +8,6 @@ public record NotePatchRequest(
String description,
@Pattern(
regexp = "^(https?://.*|#.*)?$",
message = "URL must start with http://, https:// or #")
message = "URL must start with https:// or #")
String url,
String tag) {}
@@ -9,6 +9,6 @@ public record NoteRequest(
@NotNull String description,
@Pattern(
regexp = "^(https?://.*|#.*)?$",
message = "URL must start with http://, https:// or #")
message = "URL must start with https:// or #")
String url,
String tag) {}
@@ -1,4 +0,0 @@
package br.com.tasknoteapp.server.request;
/** This record represents a Note Url payload to be patched. */
public record NoteUrlPatchRequest(Long id, String url) {}
@@ -8,12 +8,6 @@ import jakarta.validation.constraints.NotNull;
public class ResendConfirmationRequest {
@Email @NotNull private String email;
public ResendConfirmationRequest() {}
public ResendConfirmationRequest(String email) {
this.email = email;
}
public String email() {
return email.trim().toLowerCase();
}
@@ -10,7 +10,7 @@ public record TaskPatchRequest(
List<
@Pattern(
regexp = "^(https?://.*|#.*)?$",
message = "URL must start with http://, https:// or #")
message = "URL must start with https:// or #")
String>
urls,
String dueDate,
@@ -11,7 +11,7 @@ public record TaskRequest(
List<
@Pattern(
regexp = "^(https?://.*|#.*)?$",
message = "URL must start with http://, https:// or #")
message = "URL must start with https:// or #")
String>
urls,
String dueDate,
@@ -1,4 +0,0 @@
package br.com.tasknoteapp.server.request;
/** This record represents a Task Url payload to be patched. */
public record TaskUrlPatchRequest(Long id, String url) {}
@@ -3,16 +3,16 @@ package br.com.tasknoteapp.server.response;
import br.com.tasknoteapp.server.entity.NoteEntity;
import br.com.tasknoteapp.server.util.TimeAgoUtil;
/** This record represents a task and its urls object to be returned. */
/** This record represents a task and its URLs object to be returned. */
public record NoteResponse(
Long id, String title, String description, String url, String lastUpdate, String tag,
boolean shared, String shareToken) {
/**
* Creates a NoteResponse given a NoteEntity and its Urls.
* Creates a NoteResponse given a NoteEntity and its Urals.
*
* @param entity The NoteEntity source data.
* @return NoteResponse instance with all note data and urls, if any.
* @return NoteResponse instance with all note data and URLs, if any.
*/
public static NoteResponse fromEntity(NoteEntity entity, String url) {
String timeAgoFmt = TimeAgoUtil.format(entity.getLastUpdate());
@@ -18,10 +18,10 @@ public record TaskResponse(
List<String> urls) {
/**
* Creates a TaskResponse given a TaskEntity and its Urls.
* Creates a TaskResponse given a TaskEntity and its URLs.
*
* @param entity The TaskEntity source data.
* @return TaskResponse instance with all task data and urls, if any.
* @return TaskResponse instance with all task data and URLs, if any.
*/
public static TaskResponse fromEntity(TaskEntity entity, List<String> urls) {
String timeAgoFmt = TimeAgoUtil.format(entity.getLastUpdate());
@@ -2,7 +2,6 @@ package br.com.tasknoteapp.server.response;
import br.com.tasknoteapp.server.entity.UserEntity;
import java.time.LocalDateTime;
import java.util.Optional;
/** This record represents a User Response object. */
public record UserResponse(
@@ -12,6 +11,7 @@ public record UserResponse(
Boolean admin,
LocalDateTime createdAt,
LocalDateTime inactivatedAt,
LocalDateTime lastLogin,
String gravatarImageUrl) {
/**
@@ -20,7 +20,7 @@ public record UserResponse(
* @param user The user entity instance with user info to be used as source.
* @return UserResponse instance.
*/
public static UserResponse fromEntity(UserEntity user, Optional<String> gravatarUrl) {
public static UserResponse fromEntity(UserEntity user, String gravatarUrl) {
return new UserResponse(
user.getId(),
user.getName(),
@@ -28,6 +28,7 @@ public record UserResponse(
user.getAdmin(),
user.getCreatedAt(),
user.getInactivatedAt(),
gravatarUrl.orElse(null));
user.getLastLogin(),
gravatarUrl);
}
}
@@ -2,7 +2,6 @@ package br.com.tasknoteapp.server.response;
import br.com.tasknoteapp.server.entity.UserEntity;
import java.time.LocalDateTime;
import java.util.Optional;
/** This record represents a User Response object. */
public record UserResponseWithToken(
@@ -12,6 +11,7 @@ public record UserResponseWithToken(
Boolean admin,
LocalDateTime createdAt,
LocalDateTime inactivatedAt,
LocalDateTime lastLogin,
String gravatarImageUrl,
String token,
String lang) {
@@ -24,7 +24,7 @@ public record UserResponseWithToken(
* @return UserResponse instance.
*/
public static UserResponseWithToken fromEntity(
UserEntity user, String token, Optional<String> gravatarUrl) {
UserEntity user, String token, String gravatarUrl) {
return new UserResponseWithToken(
user.getId(),
user.getName(),
@@ -32,7 +32,8 @@ public record UserResponseWithToken(
user.getAdmin(),
user.getCreatedAt(),
user.getInactivatedAt(),
gravatarUrl.orElse(null),
user.getLastLogin(),
gravatarUrl,
token,
user.getLang());
}
@@ -30,10 +30,21 @@ public class ValidationExceptionResponse {
this.errorMessage = String.format(MESSAGE_TEMPLATE, fields.size());
}
/**
* Method used by Spring internals to build the final JSON response.
*
* @return String describing the error message
*/
public String getErrorMessage() {
return errorMessage;
}
/**
* Method used by Spring internals to build the final JSON response with failed fields.
*
* @return List of FieldIssueResponse containing the field name and the error message related to
* it
*/
public List<FieldIssueResponse> getFields() {
return fields;
}
@@ -6,6 +6,7 @@ import br.com.tasknoteapp.server.exception.BadLanguageException;
import br.com.tasknoteapp.server.exception.BadPasswordException;
import br.com.tasknoteapp.server.exception.BadUuidException;
import br.com.tasknoteapp.server.exception.EmailAlreadyExistsException;
import br.com.tasknoteapp.server.exception.EmailNotConfirmedException;
import br.com.tasknoteapp.server.exception.InvalidCredentialsException;
import br.com.tasknoteapp.server.exception.MaxLoginLimitAttemptException;
import br.com.tasknoteapp.server.exception.ResetExpiredException;
@@ -19,6 +20,7 @@ import br.com.tasknoteapp.server.request.UserPatchRequest;
import br.com.tasknoteapp.server.response.UserResponse;
import br.com.tasknoteapp.server.response.UserResponseWithToken;
import br.com.tasknoteapp.server.util.AuthUtil;
import br.com.tasknoteapp.server.util.SecurityUtil;
import br.com.tasknoteapp.server.util.TokenUtil;
import br.com.tasknoteapp.server.util.UuidUtil;
import jakarta.transaction.Transactional;
@@ -27,6 +29,7 @@ import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import java.time.Duration;
import java.time.LocalDateTime;
import java.time.ZoneOffset;
import java.time.temporal.ChronoUnit;
import java.util.ArrayList;
import java.util.Arrays;
@@ -105,7 +108,7 @@ public class AuthService {
*/
@Transactional
public UserResponseWithToken signUpNewUser(LoginRequest newUser) {
logger.info("Signing up new user: {}", newUser.email());
logger.info("Signing up new user: {}", SecurityUtil.redactEmail(newUser.email()));
if (findByEmail(newUser.email()).isPresent()) {
throw new EmailAlreadyExistsException();
@@ -142,8 +145,9 @@ public class AuthService {
mailgunEmailService.sendNewUser(user);
}
logger.info("User created! ID " + user.getId());
return UserResponseWithToken.fromEntity(user, null, getGravatarImageUrl(newUser.email()));
logger.info("User created! ID {}", user.getId());
return UserResponseWithToken.fromEntity(
user, null, getGravatarImageUrl(newUser.email()).orElse(null));
}
/**
@@ -179,7 +183,7 @@ public class AuthService {
*/
@Transactional
public UserResponseWithToken signInUser(LoginRequest login) {
logger.info("Signing in user: " + login.email());
logger.info("Signing in user: {}", SecurityUtil.redactEmail(login.email()));
Optional<UserEntity> userOptional = findByEmail(login.email());
if (userOptional.isEmpty()) {
@@ -189,6 +193,12 @@ public class AuthService {
checkLoginAttemptLimit(userOptional.get().getId());
UserEntity user = userOptional.get();
if (Objects.isNull(user.getEmailConfirmedAt())) {
logger.warn("User {} tried to login but email is not confirmed", user.getId());
throw new EmailNotConfirmedException();
}
user.setResetToken(null);
user.setResetPasswordExpiration(null);
@@ -198,11 +208,25 @@ public class AuthService {
String token = jwtService.generateToken(user);
logger.info("User authenticated! Token " + token);
logger.info("User authenticated! Token {}", token.substring(0, 6) + "...");
final LocalDateTime previousLastLogin = user.getLastLogin();
user.setLastLogin(LocalDateTime.now(ZoneOffset.UTC).truncatedTo(ChronoUnit.SECONDS));
userPwdLimitRepository.deleteAllForUser(user.getId());
userRepository.save(user);
return UserResponseWithToken.fromEntity(user, token, getGravatarImageUrl(login.email()));
return new UserResponseWithToken(
user.getId(),
user.getName(),
user.getEmail(),
user.getAdmin(),
user.getCreatedAt(),
user.getInactivatedAt(),
previousLastLogin,
getGravatarImageUrl(login.email()).orElse(null),
token,
user.getLang());
} catch (BadCredentialsException e) {
logger.error(
"BadCredentialsException when logging in user {}: {}", user.getId(), e.getMessage());
@@ -246,7 +270,9 @@ public class AuthService {
List<UserEntity> users = userRepository.findAll();
List<UserResponse> usersResponse = new ArrayList<>(users.size());
users.forEach(
u -> usersResponse.add(UserResponse.fromEntity(u, getGravatarImageUrl(u.getEmail()))));
u ->
usersResponse.add(
UserResponse.fromEntity(u, getGravatarImageUrl(u.getEmail()).orElse(null))));
logger.info("{} user(s) found!", usersResponse.size());
return usersResponse;
@@ -286,7 +312,7 @@ public class AuthService {
userPwdLimitRepository.deleteAllForUser(currentUser.getId());
userRepository.delete(currentUser);
return UserResponse.fromEntity(currentUser, getGravatarImageUrl(email));
return UserResponse.fromEntity(currentUser, getGravatarImageUrl(email).orElse(null));
}
/**
@@ -338,17 +364,18 @@ public class AuthService {
shouldUpdate = true;
}
if (shouldUpdate && currentUser != null) {
if (shouldUpdate) {
userRepository.save(currentUser);
}
if (emailChanged && hasValidMailgunApiKey()) {
// send email to older and new account
logger.info("Email changed from " + email + " to " + patchRequest.email());
logger.info(
"Email changed from {} to {}", email, SecurityUtil.redactEmail(patchRequest.email()));
mailgunEmailService.sendEmailChangedNotification(currentUser, email);
}
return UserResponse.fromEntity(currentUser, getGravatarImageUrl(email));
return UserResponse.fromEntity(currentUser, getGravatarImageUrl(email).orElse(null));
}
/**
@@ -375,7 +402,7 @@ public class AuthService {
@Transactional
public void confirmUserAccount(String identification) {
logger.info("Confirming user email account");
UUID uuid = null;
UUID uuid;
try {
uuid = UUID.fromString(identification);
@@ -392,11 +419,11 @@ public class AuthService {
user.setEmailConfirmedAt(LocalDateTime.now());
userRepository.save(user);
logger.info("User email address confirmed: " + identification);
logger.info("User email address confirmed: {}", identification);
}
/**
* Re-send the confirm email to the user.
* Re-send the confirmation email to the user.
*
* @param email The email to re-send.
*/
@@ -424,11 +451,11 @@ public class AuthService {
*/
@Transactional
public void resetPasswordForUser(String email) {
logger.info("Requesting password reset for email " + email);
logger.info("Requesting password reset for email {}", email);
Optional<UserEntity> userOptional = userRepository.findByEmail(email);
if (userOptional.isEmpty()) {
logger.info("No user found with this email " + email);
logger.info("No user found with email {}", email);
return;
}
@@ -454,7 +481,7 @@ public class AuthService {
*/
@Transactional
public void confirmResetPasswordForUser(PasswordResetRequest request) {
logger.info("Saving new password for token " + request.token());
logger.info("Saving new password for token {}", request.token());
Optional<UserEntity> userOptional = userRepository.findByResetToken(request.token());
if (userOptional.isEmpty()) {
@@ -488,12 +515,12 @@ public class AuthService {
mailgunEmailService.sendPasswordResetConfirmation(user);
}
logger.info("New password set for token " + request.token());
logger.info("New password set for token {}", request.token());
}
private Optional<String> getGravatarImageUrl(String email) {
email = email.toLowerCase().trim();
logger.info("Current user email: " + email);
logger.info("Current user email: {}", SecurityUtil.redactEmail(email));
try {
MessageDigest digest = MessageDigest.getInstance("SHA-256");
@@ -525,7 +552,7 @@ public class AuthService {
// if it's more than 3 times in the last 10 minutes, raise timer of 3 hours.
if (userPwdList.size() >= 3) {
UserPwdLimitEntity mostRecent = userPwdList.get(0);
UserPwdLimitEntity mostRecent = userPwdList.getFirst();
logger.warn("Oldest: {}", mostRecent.getWhenHappened());
Duration duration = Duration.between(mostRecent.getWhenHappened(), LocalDateTime.now());
if (duration.toMinutes() <= 3L) {
@@ -540,4 +567,5 @@ public class AuthService {
return Optional.ofNullable(apiKey).isPresent()
&& !"invalid-api-key-only-placeholder".equals(apiKey);
}
}
@@ -8,15 +8,15 @@ import org.springframework.security.core.userdetails.UserDetails;
/** This interface contains methods for handling user JWT tokens. */
public interface JwtService {
public String getEmailFromToken(String token);
String getEmailFromToken(String token);
public LocalDateTime extractExpiration(String token);
LocalDateTime extractExpiration(String token);
public String generateToken(UserEntity user);
String generateToken(UserEntity user);
public String createToken(Map<String, Object> claims, String email);
String createToken(Map<String, Object> claims, String email);
public boolean isTokenExpired(String token);
boolean isTokenExpired(String token);
public boolean validateTokenAndUser(String token, UserDetails user);
boolean validateTokenAndUser(String token, UserDetails user);
}
@@ -1,39 +1,32 @@
package br.com.tasknoteapp.server.service;
import br.com.tasknoteapp.server.entity.UserEntity;
import br.com.tasknoteapp.server.exception.MailServiceException;
import br.com.tasknoteapp.server.templates.MailgunTemplate;
import br.com.tasknoteapp.server.templates.MailgunTemplateEmailChanged;
import br.com.tasknoteapp.server.templates.MailgunTemplateResetPwd;
import br.com.tasknoteapp.server.templates.MailgunTemplateResetPwdConfirm;
import br.com.tasknoteapp.server.templates.MailgunTemplateSignUp;
import java.nio.charset.StandardCharsets;
import java.time.Duration;
import java.util.Base64;
import java.util.Objects;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.restclient.RestTemplateBuilder;
import org.springframework.http.HttpEntity;
import org.springframework.http.HttpHeaders;
import org.springframework.http.HttpStatusCode;
import org.springframework.http.MediaType;
import org.springframework.http.ResponseEntity;
import org.springframework.stereotype.Service;
import org.springframework.util.LinkedMultiValueMap;
import org.springframework.util.MultiValueMap;
import org.springframework.web.client.HttpClientErrorException;
import org.springframework.web.client.RestTemplate;
import org.springframework.web.client.RestClient;
/** This service handles email messages for Mailgun. */
@Service
public class MailgunEmailService {
private static final Logger logger = LoggerFactory.getLogger(MailgunEmailService.class.getName());
private final RestTemplate restTemplate;
private final RestClient restClient;
private final String targetEnv;
private final String domain;
private String senderEmail;
private final String senderEmail;
/**
* Creates an instance of the Mail service class.
@@ -42,22 +35,38 @@ public class MailgunEmailService {
* @param domain The domain to send email from.
* @param sender The from option.
* @param targetEnv The environment.
* @param templateBuilder The template builder.
* @param restClientBuilder The rest client builder.
*/
public MailgunEmailService(
@Value("${mailgun.api-key}") String apiKey,
@Value("${mailgun.domain}") String domain,
@Value("${mailgun.sender-email}") String sender,
@Value("${br.com.tasknote.server.target-env}") String targetEnv,
RestTemplateBuilder templateBuilder) {
RestClient.Builder restClientBuilder) {
this.domain = domain;
this.senderEmail = sender;
this.targetEnv = targetEnv;
this.restTemplate =
templateBuilder
.connectTimeout(Duration.ofSeconds(5))
.readTimeout(Duration.ofSeconds(10))
.defaultHeader(HttpHeaders.AUTHORIZATION, basicAuth("api", apiKey))
if (apiKey != null && apiKey.length() > 6) {
logger.info(
"Mailgun API Key loaded: {}...{}",
apiKey.substring(0, 3),
apiKey.substring(apiKey.length() - 3));
} else {
logger.warn("Mailgun API Key is missing or too short!");
}
this.restClient =
restClientBuilder
.baseUrl("https://api.mailgun.net/v3/" + domain)
.defaultStatusHandler(
HttpStatusCode::isError,
(request, response) ->
logger.error(
"Mailgun API Error: {} {}",
response.getStatusCode(),
response.getStatusText()))
.defaultHeaders(headers -> headers.setBasicAuth("api", apiKey))
.build();
}
@@ -141,16 +150,11 @@ public class MailgunEmailService {
*
* @param to The target email address.
* @param subject The message subject.
* @param textBody The message text body to be displayed.
* @param htmlBody The message html body to be rendered.
* @param template The Mailgun template.
*/
private void sendEmail(String to, String subject, MailgunTemplate template) {
String url = "https://api.mailgun.net/v3/" + domain + "/messages";
String from = "TaskNote App <" + senderEmail + ">";
HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.APPLICATION_FORM_URLENCODED);
MultiValueMap<String, String> mailData = new LinkedMultiValueMap<>();
mailData.add("from", from);
mailData.add("to", to);
@@ -164,26 +168,23 @@ public class MailgunEmailService {
logger.info("JSON template variables: {}", template.getVariableValuesJson());
}
HttpEntity<MultiValueMap<String, String>> request = new HttpEntity<>(mailData, headers);
try {
ResponseEntity<String> response = restTemplate.postForEntity(url, request, String.class);
if (!response.getStatusCode().is2xxSuccessful()) {
throw new MailServiceException("Failed to send email: " + response.getStatusCode());
}
restClient
.post()
.uri("/messages")
.contentType(MediaType.APPLICATION_FORM_URLENCODED)
.body(mailData)
.retrieve()
.toBodilessEntity();
logger.info("Email message send successfully.");
} catch (HttpClientErrorException ex) {
logger.error("Unable to send email: {} - {}", ex.getMessage(), ex.getCause());
logger.error("Unable to send email: {} - {}", ex.getMessage(), ex.getStatusCode());
} catch (Exception ex) {
logger.error("Unexpected error sending email: {}", ex.getMessage());
}
}
private String basicAuth(String username, String password) {
String auth = username + ":" + password;
return "Basic " + Base64.getEncoder().encodeToString(auth.getBytes(StandardCharsets.UTF_8));
}
private String getBaseUrl() {
if ("development".equals(targetEnv) || Objects.isNull(targetEnv)) {
return "http://localhost:5000";
@@ -63,10 +63,10 @@ public class NoteService {
public List<NoteResponse> getAllNotes() {
UserEntity user = getCurrentUser();
logger.info("Get all notes to user " + user.getId());
logger.info("Get all notes to user ID {}", user.getId());
List<NoteEntity> notes = noteRepository.findAllByUser_id(user.getId());
logger.info(notes.size() + " notes found!");
logger.info("{} notes found!", notes.size());
return getNotesUrl(notes);
}
@@ -79,7 +79,7 @@ public class NoteService {
*/
public NoteResponse getNoteById(Long noteId) {
UserEntity user = getCurrentUser();
logger.info("Get note " + noteId + " to user " + user.getId());
logger.info("Get note ID {} to user ID {}", noteId, user.getId());
Optional<NoteEntity> note = noteRepository.findById(noteId);
if (note.isEmpty()) {
@@ -90,7 +90,7 @@ public class NoteService {
throw new NoteNotFoundException();
}
logger.info("Note found! Id " + noteId);
logger.info("Note found! ID {}", noteId);
return NoteResponse.fromEntity(note.get(), getNoteUrl(noteId));
}
@@ -103,7 +103,7 @@ public class NoteService {
public NoteResponse createNote(NoteRequest noteRequest) {
UserEntity user = getCurrentUser();
logger.info("Creating note to user " + user.getId());
logger.info("Creating note to user ID {}", user.getId());
NoteEntity note = new NoteEntity();
note.setTitle(noteRequest.title());
@@ -113,7 +113,7 @@ public class NoteService {
note.setUser(user);
NoteEntity created = noteRepository.save(note);
logger.info("Note created! Id " + created.getId());
logger.info("Note created! ID {}", created.getId());
String savedUrl = null;
if (!Objects.isNull(noteRequest.url()) && !noteRequest.url().isEmpty()) {
@@ -136,7 +136,7 @@ public class NoteService {
public NoteResponse patchNote(Long noteId, NotePatchRequest patch) {
UserEntity user = getCurrentUser();
logger.info("Patching task " + noteId + " to user " + user.getId());
logger.info("Patching task ID {} to user ID {}", noteId, user.getId());
Optional<NoteEntity> note = noteRepository.findByIdAndUser_id(noteId, user.getId());
if (note.isEmpty()) {
@@ -157,18 +157,18 @@ public class NoteService {
noteUrlRepository.deleteByNote_id(noteId);
noteUrlRepository.flush();
logger.info("URL deleted from task " + noteId);
logger.info("URL deleted from note ID {} during patch", noteId);
if (!Objects.isNull(patch.url()) && !patch.url().isBlank()) {
saveUrl(noteEntity, patch.url());
} else {
logger.info("No urls to patch for task " + noteId);
logger.info("No URLs to patch for note ID {}", noteId);
}
NoteEntity patchedNote = noteRepository.save(noteEntity);
noteRepository.flush();
logger.info("Note patched! Id " + patchedNote.getId());
logger.info("Note patched! ID {}", patchedNote.getId());
return NoteResponse.fromEntity(patchedNote, getNoteUrl(patchedNote.getId()));
}
@@ -182,7 +182,7 @@ public class NoteService {
public void deleteNote(Long noteId) {
UserEntity user = getCurrentUser();
logger.info("Deleting note " + noteId + " to user " + user.getId());
logger.info("Deleting note ID {} to user ID {}", noteId, user.getId());
Optional<NoteEntity> note = noteRepository.findByIdAndUser_id(noteId, user.getId());
if (note.isEmpty()) {
@@ -192,11 +192,11 @@ public class NoteService {
NoteEntity noteEntity = note.get();
noteUrlRepository.deleteByNote_id(noteId);
logger.info("URL deleted from task " + noteId);
logger.info("URL deleted from note ID {}", noteId);
noteRepository.delete(noteEntity);
logger.info("Note deleted! Id " + noteId);
logger.info("Note deleted! ID {}", noteId);
}
/**
@@ -208,11 +208,11 @@ public class NoteService {
public List<NoteResponse> searchNotes(String searchTerm) {
UserEntity user = getCurrentUser();
logger.info("Searching notes to user " + user.getId());
logger.info("Searching notes for user ID {}", user.getId());
List<NoteEntity> notes =
noteRepository.findAllBySearchTerm(searchTerm.toUpperCase(), user.getId());
logger.info(notes.size() + " tasks found!");
logger.info("{} tasks found!", notes.size());
return getNotesUrl(notes);
}
@@ -225,7 +225,7 @@ public class NoteService {
@Transactional
public NoteResponse shareNote(Long noteId) {
UserEntity user = getCurrentUser();
logger.info("Sharing note " + noteId + " for user " + user.getId());
logger.info("Sharing note ID {} for user ID {}", noteId, user.getId());
Optional<NoteEntity> noteOpt = noteRepository.findByIdAndUser_id(noteId, user.getId());
if (noteOpt.isEmpty()) {
@@ -238,7 +238,7 @@ public class NoteService {
noteEntity.setShared(true);
noteEntity.setShareToken(UUID.randomUUID().toString());
noteRepository.save(noteEntity);
logger.info("Note " + noteId + " shared with token " + noteEntity.getShareToken());
logger.info("Note ID {} shared with token {}", noteId, noteEntity.getShareToken());
}
return NoteResponse.fromEntity(noteEntity, getNoteUrl(noteEntity.getId()));
@@ -252,7 +252,7 @@ public class NoteService {
*/
public NoteResponse unshareNote(Long noteId) {
UserEntity user = getCurrentUser();
logger.info("Unsharing note " + noteId + " for user " + user.getId());
logger.info("Unsharing note ID {} for user ID {}", noteId, user.getId());
Optional<NoteEntity> noteOpt = noteRepository.findByIdAndUser_id(noteId, user.getId());
if (noteOpt.isEmpty()) {
@@ -263,7 +263,7 @@ public class NoteService {
noteEntity.setShared(false);
noteEntity.setShareToken(null);
noteRepository.save(noteEntity);
logger.info("Note " + noteId + " unshared.");
logger.info("Note ID {} unshared", noteId);
return NoteResponse.fromEntity(noteEntity, getNoteUrl(noteEntity.getId()));
}
@@ -275,7 +275,7 @@ public class NoteService {
* @return {@link NoteResponse} containing the shared note.
*/
public NoteResponse getSharedNote(String shareToken) {
logger.info("Fetching shared note with token " + shareToken);
logger.info("Fetching shared note with token {}", shareToken);
Optional<NoteEntity> noteOpt = noteRepository.findByShareToken(shareToken);
if (noteOpt.isEmpty() || !noteOpt.get().isShared()) {
@@ -313,7 +313,7 @@ public class NoteService {
noteUrl.setNote(noteEntity);
NoteUrlEntity savedUrl = noteUrlRepository.save(noteUrl);
logger.info("URL saved to note " + noteEntity.getId());
logger.info("URL saved to note ID {}", noteEntity.getId());
return savedUrl;
}
@@ -63,10 +63,10 @@ public class TaskService {
*/
public List<TaskResponse> getAllTasks() {
UserEntity user = getCurrentUser();
logger.info("Get all tasks to user " + user.getId());
logger.info("Get all tasks to user ID {}", user.getId());
List<TaskEntity> tasks = taskRepository.findAllByUser_id(user.getId());
logger.info(tasks.size() + " tasks found!");
logger.info("{} tasks found in getAllTasks!", tasks.size());
return tasks.stream()
.map((TaskEntity tr) -> TaskResponse.fromEntity(tr, getAllTasksUrls(tr.getId())))
@@ -81,14 +81,14 @@ public class TaskService {
*/
public TaskResponse getTaskById(Long taskId) {
UserEntity user = getCurrentUser();
logger.info("Get task " + taskId + " to user " + user.getId());
logger.info("Get task ID {} to user ID {}", taskId, user.getId());
Optional<TaskEntity> task = taskRepository.findById(taskId);
if (task.isEmpty()) {
throw new TaskNotFoundException();
}
logger.info("Task found! Id " + taskId);
logger.info("Task found! ID {}", taskId);
return TaskResponse.fromEntity(task.get(), getAllTasksUrls(taskId));
}
@@ -100,7 +100,7 @@ public class TaskService {
public TaskResponse createTask(TaskRequest taskRequest) {
UserEntity user = getCurrentUser();
logger.info("Creating task to user " + user.getId());
logger.info("Creating task to user ID {}", user.getId());
TaskEntity task = new TaskEntity();
task.setDescription(taskRequest.description());
@@ -118,7 +118,7 @@ public class TaskService {
saveUrls(task, taskRequest.urls());
}
logger.info("Task created! Id " + created.getId());
logger.info("Task created! ID {}", created.getId());
return TaskResponse.fromEntity(created, getAllTasksUrls(created.getId()));
}
@@ -133,7 +133,7 @@ public class TaskService {
public TaskResponse patchTask(Long taskId, TaskPatchRequest patch) {
UserEntity user = getCurrentUser();
logger.info("Patching task " + taskId + " to user " + user.getId());
logger.info("Patching task ID {} to user ID {}", taskId, user.getId());
Optional<TaskEntity> task = taskRepository.findById(taskId);
if (task.isEmpty()) {
@@ -165,7 +165,7 @@ public class TaskService {
TaskEntity patchedTask = taskRepository.save(taskEntity);
logger.info("Task patched! Id " + patchedTask.getId());
logger.info("Task patched! ID {}", patchedTask.getId());
return TaskResponse.fromEntity(patchedTask, getAllTasksUrls(taskId));
}
@@ -179,7 +179,7 @@ public class TaskService {
public void deleteTask(Long taskId) {
UserEntity user = getCurrentUser();
logger.info("Deleting task " + taskId + " to user " + user.getId());
logger.info("Deleting task ID {} to user ID {}", taskId, user.getId());
Optional<TaskEntity> task = taskRepository.findById(taskId);
if (task.isEmpty()) {
@@ -191,14 +191,14 @@ public class TaskService {
List<TaskUrlEntity> urlsToDelete = taskUrlRepository.findAllById_taskId(taskEntity.getId());
if (!urlsToDelete.isEmpty()) {
taskUrlRepository.deleteAllById_taskId(taskId);
logger.info("Deleted " + urlsToDelete.size() + " urls from task " + taskId);
logger.info("Deleted {} URLs from task ID {} in deleteTask", urlsToDelete.size(), taskId);
} else {
logger.info("No urls to delete for task " + taskId);
logger.info("No URLs to delete for task ID {} in deleteTask", taskId);
}
taskRepository.delete(taskEntity);
logger.info("Task deleted! Id " + taskId);
logger.info("Task deleted! ID {}", taskId);
}
/**
@@ -210,7 +210,7 @@ public class TaskService {
public List<TaskResponse> searchTasks(String searchTerm) {
UserEntity user = getCurrentUser();
logger.info("Searching tasks to user " + user.getId());
logger.info("Searching tasks to user ID {}", user.getId());
if (Objects.isNull(searchTerm) || searchTerm.isBlank()) {
return List.of();
@@ -218,7 +218,7 @@ public class TaskService {
List<TaskEntity> tasks =
taskRepository.findAllBySearchTerm(searchTerm.toUpperCase(), user.getId());
logger.info(tasks.size() + " tasks found!");
logger.info("{} tasks found!", tasks.size());
return tasks.stream()
.map((TaskEntity tr) -> TaskResponse.fromEntity(tr, getAllTasksUrls(tr.getId())))
@@ -242,30 +242,27 @@ public class TaskService {
return List.of();
}
if (filter.equals("all")) {
return allTasks.stream()
.map((TaskEntity tr) -> TaskResponse.fromEntity(tr, getAllTasksUrls(tr.getId())))
.toList();
}
if (filter.equals("high")) {
return allTasks.stream()
.filter(TaskEntity::getHighPriority)
.map((TaskEntity tr) -> TaskResponse.fromEntity(tr, getAllTasksUrls(tr.getId())))
.toList();
}
if (filter.equals("untagged")) {
return allTasks.stream()
.filter(t -> t.getTag() == null || t.getTag().isBlank())
.map((TaskEntity tr) -> TaskResponse.fromEntity(tr, getAllTasksUrls(tr.getId())))
.toList();
}
return allTasks.stream()
.filter(t -> t.getTag().equals(filter))
.map((TaskEntity tr) -> TaskResponse.fromEntity(tr, getAllTasksUrls(tr.getId())))
.toList();
return switch (filter) {
case "all" ->
allTasks.stream()
.map((TaskEntity tr) -> TaskResponse.fromEntity(tr, getAllTasksUrls(tr.getId())))
.toList();
case "high" ->
allTasks.stream()
.filter(TaskEntity::getHighPriority)
.map((TaskEntity tr) -> TaskResponse.fromEntity(tr, getAllTasksUrls(tr.getId())))
.toList();
case "untagged" ->
allTasks.stream()
.filter(t -> t.getTag() == null || t.getTag().isBlank())
.map((TaskEntity tr) -> TaskResponse.fromEntity(tr, getAllTasksUrls(tr.getId())))
.toList();
default ->
allTasks.stream()
.filter(t -> t.getTag().equals(filter))
.map((TaskEntity tr) -> TaskResponse.fromEntity(tr, getAllTasksUrls(tr.getId())))
.toList();
};
}
private UserEntity getCurrentUser() {
@@ -289,7 +286,7 @@ public class TaskService {
}
taskUrlRepository.saveAll(tasksUrl);
logger.info("Added " + tasksUrl.size() + " urls from task " + taskEntity.getId());
logger.info("Added {} URLs from task ID {}", tasksUrl.size(), taskEntity.getId());
}
private void patchDueDate(TaskEntity taskEntity, TaskPatchRequest patch) {
@@ -298,8 +295,7 @@ public class TaskService {
try {
taskEntity.setDueDate(LocalDate.parse(patch.dueDate()));
} catch (DateTimeParseException e) {
logger.error(
"Unable to parse the provided date: " + patch.dueDate() + ": " + e.getMessage());
logger.error("Unable to parse the provided date: {}: {}", patch.dueDate(), e.getMessage());
}
}
}
@@ -309,9 +305,9 @@ public class TaskService {
List<TaskUrlEntity> urlsToDelete = taskUrlRepository.findAllById_taskId(taskId);
if (!urlsToDelete.isEmpty()) {
taskUrlRepository.deleteAllById_taskId(taskId);
logger.info("Deleted " + urlsToDelete.size() + " urls from task " + taskId);
logger.info("Deleted {} URLs from task ID {}", urlsToDelete.size(), taskId);
} else {
logger.info("No urls to delete for task " + taskId);
logger.info("No URLs to delete for task ID {}", taskId);
}
if (!Objects.isNull(patch.urls())) {
@@ -319,7 +315,7 @@ public class TaskService {
patch.urls().stream().filter(u -> !u.isBlank()).map(String::trim).toList();
saveUrls(taskEntity, urlListToAdd);
} else {
logger.info("No urls to add for task " + taskId);
logger.info("No URLs to add for task ID {}", taskId);
}
}
}
@@ -6,15 +6,20 @@ import br.com.tasknoteapp.server.response.JwtAuthenticationResponse;
import br.com.tasknoteapp.server.response.NoteResponse;
import br.com.tasknoteapp.server.response.TaskResponse;
import br.com.tasknoteapp.server.response.UserResponse;
import br.com.tasknoteapp.server.util.SecurityUtil;
import jakarta.transaction.Transactional;
import java.util.List;
import java.util.Optional;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Service;
/** This class contains methods to handle user session and account deletion. */
@Service
public class UserSessionService {
private static final Logger logger = LoggerFactory.getLogger(UserSessionService.class.getName());
private final AuthService authService;
private final TaskService taskService;
@@ -57,6 +62,11 @@ public class UserSessionService {
throw new UserNotFoundException();
}
logger.info(
"Delete current user account for user ID {} email {}",
userOptional.get().getId(),
SecurityUtil.redactEmail(userOptional.get().getEmail()));
List<TaskResponse> tasks = taskService.getAllTasks();
for (TaskResponse task : tasks) {
Long taskId = task != null ? task.id() : null;
@@ -73,6 +83,8 @@ public class UserSessionService {
}
}
return authService.deleteUserAccount();
UserResponse response = authService.deleteUserAccount();
logger.info("User account deleted for user ID {}", userOptional.get().getId());
return response;
}
}
@@ -115,10 +115,7 @@ class JwtServiceImpl implements JwtService {
private <T> T extractClaim(String token, Function<Claims, T> claimsResolver) {
final Optional<Claims> claims = extractAllClaims(token);
if (claims.isPresent()) {
return claimsResolver.apply(claims.get());
}
return null;
return claims.map(claimsResolver).orElse(null);
}
private Optional<Claims> extractAllClaims(String token) {
@@ -3,6 +3,7 @@ package br.com.tasknoteapp.server.service.impl;
import br.com.tasknoteapp.server.entity.UserEntity;
import br.com.tasknoteapp.server.repository.UserRepository;
import br.com.tasknoteapp.server.service.UserService;
import br.com.tasknoteapp.server.util.SecurityUtil;
import java.util.Optional;
import org.springframework.security.core.userdetails.UserDetailsService;
import org.springframework.stereotype.Service;
@@ -18,7 +19,7 @@ class UserServiceImpl implements UserService {
email -> {
Optional<UserEntity> user = userRepository.findByEmail(email);
if (user.isEmpty()) {
throw new RuntimeException("User not found: " + email);
throw new RuntimeException("User not found: " + SecurityUtil.redactEmail(email));
}
return user.get();
};
@@ -3,12 +3,12 @@ package br.com.tasknoteapp.server.templates;
import java.util.Map;
import java.util.Optional;
/** This interface represents a mailgun template structure. */
/** This interface represents a Mailgun template structure. */
public interface MailgunTemplate {
static final String STRING_SCAPE = "\"";
static final String COLON = ":";
static final String COMMA = ",";
String STRING_SCAPE = "\"";
String COLON = ":";
String COMMA = ",";
String getName();
@@ -7,9 +7,8 @@ import java.util.Optional;
/** This class represents a template for the email change workflow. */
public class MailgunTemplateEmailChanged implements MailgunTemplate {
private String templateName = "email_changed";
private String carbonCopy;
private final Map<String, Object> props;
private String carbonCopy;
public MailgunTemplateEmailChanged() {
this.props = new HashMap<>();
@@ -25,7 +24,7 @@ public class MailgunTemplateEmailChanged implements MailgunTemplate {
@Override
public String getName() {
return templateName;
return "email_changed";
}
@Override
@@ -33,12 +32,12 @@ public class MailgunTemplateEmailChanged implements MailgunTemplate {
return props;
}
public void setCarbonCopy(String carbonCopy) {
this.carbonCopy = carbonCopy;
}
@Override
public Optional<String> getCarbonCopy() {
return Optional.ofNullable(carbonCopy);
}
public void setCarbonCopy(String carbonCopy) {
this.carbonCopy = carbonCopy;
}
}
@@ -6,7 +6,6 @@ import java.util.Map;
/** This class represents a template for the password reset workflow. */
public class MailgunTemplateResetPwd implements MailgunTemplate {
private String templateName = "password_reset";
private final Map<String, Object> props;
public MailgunTemplateResetPwd() {
@@ -19,7 +18,7 @@ public class MailgunTemplateResetPwd implements MailgunTemplate {
@Override
public String getName() {
return templateName;
return "password_reset";
}
@Override

Some files were not shown because too many files have changed in this diff Show More