Compare commits

..
Author SHA1 Message Date
rmcampos 4993b1e806 feat: add notes archival option before deleting (#20)
Frontend CD / build (push) Successful in 4m59s
Backend CD / build (push) Successful in 22m37s
# What

- Add archiving notes option
- Notes should be archived before deleting.

# Why

- Makes the flow more clear and follow the same pattern as other app.Reviewed-on: #20
2026-07-28 13:52:19 +00:00
rmcampos 7b45e2ccbd feat: add completed tasks and delete confirm (#19)
Backend CD / build (push) Successful in 4m32s
Frontend CD / build (push) Successful in 4m41s
# What

- Add confirm modal before deleting tasks and notes
- Add section with completed tasks

# Why

- That's because why.Reviewed-on: #19
2026-07-23 20:33:23 +00:00
rmcampos 1ebf89668d chore: small styling improvements
Frontend CD / build (push) Successful in 5m50s
2026-07-23 19:52:47 +02:00
rmcampos d7cd922b94 chore: add script to update local user when running in dev 2026-07-23 18:48:42 +02:00
rmcampos c9916a8475 fix: wrong styling in account page buttons 2026-07-23 18:48:21 +02:00
rmcampos 6803ae6ebc chore: bump minor deps to latest version
Frontend CD / build (push) Successful in 8m56s
2026-07-22 22:47:33 +02:00
renovate-botandrmcampos 231e091f5d chore(deps): update caddy docker tag to v2.11.4 (#9)
Frontend CD / build (push) Successful in 3m29s
This PR contains the following updates:

| Package | Type | Update | Change |
|---|---|---|---|
| caddy | final | minor | `2.10.2-alpine` → `2.11.4-alpine` |

---

### Configuration

📅 **Schedule**: (UTC)

- Branch creation
  - At any time (no schedule defined)
- Automerge
  - At any time (no schedule defined)

🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied.

♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about this update again.

---

 - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box

---

This PR has been generated by [Mend Renovate](https://github.com/renovatebot/renovate).
<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0My4yNTIuMSIsInVwZGF0ZWRJblZlciI6IjQzLjI1Mi4xIiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6W119-->

---------

Co-authored-by: Ricardo Campos <ricardompcampos@gmail.com>
Reviewed-on: #9
Co-authored-by: Renovate Bot <renovate-bot@lightroasted.vps-kinghost.net>
2026-07-22 20:33:24 +00:00
rmcampos 749ddbcdad fix: ghcr references and old files (#18)
Frontend CD / build (push) Successful in 4m45s
# What

- Closes #17

# Why

- Keep the repo updated with needed files onlyReviewed-on: #18
2026-07-22 20:22:05 +00:00
renovate-botandrmcampos 294e1b7a6a chore(deps): update dependency com.puppycrawl.tools:checkstyle to v13.7.0 (#10)
Backend CD / build (push) Successful in 4m2s
This PR contains the following updates:

| Package | Change | [Age](https://docs.renovatebot.com/merge-confidence/) | [Confidence](https://docs.renovatebot.com/merge-confidence/) |
|---|---|---|---|
| [com.puppycrawl.tools:checkstyle](https://checkstyle.org/) ([source](https://github.com/checkstyle/checkstyle)) | `13.3.0` → `13.7.0` | ![age](https://developer.mend.io/api/mc/badges/age/maven/com.puppycrawl.tools:checkstyle/13.7.0?slim=true) | ![confidence](https://developer.mend.io/api/mc/badges/confidence/maven/com.puppycrawl.tools:checkstyle/13.3.0/13.7.0?slim=true) |

>  **Important**
>
> Release Notes retrieval for this PR were skipped because no github.com credentials were available.
> If you are self-hosted, please see [this instruction](https://github.com/renovatebot/renovate/blob/master/docs/usage/examples/self-hosting.md#githubcom-token-for-release-notes).

---

### Configuration

📅 **Schedule**: (UTC)

- Branch creation
  - At any time (no schedule defined)
- Automerge
  - At any time (no schedule defined)

🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied.

♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about this update again.

---

 - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box

---

This PR has been generated by [Mend Renovate](https://github.com/renovatebot/renovate).
<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0My4yNTIuMSIsInVwZGF0ZWRJblZlciI6IjQzLjI1Mi4xIiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6W119-->

---------

Co-authored-by: Ricardo Campos <ricardompcampos@gmail.com>
Reviewed-on: #10
Reviewed-by: Ricardo Campos <ricardompcampos@gmail.com>
Co-authored-by: Renovate Bot <renovate-bot@lightroasted.vps-kinghost.net>
2026-07-22 18:47:58 +00:00
rmcampos 58dabc75a6 docs: update changelog file 2026-07-22 12:02:27 -03:00
rmcampos dd15837d4d feat: add closing and saving button to modal. Closes #15 (#16)
Frontend CD / build (push) Successful in 5m7s
# What

- Closes #15

# Why

- Make users life easier.Reviewed-on: #16
2026-07-22 14:53:51 +00:00
rmcampos a79e79c04f fix: wrong image name 2026-07-22 11:16:28 -03:00
rmcampos 488586be48 chore: drop staging and improve to adopt doppler in CI
Backend CD / build (push) Successful in 7m59s
2026-07-22 11:02:14 -03:00
rmcampos 8901084fa9 chore: small clean up and updates 2026-07-22 10:10:12 -03:00
rmcampos 466e255594 docs: restructure changelog file (only the last change) 2026-07-22 10:06:19 -03:00
gitea-actions[bot] 300b2e0576 chore: bump api version to 35 [skip ci] 2026-07-20 16:41:31 +00:00
rmcampos 0250b558cf Group three changes in a single PR (#13)
Main CI-Frontend / Build & Push (push) Successful in 46s
Main CI-Backend / Build & Push (push) Successful in 54s
## What

- fix: background image position moving around in the landing, login and register pages.
- chore: bump minor dependencies versions to latest version.
- feat: replace "Due in 1 day" and "Due in 0 days" to Time Ago format: "Due tomorrow" and "Due today".

## Why

- Keeping the app improving and updated.
- Date picker in mobile works better using the default/native.

## Mood
<img width="200" src="https://media0.giphy.com/media/TIiDh0ONXotAQpkw3f/giphy.gif?cid=5a38a5a2cea0tfjgne8sdpz1vz617kfqk02hnjrrjx34v08x&amp;ep=v1_gifs_search&amp;rid=giphy.gif&amp;ct=g" style="border:0;height:300px;width:300px"/>

Reviewed-on: #13
2026-07-20 16:40:53 +00:00
gitea-actions[bot] 891c526363 chore: bump api version to 34 [skip ci] 2026-07-16 18:39:42 +00:00
rmcampos 642eee6de1 feat: update docker tag image to fixed version. (#12)
## What

- Fixes the docker builder image.
- Closes #5

## Why

- Prevent breaking with new versions

## Mood

<img width="200" src="https://media1.giphy.com/media/ZIH0Slo6J6PQY/giphy.gif?cid=5a38a5a2fxikxj29q5nul4d9k1kh6u4doey1mujpjesj30uf&amp;ep=v1_gifs_search&amp;rid=giphy.gif&amp;ct=g" style="border:0;height:168px;width:300px"/>

Reviewed-on: #12
2026-07-16 18:37:03 +00:00
renovate-botandrmcampos 4b04bfbbcf chore: Configure Renovate (#8)
Welcome to [Renovate](https://github.com/renovatebot/renovate)! This is an onboarding PR to help you understand and configure settings before regular Pull Requests begin.

🚦 To activate Renovate, merge this Pull Request. To disable Renovate, simply close this Pull Request unmerged.

📚 See our [Reading List](https://docs.renovatebot.com/reading-list/) for relevant documentation you may be interested in reading.

🔡 Do you want to change how Renovate upgrades your dependencies? Add your custom config to `renovate.json` in this branch. Renovate will update the Pull Request description the next time it runs.

---
### Detected Package Files

 * `client/Dockerfile` (dockerfile)
 * `client/Dockerfile.dev` (dockerfile)
 * `server/pom.xml` (maven)
 * `client/package.json` (npm)

### Configuration Summary

Based on the default config's presets, Renovate will:

  - Start dependency updates only once this onboarding PR is merged
  - Enable Renovate Dependency Dashboard creation.
  - Use semantic commit type `fix` for dependencies and `chore` for all others if semantic commits are in use.
  - Ignore `node_modules`, `bower_components`, `vendor` and various test/tests (except for nuget) directories.
  - Group known monorepo packages together.
  - Use curated list of recommended non-monorepo package groupings.
  - Show only the Age and Confidence Merge Confidence badges for pull requests.
  - Apply crowd-sourced package replacement rules.
  - Apply crowd-sourced workarounds for known problems with packages.
  - Ensure that every dependency pinned by digest and sourced from Forgejo contains a link to the commit-to-commit diff
  - Ensure that every dependency pinned by digest and sourced from Gitea contains a link to the commit-to-commit diff
  - Ensure that every dependency pinned by digest and sourced from GitHub.com and Github enterprise contains a link to the commit-to-commit diff
  - Ensure that every dependency pinned by digest and sourced from GitLab.com contains a link to the commit-to-commit diff
  - Correctly link to the source code for golang.org/x packages
  - Link to pkg.go.dev/... for golang.org/x packages' title
  - Provide a link to octochangelog's improved breakdown for Renovate's changelogs

---

### What to Expect

With your current configuration, Renovate will create 16 Pull Requests:

<details>
<summary>chore(deps): update dependency eslint-plugin-import-x to v4.17.1</summary>

  - Schedule: ["at any time"]
  - Branch name: `renovate/eslint-plugin-import-x-4.x-lockfile`
  - Merge into: `main`
  - Upgrade [eslint-plugin-import-x](https://github.com/un-ts/eslint-plugin-import-x) to `4.17.1`

</details>

<details>
<summary>chore(deps): update dependency eslint-plugin-jsdoc to v63.0.11</summary>

  - Schedule: ["at any time"]
  - Branch name: `renovate/eslint-plugin-jsdoc-63.x-lockfile`
  - Merge into: `main`
  - Upgrade [eslint-plugin-jsdoc](https://github.com/gajus/eslint-plugin-jsdoc) to `63.0.11`

</details>

<details>
<summary>chore(deps): update dependency i18next to v26.3.4</summary>

  - Schedule: ["at any time"]
  - Branch name: `renovate/i18next-26.x-lockfile`
  - Merge into: `main`
  - Upgrade [i18next](https://github.com/i18next/i18next) to `26.3.4`

</details>

<details>
<summary>chore(deps): update dependency typescript-eslint to v8.62.1</summary>

  - Schedule: ["at any time"]
  - Branch name: `renovate/typescript-eslint-monorepo`
  - Merge into: `main`
  - Upgrade [typescript-eslint](https://github.com/typescript-eslint/typescript-eslint) to `8.62.1`

</details>

<details>
<summary>chore(deps): update dependency vite to v8.1.3</summary>

  - Schedule: ["at any time"]
  - Branch name: `renovate/vite-8.x-lockfile`
  - Merge into: `main`
  - Upgrade [vite](https://github.com/vitejs/vite) to `8.1.3`

</details>

<details>
<summary>chore(deps): update caddy docker tag to v2.11.4</summary>

  - Schedule: ["at any time"]
  - Branch name: `renovate/caddy-2.x`
  - Merge into: `main`
  - Upgrade caddy to `2.11.4-alpine`

</details>

<details>
<summary>chore(deps): update dependency @&#8203;types/node to v26.1.0</summary>

  - Schedule: ["at any time"]
  - Branch name: `renovate/node-26.x-lockfile`
  - Merge into: `main`
  - Upgrade [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped) to `26.1.0`

</details>

<details>
<summary>chore(deps): update dependency com.puppycrawl.tools:checkstyle to v13.7.0</summary>

  - Schedule: ["at any time"]
  - Branch name: `renovate/com.puppycrawl.tools-checkstyle-13.x`
  - Merge into: `main`
  - Upgrade [com.puppycrawl.tools:checkstyle](https://github.com/checkstyle/checkstyle) to `13.7.0`

</details>

<details>
<summary>chore(deps): update dependency eslint-plugin-n to v18.2.1</summary>

  - Schedule: ["at any time"]
  - Branch name: `renovate/eslint-plugin-n-18.x-lockfile`
  - Merge into: `main`
  - Upgrade [eslint-plugin-n](https://github.com/eslint-community/eslint-plugin-n) to `18.2.1`

</details>

<details>
<summary>chore(deps): update dependency prettier to v3.9.4</summary>

  - Schedule: ["at any time"]
  - Branch name: `renovate/prettier-3.x-lockfile`
  - Merge into: `main`
  - Upgrade [prettier](https://github.com/prettier/prettier) to `3.9.4`

</details>

<details>
<summary>chore(deps): update dependency react-router to v8.1.0</summary>

  - Schedule: ["at any time"]
  - Branch name: `renovate/react-router-monorepo`
  - Merge into: `main`
  - Upgrade [react-router](https://github.com/remix-run/react-router) to `8.1.0`

</details>

<details>
<summary>chore(deps): update node.js to v22.23.1</summary>

  - Schedule: ["at any time"]
  - Branch name: `renovate/node-22.x`
  - Merge into: `main`
  - Upgrade [node](https://github.com/nodejs/node) to `22.23-bookworm-slim`

</details>

<details>
<summary>fix(deps): update jjwt.version to v0.13.0</summary>

  - Schedule: ["at any time"]
  - Branch name: `renovate/jjwt.version`
  - Merge into: `main`
  - Upgrade [io.jsonwebtoken:jjwt-gson](https://github.com/jwtk/jjwt) to `0.13.0`
  - Upgrade [io.jsonwebtoken:jjwt-impl](https://github.com/jwtk/jjwt) to `0.13.0`
  - Upgrade [io.jsonwebtoken:jjwt-api](https://github.com/jwtk/jjwt) to `0.13.0`

</details>

<details>
<summary>fix(deps): update spring boot to v4.1.0</summary>

  - Schedule: ["at any time"]
  - Branch name: `renovate/spring-boot`
  - Merge into: `main`
  - Upgrade [org.springframework.boot:spring-boot-maven-plugin](https://github.com/spring-projects/spring-boot) to `4.1.0`
  - Upgrade [org.springframework.boot:spring-boot-starter-parent](https://github.com/spring-projects/spring-boot) to `4.1.0`

</details>

<details>
<summary>chore(deps): update eslint monorepo to v10</summary>

  - Schedule: ["at any time"]
  - Branch name: `renovate/major-eslint-monorepo`
  - Merge into: `main`
  - Upgrade [@eslint/js](https://github.com/eslint/eslint) to `^10.0.0`
  - Upgrade [eslint](https://github.com/eslint/eslint) to `^10.0.0`

</details>

<details>
<summary>chore(deps): update node.js to v24</summary>

  - Schedule: ["at any time"]
  - Branch name: `renovate/node-24.x`
  - Merge into: `main`
  - Upgrade [node](https://github.com/nodejs/node) to `24.18-bookworm-slim`

</details>

🚸 PR creation will be limited to maximum 2 per hour, so it doesn't swamp any CI resources or overwhelm the project. See [docs for `prHourlyLimit`](https://docs.renovatebot.com/configuration-options/#prhourlylimit) for details.

---

 Got questions? Check out Renovate's [Docs](https://docs.renovatebot.com/), particularly the Getting Started section.
If you need any further assistance then you can also [request help here](https://github.com/renovatebot/renovate/discussions).

---

This PR has been generated by [Mend Renovate](https://github.com/renovatebot/renovate).

<!--renovate-config-hash:e80b4e42a3043bc12fa0640db4bac392d2bf770acf841360d7c8ceeeac2ec1a9-->

Reviewed-on: #8
Co-authored-by: Renovate Bot <renovate-bot@lightroasted.vps-kinghost.net>
Co-committed-by: Renovate Bot <renovate-bot@lightroasted.vps-kinghost.net>
2026-07-05 21:18:24 +00:00
rmcampos c9c2e97d06 docs: update changelog and add docker images logging to workflows
Main CI-Backend / Build & Push (push) Has been cancelled
Main CI-Frontend / Build & Push (push) Has been cancelled
2026-07-01 12:22:17 -03:00
rmcampos acb08f7e14 feat: make notes keep open when suddenly closed (#7)
Main CI-Frontend / Build & Push (push) Successful in 39s
## What

- New feature allowing open notes to be restore, if the tab is closed

## Why

- Making users' life easier

## Mood
<img width="200" src="https://media3.giphy.com/media/S5uASkxZ5eGcwf2vHM/giphy.gif?cid=36b14facu3gasrwzy8axqb43wcuo1tsdjvjcslyk9t9jzvab&ep=v1_gifs_search&rid=giphy.gif&ct=g"/>

Reviewed-on: #7
2026-07-01 15:17:41 +00:00
rmcampos 4164b7dd97 hotfix: condition to apply changes in PR deployment 2026-07-01 11:23:26 -03:00
rmcamposandClaude Sonnet 4.6 0fc1cc3d65 fix: align frontend image tag with baked VITE_BUILD version
Main CI-Frontend / Build & Push (push) Successful in 40s
PR and candidate builds now push with the app-v* tag at build time,
ensuring VITE_BUILD inside the image always matches its Docker tag.
Promote step reads the version from the image instead of generating
a new run_number-based tag.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-30 21:36:22 -03:00
rmcampos 3b591ac85e hotfix: check changes condition to apply tf again 2026-06-30 21:13:39 -03:00
rmcampos b1cece9138 hotfix: check changes condition to apply tf 2026-06-30 21:10:52 -03:00
rmcampos 1ff3ba964c feat: add draft notes (#6)
Main CI-Frontend / Build & Push (push) Successful in 28s
## What

- Add draft feature for notes and tasks.
- Update deploy workflows to use a single job.

## Why

- Draft is needed when the session expires and the user is editing.
- A single job is needed to avoid exposing a tfplan file

## Mood
<img width="200" src="https://media4.giphy.com/media/BwP0jedpcSOyOyIK2h/giphy.gif?cid=36b14facttlvjhc0remdjlv65reqb1qh98wy78m23ua0avsj&ep=v1_gifs_search&rid=giphy.gif&ct=g"/>

Reviewed-on: #6
2026-07-01 00:05:46 +00:00
rmcampos eea8313f30 hotfix: flyway issue in prod 2026-06-29 23:15:31 +02:00
gitea-actions[bot] 419a33f7fc chore: bump api version to 33 [skip ci] 2026-06-29 19:24:13 +00:00
rmcampos 169f07801a Security/critical fixes (#4)
Main CI-Frontend / Build & Push (push) Successful in 39s
Main CI-Backend / Build & Push (push) Successful in 45s
## What

- Addressing security issues: critical and not so critical (more fixed will be pushed soon)

## Why

- The app needs to be secure and safe.

## Mood
<img width="200" src="https://media2.giphy.com/media/CSpfd57m9WGHnxMWXm/100.webp?cid=36b14facw100seggylsefdj0ap2oopoux3bn3jn6qu59xggq&ep=v1_gifs_search&rid=100.webp&ct=g"/>

Reviewed-on: #4
2026-06-29 19:23:41 +00:00
rmcampos a55a80e916 chore: bump frontend dependencies (#3)
Main CI-Frontend / Build & Push (push) Successful in 32s
## What

- Bump frontend dependencies;
- Backend dependencies are not ready yet. Only Spring has a new version, but it is failing to run on GraalVM;

## Why

- Codebase hygiene;

## Mood

<img width="200" src="https://media0.giphy.com/media/Pn5crrMQi6WyI5tyI0/giphy.gif?cid=36b14fackrjl2p912ox9mnnn7m0rawm1okm5d8hnaorntlgn&ep=v1_gifs_trending&rid=giphy.gif&ct=g"/>

Reviewed-on: #3
2026-06-25 00:16:35 +00:00
rmcampos 6272650ef9 revert 54eeb66f0d
revert Update README.md
2026-06-17 17:43:18 +00:00
rmcampos 54eeb66f0d Update README.md 2026-06-17 17:42:02 +00:00
rmcampos a9f2b7b3a4 docs: upadte readme 2026-06-17 12:15:45 -03:00
rmcampos d6a7ee34ef docs: update changelog 2026-06-15 19:07:26 -03:00
gitea-actions[bot] ce76f94237 chore: bump api version to 32 [skip ci] 2026-06-15 21:55:02 +00:00
rmcampos 68f8000ed8 fix: main workflow files
Main CI-Frontend / Build & Push (push) Successful in 29s
Main CI-Backend / Build & Push (push) Successful in 4m5s
2026-06-15 18:54:19 -03:00
gitea-actions[bot] 10c11e8f0b chore: bump api version to 31 [skip ci] 2026-06-15 21:41:06 +00:00
rmcampos 0a35bc0f77 fix: docker tag for backend main
Main CI-Backend / Build & Push (push) Failing after 44s
2026-06-15 18:40:26 -03:00
gitea-actions[bot] 31b2c9da8e chore: bump api version to 30 [skip ci] 2026-06-15 21:36:31 +00:00
rmcampos 17bcdd53bf fix: checkout code for pushing changes using pat
Main CI-Backend / Build & Push (push) Failing after 39s
2026-06-15 18:35:48 -03:00
rmcampos 10e0bba9fb chore: bump backend spring version and fix gitea files (#2)
Main CI-Frontend / Build & Push (push) Successful in 57s
Main CI-Backend / Build & Push (push) Failing after 36s
# What

- Bumps backend dependencies, including Spring Boot to v4.1.0

# Why

- Service hygiene.

Reviewed-on: #2
2026-06-15 21:16:14 +00:00
rmcampos b93caa1397 feat: update main workflow files wih right changes 2026-06-15 16:11:22 -03:00
github-actions[bot] 894aec1ff7 docs: promote [Unreleased] to app-v2026.06.08.22 [skip ci] 2026-06-08 21:57:44 +00:00
rmcamposandGitHub 93efe09407 chore: bump client dependencies (#64)
* chore: bump client dependencies

* docs: update changelog file

* docs: update changelog

* feat: craete separate changelog files
2026-06-08 18:57:05 -03:00
rmcampos a88a6788c6 feat: add script to set confirmation email locally 2026-06-08 17:47:14 -03:00
rmcampos ae24edfa2a chore: update docker files to use local user 2026-06-08 17:46:54 -03:00
rmcampos 01577a773a docs: update changelog with latest changes 2026-06-08 17:46:32 -03:00
rmcamposandGitHub 931e361836 feat: update about page to reflect current features (#63) 2026-06-08 15:35:43 -03:00
rmcampos db0cdeda91 docs: add changelog file 2026-06-08 13:38:04 -03:00
github-actions[bot] 4d9b3e2986 chore: bump api version to 29 [skip ci] 2026-06-01 14:42:27 +00:00
rmcamposandGitHub bceb9a2e49 chore: bump backend and frontend dependencies (#61)
* chore: bump frontend dependencies

* chore: bump backend dependencies
2026-06-01 11:41:53 -03:00
github-actions[bot] 39cbe80582 chore: bump api version to 28 [skip ci] 2026-05-26 14:58:43 +00:00
rmcamposandGitHub 5fec30fea0 feat: add SDD and DDD filer for AI based development and Spec 001 implementation (#60)
* feat: add initial files and spec 1

* feat: add spec for rich text feature

* chore: restore file from broken AI session

* feat: add project constraints to ai

* chore: update spec feature prompt

* feat: add multiple tags support - wip

* test: fix test cases

* chore: move tag list to below the inputs

* chore: add ngrok files and updates

* fix: session issues and query using HQL

* test: fix test cases
2026-05-26 11:58:04 -03:00
github-actions[bot] a35c037f20 chore: bump api version to 27 [skip ci] 2026-05-19 01:27:08 +00:00
CopilotGitHubcopilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>RMCamposrmcampos
f34c359720 Refresh auth session with server-authoritative current user data (#59)
* Initial plan

* feat: refresh and reload current user profile

Agent-Logs-Url: https://github.com/RMCampos/tasknote/sessions/3f01367a-baee-4bbe-8f66-f04da58d485f

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

* test: fix time zone test issue

---------

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-18 22:26:31 -03:00
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
233 changed files with 10526 additions and 4864 deletions
+17 -10
View File
@@ -6,7 +6,7 @@ on:
jobs:
build-and-push-app:
name: Build & Push App
runs-on: ubuntu-latest
runs-on: easynode-debian
permissions:
contents: read
packages: write
@@ -19,20 +19,19 @@ jobs:
ref: ${{ github.ref }}
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3
run: docker buildx inspect --bootstrap
- name: Log in to GitHub Container Registry
- name: Log in to Docker Hub
uses: docker/login-action@v3
with:
registry: ghcr.io
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}
username: ${{ secrets.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_TOKEN }}
- name: Extract metadata for Docker
id: meta
uses: docker/metadata-action@v5
with:
images: ghcr.io/${{ github.repository }}/app
images: rmcampos/tasknote-app
tags: |
type=raw,value=candidate
@@ -49,9 +48,17 @@ jobs:
with:
context: ./client
push: true
tags: ${{ steps.meta.outputs.tags }}
tags: |
${{ steps.meta.outputs.tags }}
rmcampos/tasknote-app:${{ steps.version.outputs.tag }}
labels: ${{ steps.meta.outputs.labels }}
cache-from: type=gha
cache-to: type=gha,mode=max
cache-from: type=registry,ref=rmcampos/tasknote-app:buildcache
cache-to: type=registry,ref=rmcampos/tasknote-app:buildcache,mode=max
build-args: |
VITE_BUILD=${{ steps.version.outputs.tag }}
- name: Log pushed images
run: |
echo "Pushed images:"
echo " rmcampos/tasknote-app:candidate"
echo " rmcampos/tasknote-app:${{ steps.version.outputs.tag }}"
+20 -28
View File
@@ -6,7 +6,7 @@ on:
jobs:
build-and-push-server:
name: Build & Push Server
runs-on: ubuntu-latest
runs-on: graalvm-25
permissions:
contents: read
packages: write
@@ -18,42 +18,34 @@ jobs:
fetch-depth: 0
ref: ${{ github.ref }}
- name: Set lowercase repo name
id: repo
run: echo "name=${GITHUB_REPOSITORY,,}" >> $GITHUB_OUTPUT
- name: Set up Java
uses: actions/setup-java@v4
- name: Cache Maven dependencies
uses: actions/cache@v3
with:
distribution: 'temurin'
java-version: '25'
cache: 'maven'
cache-dependency-path: 'server/pom.xml'
path: ~/.m2/repository
key: ${{ runner.os }}-maven-${{ hashFiles('**/server/pom.xml') }}
restore-keys: |
${{ runner.os }}-maven-
- name: Log in to GHCR
- name: Log in to Docker Hub
uses: docker/login-action@v3
with:
registry: ghcr.io
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}
username: ${{ secrets.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_TOKEN }}
- name: Cache Buildpack layers
uses: actions/cache@v4
with:
path: ~/.cache/reproducible-builds
key: ${{ runner.os }}-buildpack-${{ hashFiles('server/pom.xml') }}
restore-keys: |
${{ runner.os }}-buildpack-
- name: Build Docker image
working-directory: ./server
run: |
# Use the dynamic repo name to prevent tagging errors
./mvnw -Pnative -DskipTests spring-boot:build-image \
-Dspring-boot.build-image.imageName=ghcr.io/${{ steps.repo.outputs.name }}/api:latest \
-Dspring-boot.build-image.builder=paketobuildpacks/builder-jammy-tiny:latest
-Dspring-boot.build-image.imageName=rmcampos/tasknote-api:latest \
-Dspring-boot.build-image.builder=paketobuildpacks/builder-jammy-tiny:0.0.505
- name: Tag and push candidate
run: |
docker tag ghcr.io/${{ steps.repo.outputs.name }}/api:latest ghcr.io/${{ steps.repo.outputs.name }}/api:candidate
docker push ghcr.io/${{ steps.repo.outputs.name }}/api:candidate
docker tag rmcampos/tasknote-api:latest rmcampos/tasknote-api:candidate
docker push rmcampos/tasknote-api:candidate
- name: Log pushed images
run: |
echo "Pushed images:"
echo " rmcampos/tasknote-api:latest"
echo " rmcampos/tasknote-api:candidate"
+84
View File
@@ -0,0 +1,84 @@
name: Backend CD
on:
workflow_dispatch:
push:
branches: [ main ]
paths:
- 'server/**'
- '.github/workflows/cd-backend.yml'
jobs:
build:
runs-on: graalvm-25
permissions:
contents: write
packages: write
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Cache Maven dependencies
uses: actions/cache@v3
with:
path: ~/.m2/repository
key: ${{ runner.os }}-maven-${{ hashFiles('**/server/pom.xml') }}
restore-keys: |
${{ runner.os }}-maven-
- name: Generate version tag
id: version
run: |
DATE=$(date +'%Y.%m.%d')
TAG="api-v${DATE}.${{ github.run_number }}"
echo "tag=${TAG}" >> $GITHUB_OUTPUT
echo "Generated tag: ${TAG}"
- name: Build Docker image with Spring Boot
working-directory: ./server
run: |
./mvnw -Pnative -DskipTests spring-boot:build-image \
-Dspring-boot.build-image.imageName=rmcampos/tasknote-api:latest \
-Dspring-boot.build-image.builder=paketobuildpacks/builder-jammy-tiny:0.0.505
- name: Log in to Docker Hub
uses: docker/login-action@v3
with:
username: ${{ secrets.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_TOKEN }}
- name: Extract metadata for Docker
id: meta
uses: docker/metadata-action@v5
with:
images: rmcampos/tasknote-api
tags: |
type=raw,value=${{ steps.version.outputs.tag }}
type=raw,value=latest,enable={{ is_default_branch }}
- name: Tag and push Docker image
run: |
docker tag docker.io/rmcampos/tasknote-api:latest docker.io/rmcampos/tasknote-api:${{ steps.version.outputs.tag }}
docker push docker.io/rmcampos/tasknote-api:latest
docker push docker.io/rmcampos/tasknote-api:${{ steps.version.outputs.tag }}
- name: Output Docker image URLs
run: |
echo ""
echo "=========================================="
echo "🚀 Docker Images Published Successfully!"
echo "=========================================="
echo ""
echo "API Image:"
echo " rmcampos/tasknote-api:${{ steps.version.outputs.tag }}"
echo " rmcampos/tasknote-api:latest"
echo ""
echo "=========================================="
- name: Create and push Git tag
run: |
git config user.name "gitea-actions[bot]"
git config user.email "gitea-actions[bot]@noreply.lightroasted.vps-kinghost.net"
git tag -a ${{ steps.version.outputs.tag }} -m "Release ${{ steps.version.outputs.tag }}"
git push origin ${{ steps.version.outputs.tag }}
+96
View File
@@ -0,0 +1,96 @@
name: Frontend CD
on:
workflow_dispatch:
push:
branches: [ main ]
paths:
- 'client/**'
- '.github/workflows/frontend-cd.yml'
jobs:
build:
runs-on: easynode-debian
permissions:
contents: write
packages: write
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Cache npm dependencies
uses: actions/cache@v3
with:
path: ~/.npm
key: ${{ runner.os }}-npm-${{ hashFiles('**/client/package-lock.json') }}
restore-keys: |
${{ runner.os }}-npm-
- name: Install dependencies
run: npm install
working-directory: ./client
- name: Run build
run: npm run build
working-directory: ./client
- name: Generate version tag
id: version
run: |
DATE=$(date +'%Y.%m.%d')
TAG="app-v${DATE}.${{ github.run_number }}"
echo "tag=${TAG}" >> $GITHUB_OUTPUT
echo "Generated tag: ${TAG}"
- name: Set up Docker Buildx
run: docker buildx inspect --bootstrap
- name: Log in to Docker Hub
uses: docker/login-action@v3
with:
username: ${{ secrets.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_TOKEN }}
- name: Extract metadata for Docker
id: meta
uses: docker/metadata-action@v5
with:
images: rmcampos/tasknote-app
tags: |
type=raw,value=${{ steps.version.outputs.tag }}
type=raw,value=latest,enable={{ is_default_branch }}
- name: Build and push Docker image
uses: docker/build-push-action@v5
with:
context: ./client
push: true
tags: |
${{ steps.meta.outputs.tags }}
rmcampos/tasknote-app:${{ steps.version.outputs.tag }}
labels: ${{ steps.meta.outputs.labels }}
cache-from: type=registry,ref=rmcampos/tasknote-app:buildcache
cache-to: type=registry,ref=rmcampos/tasknote-app:buildcache,mode=max
build-args: |
VITE_BUILD=${{ steps.version.outputs.tag }}
- name: Output Docker image URLs
run: |
echo ""
echo "=========================================="
echo "🚀 Docker Images Published Successfully!"
echo "=========================================="
echo ""
echo "App Image:"
echo " rmcampos/tasknote-app:${{ steps.version.outputs.tag }}"
echo " rmcampos/tasknote-app:latest"
echo ""
echo "=========================================="
- name: Create and push Git tag
run: |
git config user.name "gitea-actions[bot]"
git config user.email "gitea-actions[bot]@noreply.lightroasted.vps-kinghost.net"
git tag -a ${{ steps.version.outputs.tag }} -m "Release ${{ steps.version.outputs.tag }}"
git push origin ${{ steps.version.outputs.tag }}
-172
View File
@@ -1,172 +0,0 @@
name: Main CD-Deploy to Prod
on:
workflow_dispatch:
inputs:
backend_image:
description: "Backend image tag (full image reference)"
required: false
frontend_image:
description: "Frontend image tag (full image reference)"
required: false
apply:
description: "Apply changes after plan"
required: false
default: "true"
workflow_run:
workflows: [ "Main CI-Backend", "Main CI-Frontend" ]
types: [ completed ]
jobs:
terraform-plan:
if: ${{ github.event_name != 'workflow_run' || github.event.workflow_run.conclusion == 'success' }}
runs-on: ubuntu-latest
outputs:
no_changes: ${{ steps.check-changes.outputs.no_changes }}
permissions:
contents: read
steps:
- name: Checkout code
uses: actions/checkout@v6
with:
fetch-depth: 0
- name: Setup Terraform
uses: hashicorp/setup-terraform@v3
- name: Setup kubectl
uses: azure/setup-kubectl@v4
- name: Setup Kubeconfig
run: |
mkdir -p ~/.kube
echo "${{ secrets.KUBECONFIG_DATA }}" | base64 -d > ~/.kube/config
chmod 600 ~/.kube/config
- name: Validate cluster access
run: |
kubectl cluster-info
kubectl get namespace tasknote
- name: Determine deployment values
id: deploy-vars
run: |
backend_image="${{ github.event.inputs.backend_image }}"
frontend_image="${{ github.event.inputs.frontend_image }}"
latest_backend_tag_tmp="$(git tag --list 'api-v*' | sort -V | tail -n1)"
latest_backend_tag="${latest_backend_tag_tmp#api-v}"
latest_frontend_tag="$(git tag --list 'app-v*' | sort -V | tail -n1)"
if [ -z "$latest_backend_tag" ]; then
echo "No backend tag found matching [0-9]*" >&2
exit 1
fi
if [ -z "$latest_frontend_tag" ]; then
echo "No frontend tag found matching app-v*" >&2
exit 1
fi
if [ -z "$backend_image" ]; then
backend_image="ghcr.io/rmcampos/tasknote/api:$latest_backend_tag"
fi
if [ -z "$frontend_image" ]; then
frontend_image="ghcr.io/rmcampos/tasknote/app:$latest_frontend_tag"
fi
echo "Resolved backend_image=$backend_image"
echo "Resolved frontend_image=$frontend_image"
echo "backend_image=$backend_image" >> "$GITHUB_OUTPUT"
echo "frontend_image=$frontend_image" >> "$GITHUB_OUTPUT"
- name: Terraform Fmt -check -diff
working-directory: terraform
run: terraform fmt -check -diff
- name: Terraform Init
working-directory: terraform
env:
AWS_ACCESS_KEY_ID: ${{ secrets.R2_ACCESS_KEY_ID }}
AWS_SECRET_ACCESS_KEY: ${{ secrets.R2_SECRET_ACCESS_KEY }}
run: terraform init -input=false
- name: Terraform Validate
working-directory: terraform
run: terraform validate
- name: Terraform Plan
id: check-changes
working-directory: terraform
env:
AWS_ACCESS_KEY_ID: ${{ secrets.R2_ACCESS_KEY_ID }}
AWS_SECRET_ACCESS_KEY: ${{ secrets.R2_SECRET_ACCESS_KEY }}
run: |
timeout 1m terraform plan -input=false -out=tfplan \
-var="db_user=${{ secrets.DB_USER }}" \
-var="db_password=${{ secrets.DB_PASSWORD }}" \
-var="db_name=${{ secrets.DB_NAME }}" \
-var="security_key=${{ secrets.JWT_SECURITY_KEY }}" \
-var="mailgun_apikey=${{ secrets.MAILGUN_API_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
if jq -e '.resource_changes | length == 0' tfplan.json >/dev/null; then
echo "no_changes=true" >> "$GITHUB_OUTPUT"
echo "No changes to apply."
exit 0
else
echo "Changes detected. Proceeding with apply"
echo "no_changes=false" >> "$GITHUB_OUTPUT"
fi
- name: Upload plan artifact
uses: actions/upload-artifact@v4
with:
name: tfplan
path: terraform/tfplan
terraform-apply:
runs-on: ubuntu-latest
needs: terraform-plan
if: >
(github.event_name == 'push' || github.event_name == 'workflow_run' || inputs.apply == 'true')
&& needs.terraform-plan.outputs.no_changes == 'false'
environment:
name: production
url: https://tasknote.darkroasted.vps-kinghost.net
permissions:
contents: read
steps:
- name: Checkout code
uses: actions/checkout@v6
- name: Setup Terraform
uses: hashicorp/setup-terraform@v3
- name: Download plan artifact
uses: actions/download-artifact@v4
with:
name: tfplan
path: terraform
- name: Setup Kubeconfig
run: |
mkdir -p ~/.kube
echo "${{ secrets.KUBECONFIG_DATA }}" | base64 -d > ~/.kube/config
chmod 600 ~/.kube/config
- name: Terraform Init
working-directory: terraform
env:
AWS_ACCESS_KEY_ID: ${{ secrets.R2_ACCESS_KEY_ID }}
AWS_SECRET_ACCESS_KEY: ${{ secrets.R2_SECRET_ACCESS_KEY }}
run: terraform init -input=false
- name: Terraform Apply
working-directory: terraform
env:
AWS_ACCESS_KEY_ID: ${{ secrets.R2_ACCESS_KEY_ID }}
AWS_SECRET_ACCESS_KEY: ${{ secrets.R2_SECRET_ACCESS_KEY }}
run: timeout 1m terraform apply tfplan
-101
View File
@@ -1,101 +0,0 @@
name: Main CI-Backend
on:
workflow_dispatch:
push:
branches:
- main
paths:
- 'server/**/*.java'
- 'server/**/*.xml'
- 'server/pom.xml'
- '.github/workflows/main-server.yml'
jobs:
build-and-push:
name: Build & Push
runs-on: ubuntu-latest
permissions:
contents: write
packages: write
steps:
- name: Checkout code
uses: actions/checkout@v6
with:
fetch-depth: 0
- name: Set lowercase repo name
id: repo
run: echo "name=${GITHUB_REPOSITORY,,}" >> $GITHUB_OUTPUT
- name: Set up Java
uses: actions/setup-java@v4
with:
distribution: 'temurin'
java-version: '25'
cache: 'maven'
- name: Increment version in pom.xml
id: version
working-directory: ./server
run: |
# Extract current version from pom.xml
CURRENT_VERSION=$(./mvnw help:evaluate -Dexpression=project.version -q -DforceStdout)
echo "Current version: ${CURRENT_VERSION}"
# Increment version
NEW_VERSION=$((CURRENT_VERSION + 1))
echo "New version: ${NEW_VERSION}"
# Update pom.xml with new version
./mvnw versions:set -DnewVersion=${NEW_VERSION} -DgenerateBackupFiles=false -q
# Output for later steps
echo "version=${NEW_VERSION}" >> $GITHUB_OUTPUT
- name: Commit version bump
run: |
git config user.name "github-actions[bot]"
git config user.email "github-actions[bot]@users.noreply.github.com"
git add server/pom.xml
git commit -m "chore: bump api version to ${{ steps.version.outputs.version }} [skip ci]"
git push
- name: Log in to GitHub Container Registry
uses: docker/login-action@v3
with:
registry: ghcr.io
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3
- name: Find PR number
id: find_pr
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: |
PR_NUMBER=$(gh pr list --search "${{ github.sha }}" --state merged --json number --jq '.[0].number')
if [ -z "$PR_NUMBER" ]; then
echo "No merged PR found for this commit. Falling back to 'candidate' tag."
PR_NUMBER="candidate"
else
PR_NUMBER="pr-${PR_NUMBER}"
fi
echo "tag=${PR_NUMBER}" >> $GITHUB_OUTPUT
- name: Promote Docker image
run: |
docker buildx imagetools create \
--tag ghcr.io/${{ steps.repo.outputs.name }}/api:latest \
--tag ghcr.io/${{ steps.repo.outputs.name }}/api:${{ steps.version.outputs.version }} \
ghcr.io/${{ steps.repo.outputs.name }}/api:${{ steps.find_pr.outputs.tag }}
- name: Create and push Git tag
run: |
git config user.name "github-actions[bot]"
git config user.email "github-actions[bot]@users.noreply.github.com"
git tag -a api-v${{ steps.version.outputs.version }} -m "Release API v${{ steps.version.outputs.version }}"
git push origin api-v${{ steps.version.outputs.version }}
-83
View File
@@ -1,83 +0,0 @@
name: Main CI-Frontend
on:
workflow_dispatch:
push:
branches:
- main
paths:
- 'client/**/*.html'
- 'client/**/*.png'
- 'client/**/*.json'
- 'client/**/*.txt'
- 'client/**/*.ts'
- 'client/**/*.tsx'
- 'client/**/*.js'
- 'client/Dockerfile'
- 'client/Caddyfile'
- '.github/workflows/main-client.yml'
jobs:
build-and-push:
name: Build & Push
runs-on: ubuntu-latest
permissions:
contents: write
packages: write
steps:
- name: Checkout code
uses: actions/checkout@v6
with:
fetch-depth: 0
- name: Set lowercase repo name
id: repo
run: echo "name=${GITHUB_REPOSITORY,,}" >> $GITHUB_OUTPUT
- name: Generate version tag
id: version
run: |
DATE=$(date +'%Y.%m.%d')
TAG="app-v${DATE}.${{ github.run_number }}"
echo "tag=${TAG}" >> $GITHUB_OUTPUT
echo "Generated tag: ${TAG}"
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3
- name: Log in to GitHub Container Registry
uses: docker/login-action@v3
with:
registry: ghcr.io
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Find PR number
id: find_pr
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: |
PR_NUMBER=$(gh pr list --search "${{ github.sha }}" --state merged --json number --jq '.[0].number')
if [ -z "$PR_NUMBER" ]; then
echo "No merged PR found for this commit. Falling back to 'candidate' tag."
PR_NUMBER="candidate"
else
PR_NUMBER="pr-${PR_NUMBER}"
fi
echo "tag=${PR_NUMBER}" >> $GITHUB_OUTPUT
- name: Promote Docker image
run: |
docker buildx imagetools create \
--tag ghcr.io/${{ steps.repo.outputs.name }}/app:latest \
--tag ghcr.io/${{ steps.repo.outputs.name }}/app:${{ steps.version.outputs.tag }} \
ghcr.io/${{ steps.repo.outputs.name }}/app:${{ steps.find_pr.outputs.tag }}
- name: Create and push Git tag
run: |
git config user.name "github-actions[bot]"
git config user.email "github-actions[bot]@users.noreply.github.com"
git tag -a ${{ steps.version.outputs.tag }} -m "Release ${{ steps.version.outputs.tag }}"
git push origin ${{ steps.version.outputs.tag }}
-129
View File
@@ -1,129 +0,0 @@
name: Pull Request CI-Backend
on:
workflow_dispatch:
pull_request:
types: [opened, synchronize, reopened]
branches:
- 'main'
paths:
- 'server/**/*.java'
- 'server/**/*.xml'
- 'server/pom.xml'
- '.github/workflows/server-ci.yml'
jobs:
run-checks:
name: Checks
runs-on: ubuntu-latest
permissions:
contents: read
steps:
- name: Checkout code
uses: actions/checkout@v6
with:
fetch-depth: 0
- name: Set up Java
uses: actions/setup-java@v4
with:
distribution: 'temurin'
java-version: '25'
cache: 'maven'
cache-dependency-path: 'server/pom.xml'
- name: Run Check Style
working-directory: ./server
run: ./mvnw --no-transfer-progress checkstyle:check -Dcheckstyle.skip=false
- name: Run build
working-directory: ./server
run: ./mvnw --no-transfer-progress clean compile -DskipTests
- name: Run tests
working-directory: ./server
run: ./mvnw --no-transfer-progress clean verify -P tests --file pom.xml
build-and-push:
name: Build & Push
runs-on: ubuntu-latest
needs: ["run-checks"]
permissions:
contents: read
deployments: write
packages: write
steps:
- name: Checkout code
uses: actions/checkout@v6
with:
fetch-depth: 0
- name: Set lowercase repo name
id: repo
run: echo "name=${GITHUB_REPOSITORY,,}" >> $GITHUB_OUTPUT
- name: Set up Java
uses: actions/setup-java@v4
with:
distribution: 'temurin'
java-version: '25'
cache: 'maven'
cache-dependency-path: 'server/pom.xml'
- name: Log in to GitHub Container Registry
uses: docker/login-action@v3
with:
registry: ghcr.io
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Cache Buildpack layers
uses: actions/cache@v4
with:
path: |
~/.cache/reproducible-builds
key: ${{ runner.os }}-buildpack-${{ hashFiles('server/pom.xml') }}
restore-keys: |
${{ runner.os }}-buildpack-
- name: Build Docker image with Spring Boot
working-directory: ./server
run: |
./mvnw -Pnative -DskipTests spring-boot:build-image \
-Dspring-boot.build-image.imageName=ghcr.io/${{ steps.repo.outputs.name }}/api:latest \
-Dspring-boot.build-image.builder=paketobuildpacks/builder-jammy-tiny:latest
- name: Tag and push Docker image
run: |
docker tag ghcr.io/${{ steps.repo.outputs.name }}/api:latest ghcr.io/${{ steps.repo.outputs.name }}/api:candidate
docker tag ghcr.io/${{ steps.repo.outputs.name }}/api:latest ghcr.io/${{ steps.repo.outputs.name }}/api:pr-${{ github.event.pull_request.number }}
docker push ghcr.io/${{ steps.repo.outputs.name }}/api:candidate
docker push ghcr.io/${{ steps.repo.outputs.name }}/api:pr-${{ github.event.pull_request.number }}
- name: Create GitHub deployment for staging
if: ${{ github.event_name == 'pull_request' }}
uses: actions/github-script@v6
with:
script: |
const ref = context.payload.pull_request.head.sha;
const env = 'staging';
const resp = await github.rest.repos.createDeployment({
owner: context.repo.owner,
repo: context.repo.repo,
ref,
required_contexts: [],
environment: env,
description: `PR #${context.payload.pull_request.number} preview deployment`,
transient_environment: true,
auto_merge: false
});
// create a deployment status pointing to the staging URL
await github.rest.repos.createDeploymentStatus({
owner: context.repo.owner,
repo: context.repo.repo,
deployment_id: resp.data.id,
state: 'success',
environment_url: 'https://tasknote-stg.darkroasted.vps-kinghost.net'
});
-134
View File
@@ -1,134 +0,0 @@
name: Pull Request CI-Frontend
on:
workflow_dispatch:
pull_request:
types: [opened, synchronize, reopened]
branches:
- 'main'
paths:
- 'client/**/*.html'
- 'client/**/*.png'
- 'client/**/*.json'
- 'client/**/*.txt'
- 'client/**/*.ts'
- 'client/**/*.tsx'
- 'client/**/*.js'
- 'client/Dockerfile'
- 'client/Caddyfile'
- '.github/workflows/client-ci.yml'
jobs:
run-checks:
name: Checks
runs-on: ubuntu-latest
permissions:
contents: read
steps:
- name: Checkout code
uses: actions/checkout@v6
with:
fetch-depth: 0
- name: Set up Node.js
uses: actions/setup-node@v3
with:
node-version: '20'
cache: 'npm'
- name: Install dependencies
run: npm install
working-directory: ./client
- name: Run lint
run: npm run lint
working-directory: ./client
- name: Run build
run: npm run build
working-directory: ./client
- name: Run tests
run: npm run test:no-watch
working-directory: ./client
build-and-push:
name: Build & Push
runs-on: ubuntu-latest
needs: ["run-checks"]
permissions:
contents: write
packages: write
deployments: write
steps:
- name: Checkout code
uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3
- name: Log in to GitHub Container Registry
uses: docker/login-action@v3
with:
registry: ghcr.io
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Extract metadata for Docker
id: meta
uses: docker/metadata-action@v5
with:
images: ghcr.io/${{ github.repository }}/app
tags: |
type=raw,value=candidate
type=raw,value=pr-${{ github.event.pull_request.number }}
- name: Generate version tag
id: version
run: |
DATE=$(date +'%Y.%m.%d')
TAG="app-v${DATE}.${{ github.run_number }}"
echo "tag=${TAG}" >> $GITHUB_OUTPUT
echo "Generated tag: ${TAG}"
- name: Build and push Docker image
uses: docker/build-push-action@v5
with:
context: ./client
push: true
tags: ${{ steps.meta.outputs.tags }}
labels: ${{ steps.meta.outputs.labels }}
cache-from: type=gha
cache-to: type=gha,mode=max
build-args: |
VITE_BUILD=${{ steps.version.outputs.tag }}
- name: Create GitHub deployment for staging
if: ${{ github.event_name == 'pull_request' }}
uses: actions/github-script@v6
with:
script: |
const ref = context.payload.pull_request.head.sha;
const env = 'staging';
const resp = await github.rest.repos.createDeployment({
owner: context.repo.owner,
repo: context.repo.repo,
ref,
required_contexts: [],
environment: env,
description: `PR #${context.payload.pull_request.number} preview deployment`,
transient_environment: true,
auto_merge: false
});
// create a deployment status pointing to the staging URL
await github.rest.repos.createDeploymentStatus({
owner: context.repo.owner,
repo: context.repo.repo,
deployment_id: resp.data.id,
state: 'success',
environment_url: 'https://tasknote-stg.darkroasted.vps-kinghost.net'
});
+74
View File
@@ -0,0 +1,74 @@
name: CI
on:
pull_request:
branches: ['**/*']
jobs:
build-backend:
name: Build Backend
runs-on: graalvm-25
permissions:
contents: read
steps:
- name: Checkout code
uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Cache Maven dependencies
uses: actions/cache@v3
with:
path: ~/.m2/repository
key: ${{ runner.os }}-maven-${{ hashFiles('**/server/pom.xml') }}
restore-keys: |
${{ runner.os }}-maven-
- name: Run Check Style
working-directory: ./server
run: ./mvnw --no-transfer-progress checkstyle:check -Dcheckstyle.skip=false
- name: Run build
working-directory: ./server
run: ./mvnw --no-transfer-progress clean compile -DskipTests
- name: Run tests
working-directory: ./server
run: ./mvnw --no-transfer-progress clean verify -P tests --file pom.xml
build-frontend:
name: Build Frontend
runs-on: easynode-debian
permissions:
contents: read
steps:
- name: Checkout code
uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Cache npm dependencies
uses: actions/cache@v3
with:
path: ~/.npm
key: ${{ runner.os }}-npm-${{ hashFiles('**/client/package-lock.json') }}
restore-keys: |
${{ runner.os }}-npm-
- name: Install dependencies
run: npm install
working-directory: ./client
- name: Run lint
run: npm run lint
working-directory: ./client
- name: Run build
run: npm run build
working-directory: ./client
- name: Run tests
run: npm run test:no-watch
working-directory: ./client
+134
View File
@@ -0,0 +1,134 @@
name: Deploy to Prod
concurrency:
group: deploy-production
cancel-in-progress: true
on:
workflow_dispatch:
inputs:
backend_image:
description: "Backend image tag (full image reference)"
required: false
frontend_image:
description: "Frontend image tag (full image reference)"
required: false
apply:
description: "Apply changes after plan"
required: false
default: "true"
workflow_run:
workflows: [ "Backend CD", "Frontend CD" ]
types: [ completed ]
jobs:
terraform-plan:
if: ${{ github.event_name != 'workflow_run' || github.event.workflow_run.conclusion == 'success' }}
runs-on: easynode-debian
outputs:
has_changes: ${{ steps.check-changes.outputs.has_changes }}
permissions:
contents: read
steps:
- name: Checkout code
uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Setup Terraform
uses: hashicorp/setup-terraform@v3
- name: Setup kubectl
uses: azure/setup-kubectl@v4
- name: Setup Doppler CLI
uses: dopplerhq/cli-action@v4
- name: Setup Kubeconfig
env:
DOPPLER_TOKEN: ${{ secrets.DOPPLER_AT_SECRETS }}
run: |
mkdir -p ~/.kube
doppler run --config prd -- bash -c 'echo "$KUBECONFIG_DATA" | base64 -d > ~/.kube/config'
chmod 600 ~/.kube/config
- name: Validate cluster access
run: |
kubectl cluster-info
kubectl get namespace tasknote
- name: Determine deployment values
id: deploy-vars
run: |
backend_image="${{ github.event.inputs.backend_image }}"
frontend_image="${{ github.event.inputs.frontend_image }}"
latest_backend_tag="$(git tag --list 'api-v*' | sort -V | tail -n1)"
echo "latest backend tag=$latest_backend_tag"
latest_frontend_tag="$(git tag --list 'app-v*' | sort -V | tail -n1)"
echo "latest frontend tag=$latest_frontend_tag"
if [ -z "$backend_image" ]; then
backend_image="docker.io/rmcampos/tasknote-api:$latest_backend_tag"
fi
if [ -z "$frontend_image" ]; then
frontend_image="docker.io/rmcampos/tasknote-app:$latest_frontend_tag"
fi
echo "Resolved backend_image=$backend_image"
echo "Resolved frontend_image=$frontend_image"
echo "backend_image=$backend_image" >> "$GITHUB_OUTPUT"
echo "frontend_image=$frontend_image" >> "$GITHUB_OUTPUT"
- name: Terraform Fmt -check -diff
working-directory: terraform
run: terraform fmt -check -diff
- name: Terraform Init
working-directory: terraform
env:
DOPPLER_TOKEN: ${{ secrets.DOPPLER_AT_SECRETS }}
run: doppler run --config prd -- terraform init -input=false
- name: Terraform Validate
working-directory: terraform
run: terraform validate
- name: Terraform Plan
id: check-changes
working-directory: terraform
env:
DOPPLER_TOKEN: ${{ secrets.DOPPLER_AT_SECRETS }}
BACKEND_IMAGE: ${{ steps.deploy-vars.outputs.backend_image }}
FRONTEND_IMAGE: ${{ steps.deploy-vars.outputs.frontend_image }}
run: |
doppler run --config prd -- bash -c '
TF_VAR_db_user="$DB_USER" \
TF_VAR_db_password="$DB_PASSWORD" \
TF_VAR_db_name="$DB_NAME" \
TF_VAR_security_key="$SECURITY_KEY" \
TF_VAR_mailgun_apikey="$MAILGUN_APIKEY" \
TF_VAR_r2_access_key="$AWS_ACCESS_KEY_ID" \
TF_VAR_r2_secret_key="$AWS_SECRET_ACCESS_KEY" \
TF_VAR_backend_image="$BACKEND_IMAGE" \
TF_VAR_frontend_image="$FRONTEND_IMAGE" \
timeout 1m terraform plan -input=false -out=tfplan
'
terraform show -json tfplan > tfplan.json
if jq -e '.resource_changes | length == 0' tfplan.json >/dev/null; then
echo "has_changes=false" >> "$GITHUB_OUTPUT"
echo "No changes to apply."
exit 0
else
echo "Changes detected. Proceeding with apply"
echo "has_changes=true" >> "$GITHUB_OUTPUT"
fi
- name: Terraform Apply
working-directory: terraform
if: steps.check-changes.outputs.has_changes == 'true'
env:
DOPPLER_TOKEN: ${{ secrets.DOPPLER_AT_SECRETS }}
run: doppler run --config prd -- timeout 2m terraform apply tfplan
@@ -2,17 +2,14 @@ name: Pull Request CD-Deploy to Staging
on:
workflow_dispatch:
workflow_run:
workflows: [ "Pull Request CI-Backend", "Pull Request CI-Frontend" ]
types: [ completed ]
jobs:
terraform-plan-stg:
name: Plan changs to staging
if: ${{ github.event.workflow_run.conclusion == 'success' }}
runs-on: ubuntu-latest
if: ${{ github.event_name == 'workflow_dispatch' || github.event.workflow_run.conclusion == 'success' }}
runs-on: easynode-debian
outputs:
no_changes: ${{ steps.check-changes.outputs.no_changes }}
has_changes: ${{ steps.check-changes.outputs.has_changes }}
permissions:
contents: read
steps:
@@ -24,6 +21,10 @@ jobs:
- name: Setup Terraform
uses: hashicorp/setup-terraform@v3
- name: Show Terraform provider versions
working-directory: terraform-stg
run: terraform version
- name: Setup kubectl
uses: azure/setup-kubectl@v4
@@ -41,8 +42,8 @@ jobs:
- name: Determine deployment values
id: deploy-vars
run: |
backend_image="ghcr.io/rmcampos/tasknote/api:candidate"
frontend_image="ghcr.io/rmcampos/tasknote/app:candidate"
backend_image="rmcampos/tasknote-api:candidate"
frontend_image="rmcampos/tasknote-app:candidate"
echo "backend_image=$backend_image" >> "$GITHUB_OUTPUT"
echo "frontend_image=$frontend_image" >> "$GITHUB_OUTPUT"
@@ -69,7 +70,7 @@ jobs:
AWS_ACCESS_KEY_ID: ${{ secrets.R2_ACCESS_KEY_ID }}
AWS_SECRET_ACCESS_KEY: ${{ secrets.R2_SECRET_ACCESS_KEY }}
run: |
timeout 1m terraform plan -input=false -out=tfplan \
timeout 3m terraform plan -input=false -out=tfplan \
-var="db_user=${{ secrets.DB_USER }}" \
-var="db_password=${{ secrets.DB_PASSWORD }}" \
-var="db_name=${{ secrets.DB_NAME }}" \
@@ -80,58 +81,19 @@ jobs:
-var="deploy_version=${{ github.run_id }}"
terraform show -json tfplan > tfplan.json
if jq -e '.resource_changes | length == 0' tfplan.json >/dev/null; then
echo "no_changes=true" >> "$GITHUB_OUTPUT"
echo "has_changes=false" >> "$GITHUB_OUTPUT"
echo "No changes to apply."
exit 0
else
echo "Changes detected. Proceeding with apply"
echo "no_changes=false" >> "$GITHUB_OUTPUT"
echo "has_changes=true" >> "$GITHUB_OUTPUT"
fi
- name: Upload plan artifact
uses: actions/upload-artifact@v4
with:
name: tfplan
path: terraform-stg/tfplan
terraform-apply:
runs-on: ubuntu-latest
needs: terraform-plan-stg
if: needs.terraform-plan-stg.outputs.no_changes == 'false'
environment:
name: staging
url: https://tasknote-stg.darkroasted.vps-kinghost.net
permissions:
contents: read
steps:
- name: Checkout code
uses: actions/checkout@v6
- name: Setup Terraform
uses: hashicorp/setup-terraform@v3
- name: Download plan artifact
uses: actions/download-artifact@v4
with:
name: tfplan
path: terraform-stg
- name: Setup Kubeconfig
run: |
mkdir -p ~/.kube
echo "${{ secrets.KUBECONFIG_DATA }}" | base64 -d > ~/.kube/config
chmod 600 ~/.kube/config
- name: Terraform Init
working-directory: terraform-stg
env:
AWS_ACCESS_KEY_ID: ${{ secrets.R2_ACCESS_KEY_ID }}
AWS_SECRET_ACCESS_KEY: ${{ secrets.R2_SECRET_ACCESS_KEY }}
run: terraform init -input=false
- name: Terraform Apply
working-directory: terraform-stg
if: steps.check-changes.outputs.has_changes == 'true'
env:
AWS_ACCESS_KEY_ID: ${{ secrets.R2_ACCESS_KEY_ID }}
AWS_SECRET_ACCESS_KEY: ${{ secrets.R2_SECRET_ACCESS_KEY }}
KUBE_CONFIG_PATH: ~/.kube/config
run: timeout 1m terraform apply tfplan
@@ -0,0 +1,88 @@
name: Main CI-Backend
on:
workflow_dispatch:
jobs:
build-and-push:
name: Build & Push
runs-on: graalvm-25
permissions:
contents: write
packages: write
steps:
- name: Checkout code
uses: actions/checkout@v4
with:
fetch-depth: 0
token: ${{ secrets.REGISTRY_TOKEN }}
- name: Cache Maven dependencies
uses: actions/cache@v3
with:
path: ~/.m2/repository
key: ${{ runner.os }}-maven-${{ hashFiles('**/server/pom.xml') }}
restore-keys: |
${{ runner.os }}-maven-
- name: Increment version in pom.xml
id: version
working-directory: ./server
run: |
CURRENT_VERSION=$(./mvnw help:evaluate -Dexpression=project.version -q -DforceStdout)
echo "Current version: ${CURRENT_VERSION}"
NEW_VERSION=$((CURRENT_VERSION + 1))
echo "New version: ${NEW_VERSION}"
./mvnw versions:set -DnewVersion=${NEW_VERSION} -DgenerateBackupFiles=false -q
echo "version=${NEW_VERSION}" >> $GITHUB_OUTPUT
- name: Commit version bump
run: |
git config user.name "gitea-actions[bot]"
git config user.email "gitea-actions[bot]@noreply.lightroasted.vps-kinghost.net"
git add server/pom.xml
git commit -m "chore: bump api version to ${{ steps.version.outputs.version }} [skip ci]"
git push
- name: Log in to Docker Hub
uses: docker/login-action@v3
with:
username: ${{ secrets.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_TOKEN }}
- name: Find PR number
id: find_pr
run: |
PR_NUMBER=$(curl -s \
-H "Authorization: token ${{ secrets.REGISTRY_TOKEN }}" \
"https://lightroasted.vps-kinghost.net/api/v1/repos/${{ github.repository }}/commits/${{ github.sha }}/pull" \
| jq -r 'if type == "object" and .number != null then .number | tostring else empty end')
if [ -z "$PR_NUMBER" ]; then
echo "No merged PR found for this commit. Falling back to 'candidate' tag."
PR_NUMBER="candidate"
else
PR_NUMBER="pr-${PR_NUMBER}"
fi
echo "tag=${PR_NUMBER}" >> $GITHUB_OUTPUT
- name: Promote Docker image
run: |
docker pull docker.io/rmcampos/tasknote-api:${{ steps.find_pr.outputs.tag }}
docker tag docker.io/rmcampos/tasknote-api:${{ steps.find_pr.outputs.tag }} docker.io/rmcampos/tasknote-api:latest
docker tag docker.io/rmcampos/tasknote-api:${{ steps.find_pr.outputs.tag }} docker.io/rmcampos/tasknote-api:${{ steps.version.outputs.version }}
docker push docker.io/rmcampos/tasknote-api:latest
docker push docker.io/rmcampos/tasknote-api:${{ steps.version.outputs.version }}
- name: Create and push Git tag
run: |
git config user.name "gitea-actions[bot]"
git config user.email "gitea-actions[bot]@noreply.lightroasted.vps-kinghost.net"
git tag -a api-v${{ steps.version.outputs.version }} -m "Release API v${{ steps.version.outputs.version }}"
git push origin api-v${{ steps.version.outputs.version }}
- name: Log pushed images
run: |
echo "Pushed images:"
echo " docker.io/rmcampos/tasknote-api:latest"
echo " docker.io/rmcampos/tasknote-api:${{ steps.version.outputs.version }}"
@@ -0,0 +1,75 @@
name: Main CI-Frontend
on:
workflow_dispatch:
jobs:
build-and-push:
name: Build & Push
runs-on: easynode-debian
permissions:
contents: write
packages: write
steps:
- name: Checkout code
uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Set up Docker Buildx
run: docker buildx inspect --bootstrap
- name: Log in to Docker Hub
uses: docker/login-action@v3
with:
username: ${{ secrets.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_TOKEN }}
- name: Find PR number
id: find_pr
run: |
PR_NUMBER=$(curl -s \
-H "Authorization: token ${{ secrets.REGISTRY_TOKEN }}" \
"https://lightroasted.vps-kinghost.net/api/v1/repos/${{ github.repository }}/commits/${{ github.sha }}/pull" \
| jq -r 'if type == "object" and .number != null then .number | tostring else empty end')
if [ -z "$PR_NUMBER" ]; then
echo "No merged PR found for this commit. Falling back to 'candidate' tag."
PR_NUMBER="candidate"
else
PR_NUMBER="pr-${PR_NUMBER}"
fi
echo "tag=${PR_NUMBER}" >> $GITHUB_OUTPUT
- name: Extract version from image
id: version
run: |
docker pull rmcampos/tasknote-app:${{ steps.find_pr.outputs.tag }}
VITE_BUILD=$(docker inspect rmcampos/tasknote-app:${{ steps.find_pr.outputs.tag }} \
--format '{{ range .Config.Env }}{{ println . }}{{ end }}' \
| grep '^VITE_BUILD=' | cut -d= -f2)
if [ -z "$VITE_BUILD" ]; then
echo "Could not extract VITE_BUILD from image" >&2
exit 1
fi
echo "tag=${VITE_BUILD}" >> $GITHUB_OUTPUT
echo "Extracted version: ${VITE_BUILD}"
- name: Promote Docker image
run: |
docker buildx imagetools create \
--tag rmcampos/tasknote-app:latest \
rmcampos/tasknote-app:${{ steps.find_pr.outputs.tag }}
- name: Create and push Git tag
run: |
git config user.name "gitea-actions[bot]"
git config user.email "gitea-actions[bot]@noreply.lightroasted.vps-kinghost.net"
git tag -a ${{ steps.version.outputs.tag }} -m "Release ${{ steps.version.outputs.tag }}"
git push origin ${{ steps.version.outputs.tag }}
- name: Log pushed images
run: |
echo "Pushed images:"
echo " rmcampos/tasknote-app:latest"
echo " rmcampos/tasknote-app:${{ steps.version.outputs.tag }}"
+95
View File
@@ -0,0 +1,95 @@
name: Pull Request CI-Backend
on:
workflow_dispatch:
jobs:
run-checks:
name: Checks
runs-on: graalvm-25
permissions:
contents: read
steps:
- name: Checkout code
uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Cache Maven dependencies
uses: actions/cache@v3
with:
path: ~/.m2/repository
key: ${{ runner.os }}-maven-${{ hashFiles('**/server/pom.xml') }}
restore-keys: |
${{ runner.os }}-maven-
- name: Run Check Style
working-directory: ./server
run: ./mvnw --no-transfer-progress checkstyle:check -Dcheckstyle.skip=false
- name: Run build
working-directory: ./server
run: ./mvnw --no-transfer-progress clean compile -DskipTests
- name: Run tests
working-directory: ./server
run: ./mvnw --no-transfer-progress clean verify -P tests --file pom.xml
build-and-push:
name: Build & Push
runs-on: graalvm-25
needs: ["run-checks"]
permissions:
contents: read
deployments: write
packages: write
steps:
- name: Checkout code
uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Cache Maven dependencies
uses: actions/cache@v3
with:
path: ~/.m2/repository
key: ${{ runner.os }}-maven-${{ hashFiles('**/server/pom.xml') }}
restore-keys: |
${{ runner.os }}-maven-
- name: Log in to Docker Hub
uses: docker/login-action@v3
with:
username: ${{ secrets.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_TOKEN }}
- name: Build Docker image with Spring Boot
working-directory: ./server
run: |
./mvnw -Pnative -DskipTests spring-boot:build-image \
-Dspring-boot.build-image.imageName=rmcampos/tasknote-api:latest \
-Dspring-boot.build-image.builder=paketobuildpacks/builder-jammy-tiny:0.0.505
- name: Tag and push Docker image
run: |
docker tag docker.io/rmcampos/tasknote-api:latest docker.io/rmcampos/tasknote-api:candidate
docker tag docker.io/rmcampos/tasknote-api:latest docker.io/rmcampos/tasknote-api:pr-${{ github.event.pull_request.number }}
docker push docker.io/rmcampos/tasknote-api:candidate
docker push docker.io/rmcampos/tasknote-api:pr-${{ github.event.pull_request.number }}
- name: Create Gitea deployment for staging
if: ${{ github.event_name == 'pull_request' }}
run: |
curl -s -X POST \
-H "Authorization: token ${{ secrets.REGISTRY_TOKEN }}" \
-H "Content-Type: application/json" \
"https://lightroasted.vps-kinghost.net/api/v1/repos/${{ github.repository }}/statuses/${{ github.event.pull_request.head.sha }}" \
-d "{\"context\": \"staging/deploy\", \"state\": \"success\", \"description\": \"PR #${{ github.event.pull_request.number }} staging ready\", \"target_url\": \"https://tasknote-stg.darkroasted.vps-kinghost.net\"}"
- name: Log pushed images
run: |
echo "Pushed images:"
echo " docker.io/rmcampos/tasknote-api:candidate"
echo " docker.io/rmcampos/tasknote-api:pr-${{ github.event.pull_request.number }}"
+120
View File
@@ -0,0 +1,120 @@
name: Pull Request CI-Frontend
on:
workflow_dispatch:
jobs:
run-checks:
name: Checks
runs-on: easynode-debian
permissions:
contents: read
steps:
- name: Checkout code
uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Cache npm dependencies
uses: actions/cache@v3
with:
path: ~/.npm
key: ${{ runner.os }}-npm-${{ hashFiles('**/client/package-lock.json') }}
restore-keys: |
${{ runner.os }}-npm-
- name: Debug cache env
run: |
echo "CACHE_URL=${ACTIONS_CACHE_URL}"
echo "RUNTIME_URL=${ACTIONS_RUNTIME_URL}"
curl -s -w "\nHTTP: %{http_code}\n" \
-H "Authorization: Bearer ${ACTIONS_RUNTIME_TOKEN}" \
"${ACTIONS_CACHE_URL}_apis/artifactcache/cache?keys=test&version=test"
- name: Install dependencies
run: npm install
working-directory: ./client
- name: Run lint
run: npm run lint
working-directory: ./client
- name: Run build
run: npm run build
working-directory: ./client
- name: Run tests
run: npm run test:no-watch
working-directory: ./client
build-and-push:
name: Build & Push
runs-on: easynode-debian
needs: ["run-checks"]
permissions:
contents: write
packages: write
deployments: write
steps:
- name: Checkout code
uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Set up Docker Buildx
run: docker buildx inspect --bootstrap
- name: Log in to Docker Hub
uses: docker/login-action@v3
with:
username: ${{ secrets.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_TOKEN }}
- name: Extract metadata for Docker
id: meta
uses: docker/metadata-action@v5
with:
images: rmcampos/tasknote-app
tags: |
type=raw,value=candidate
type=raw,value=pr-${{ github.event.pull_request.number }}
- name: Generate version tag
id: version
run: |
DATE=$(date +'%Y.%m.%d')
TAG="app-v${DATE}.${{ github.run_number }}"
echo "tag=${TAG}" >> $GITHUB_OUTPUT
echo "Generated tag: ${TAG}"
- name: Build and push Docker image
uses: docker/build-push-action@v5
with:
context: ./client
push: true
tags: |
${{ steps.meta.outputs.tags }}
rmcampos/tasknote-app:${{ steps.version.outputs.tag }}
labels: ${{ steps.meta.outputs.labels }}
cache-from: type=registry,ref=rmcampos/tasknote-app:buildcache
cache-to: type=registry,ref=rmcampos/tasknote-app:buildcache,mode=max
build-args: |
VITE_BUILD=${{ steps.version.outputs.tag }}
- name: Create Gitea deployment for staging
if: ${{ github.event_name == 'pull_request' }}
run: |
curl -s -X POST \
-H "Authorization: token ${{ secrets.REGISTRY_TOKEN }}" \
-H "Content-Type: application/json" \
"https://lightroasted.vps-kinghost.net/api/v1/repos/${{ github.repository }}/statuses/${{ github.event.pull_request.head.sha }}" \
-d "{\"context\": \"staging/deploy\", \"state\": \"success\", \"description\": \"PR #${{ github.event.pull_request.number }} staging ready\", \"target_url\": \"https://tasknote-stg.darkroasted.vps-kinghost.net\"}"
- name: Log pushed images
run: |
echo "Pushed images:"
echo " rmcampos/tasknote-app:candidate"
echo " rmcampos/tasknote-app:pr-${{ github.event.pull_request.number }}"
echo " rmcampos/tasknote-app:${{ steps.version.outputs.tag }}"
+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/drop-ci-pr-frontend.yml`, `.github/workflows/drop-ci-pr-backend.yml`) run checks then push `:candidate` and `:pr-<N>` images to GHCR.
- Main workflows (`.github/workflows/drop-ci-main-frontend.yml`, `.github/workflows/drop-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/drop-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/deploy.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.
+302
View File
@@ -0,0 +1,302 @@
# Changelog
All notable changes to Tasknote will be documented in this file.
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
## [Unreleased]
## 2026-07-28
### Added
- Option to archive notes.
### Changed
- Notes should be archived before deleting.
```bash
# Docker images
docker pull rmcampos/tasknote-app:app-v2026.07.28.000
docker pull rmcampos/tasknote-api:api-v2026.07.28.000
```
## 2026-07-23
### Added
- Section for completed tasks in the home page..
- Icons in tasks and notes to differentiate them.
- Modal confirming before delete tasks and notes.
### Changed
- Completed tasks are now kept in the database, unless deleted.
- Buttons in home screen notes view to match the system design.
- Add task form to be easier to see and better structured.
- Delete my account buttons layout to match the system design.
- Loaded tasks now has a light yellow styling.
```bash
# Docker images
docker pull rmcampos/tasknote-app:app-v2026.07.23.190
docker pull rmcampos/tasknote-api:api-v2026.07.23.189
```
### Fixed
- Dropped the untagged tag from loading in the add notes and tasks form.
## 2026-07-22
### Added
- Button to save notes from the preview modal. Closes [#15](https://lightroasted.vps-kinghost.net/rmcampos/tasknote/issues/15)
### Changed
- Removed deployments to staging in PR pipelines. PR only runs CI now. Closes [#14](https://lightroasted.vps-kinghost.net/rmcampos/tasknote/issues/14)
### Removed
- Old files from project and moved scripts to `tools` folder.
```bash
# Docker images
docker pull rmcampos/tasknote-app:app-v2026.07.22.161
docker pull rmcampos/tasknote-api:api-v2026.07.22.169
```
## 2026-07-20
### Changed
- Labels in tasks due date to use the time ago format.
- Bumped all minor deps in the frontend.
### Fixed
- Background image position in landing, login and register pages.
### Removed
- React Date Picker dependency in favor of regular browser input date UI.
```bash
# Docker images
docker pull rmcampos/tasknote-app:app-v2026.07.20.161
```
## 2026-07-01
### Added
- Support for `Draft` notes and tasks.
- Memory for open notes in the home page, if a tab is closed, the app will remember.
### Fixed
- Frontend app build version release getting lost in workflows.
### Security
- Addressed a list of critical security issues including validations, logging, and passwords.
### Docker images
- `rmcampos/tasknote-app:app-v2026.07.01.140`
### Changed
- Bumped client minor and major dependencies.
### Docker images
- `rmcampos/tasknote-app:app-v2026.06.25.102`
## api-v32 && app-v2026.06.15.97 - 2026-06-15
### Changed
- Bumped Spring Boot to 4.0.7
- CI/CD workflow files updated to run on Gitea.
- Container registry switched to Docker Hub.
### Docker images
- [rmcampos/tasknote-api:32](https://hub.docker.com/layers/rmcampos/tasknote-api/32/images/sha256-4b719a08dbed4a9d4a6eece0059573954ee5193ab8247787fb0e30c037f6b1c6)
- [rmcampos/tasknote-app:app-v2026.06.15.97](https://hub.docker.com/layers/rmcampos/tasknote-app/app-v2026.06.15.97/images/sha256-945a215a7105e34f97ab8e43094092e157156c0b557364260c019c4036cf845d)
## [app-v2026.06.08.22](https://github.com/RMCampos/tasknote/releases/tag/app-v2026.06.08.22) - 2026-06-08
### Added
- Shell Script to confirm new users using docker and sql;
### Changed
- Bumped frontend dependencies to latest versions;
- `@types/node` from `25.9.1` to `25.9.2`
- `dompurify` from `3.4.7` to `3.4.8`
- `i18next` from `26.3.0` to `26.3.1`
- `react` from `19.2.6` to `19.2.7`
- `react-dom` from `19.2.6` to `19.2.7`
- `react-router` from `7.16.0` to `7.17.0`
- `@types/react` from `19.2.15` to `19.2.17`
- `eslint-plugin-n` from `18.0.1` to `18.1.0`
- `typescript-eslint` from `8.60.0` to `8.61.0`
- Ngrok and Dev Docker composer files to run using local users id and group id (`UID` and `GID`);
## [app-v2026.06.08.21](https://github.com/RMCampos/tasknote/releases/tag/app-v2026.06.08.21) - 2026-06-08
### Changed
- The About page to list all current features and tech stack. ([#62](https://github.com/RMCampos/tasknote/issues/62))
## [app-v2026.06.01.20] - 2026-06-01
### Changed
- Bumped backend and frontend dependencies to latest versions. (#61)
## [app-v2026.05.26.19] - 2026-05-26
### Added
- SDD and DDD specification files for AI-assisted development, including Spec 001 implementation. (#60)
## [app-v2026.05.19.18] - 2026-05-19
### Changed
- Auth session refresh now uses server-authoritative current user data instead of stale client state. (#59)
## [app-v2026.05.18.17] - 2026-05-18
### Added
- Last activity date/time is now tracked and displayed for tasks and notes. (#57)
## [app-v2026.05.17.16] - 2026-05-17
### Added
- Users must confirm their email address before they can log in. (#56)
- Migrated app to new domain with Traefik redirect middleware. (#53)
### Fixed
- Mailgun authentication error (401) when sending emails. (#55)
- New domain correctly allowed in CORS and CSP configuration. (#54)
## [app-v2026.05.13.15] - 2026-05-13
### Changed
- Dropped refresh token logic; auth now relies solely on short-lived access tokens, simplifying the session flow. (#51)
## [app-v2026.05.13.14] - 2026-05-13
### Added
- Cypress E2E tests covering Home, Task, and Notes management flows. (#46)
- Cypress E2E tests for authentication flows. (#39)
- Scheduled database backups. (#48)
### Fixed
- Premature route resolution before initial auth check completes. (#45)
- Blocked inline styles in CSP via SHA-256 hash in `style-src`. (#43)
- Frontend test warnings and errors. (#37)
### Changed
- Upgraded Vite to v8. (#35)
## [app-v2026.04.29.4] - 2026-04-29
### Added
- Gemini CLI commands and updated AI agent configuration.
### Changed
- Upgraded TypeScript to v6. (#34)
## [app-v2026.04.29.3] - 2026-04-29
### Changed
- Updated client dependencies to latest minor versions. (#33, #32)
## [app-v2026.04.16.1] - 2026-04-16
### Added
- Dev environment config files and scripts to run the app locally on VPS. (#29)
### Security
- Improved security posture and added protections against XSS attacks. (#30)
## [app-v2026.04.08.20] - 2026-04-08
### Added
- GitHub Actions workflow for building server candidate images.
### Changed
- Bumped Spring Boot to 4.0.5. (#27)
## [app-v2026.04.06.19] - 2026-04-06
### Added
- Kubernetes CD pipeline via GitHub Actions.
- Dev container for Java development.
- Workflow skips deployment when no source changes detected.
## [app-v2026.03.17.17] - 2026-03-17
### Fixed
- Missing email templates and configuration for new domain.
## [app-v2026.03.16.16] - 2026-03-16
### Fixed
- Backend memory leak and state management issues. (#23)
- Error messages not propagating back to client in Spring v4.
### Changed
- Updated error messages and translations for improved user feedback.
## [app-v2026.02.28.15] - 2026-02-28
### Added
- Public note sharing: users can share a note via a public link. (#22)
## [app-v2026.02.27.13] - 2026-02-27
### Added
- Source and Copy buttons in the note markdown preview modal. (#21)
### Changed
- Upgraded backend to Spring Boot 4.0.3 and Java 25. (#20)
## [app-v2026.02.05.5] - 2026-02-05
### Changed
- Improved markdown rendering and added home filter context.
- Added notes tags support throughout the app. (#13)
- Tag suggestion dropdown for Notes and Tasks. (#12)
### Fixed
- Backend null pointer exception.
- Filters now persist between actions in the Home view. (#9)
## [app-v2026.01.18.4] - 2026-01-18
### Added
- CI now uses GHCR (GitHub Container Registry) with unified version tagging for backend images.
### Changed
- Upgraded Spring Boot to 3.5.9.
### Fixed
- Docker image name casing issue causing deployment failures.
## [app-v2026.01.14.3] - 2026-01-14
### Changed
- Dropped Lombok dependency; bumped to Spring 3.5.9.
- Updated backend dependencies to latest versions.
## [app-v2025.12.15.1] - 2025-12-15
### Added
- Initial release with core task and note management features.
- Bruno API collections for local development.
[app-v2026.06.01.20]: https://github.com/RMCampos/tasknote/compare/app-v2026.05.26.19...app-v2026.06.01.20
[app-v2026.05.26.19]: https://github.com/RMCampos/tasknote/compare/app-v2026.05.19.18...app-v2026.05.26.19
[app-v2026.05.19.18]: https://github.com/RMCampos/tasknote/compare/app-v2026.05.18.17...app-v2026.05.19.18
[app-v2026.05.18.17]: https://github.com/RMCampos/tasknote/compare/app-v2026.05.17.16...app-v2026.05.18.17
[app-v2026.05.17.16]: https://github.com/RMCampos/tasknote/compare/app-v2026.05.13.15...app-v2026.05.17.16
[app-v2026.05.13.15]: https://github.com/RMCampos/tasknote/compare/app-v2026.05.13.14...app-v2026.05.13.15
[app-v2026.05.13.14]: https://github.com/RMCampos/tasknote/compare/app-v2026.04.29.4...app-v2026.05.13.14
[app-v2026.04.29.4]: https://github.com/RMCampos/tasknote/compare/app-v2026.04.29.3...app-v2026.04.29.4
[app-v2026.04.29.3]: https://github.com/RMCampos/tasknote/compare/app-v2026.04.16.1...app-v2026.04.29.3
[app-v2026.04.16.1]: https://github.com/RMCampos/tasknote/compare/app-v2026.04.08.20...app-v2026.04.16.1
[app-v2026.04.08.20]: https://github.com/RMCampos/tasknote/compare/app-v2026.04.06.19...app-v2026.04.08.20
[app-v2026.04.06.19]: https://github.com/RMCampos/tasknote/compare/app-v2026.03.17.17...app-v2026.04.06.19
[app-v2026.03.17.17]: https://github.com/RMCampos/tasknote/compare/app-v2026.03.16.16...app-v2026.03.17.17
[app-v2026.03.16.16]: https://github.com/RMCampos/tasknote/compare/app-v2026.02.28.15...app-v2026.03.16.16
[app-v2026.02.28.15]: https://github.com/RMCampos/tasknote/compare/app-v2026.02.27.13...app-v2026.02.28.15
[app-v2026.02.27.13]: https://github.com/RMCampos/tasknote/compare/app-v2026.02.05.5...app-v2026.02.27.13
[app-v2026.02.05.5]: https://github.com/RMCampos/tasknote/compare/app-v2026.01.18.4...app-v2026.02.05.5
[app-v2026.01.18.4]: https://github.com/RMCampos/tasknote/compare/app-v2026.01.14.3...app-v2026.01.18.4
[app-v2026.01.14.3]: https://github.com/RMCampos/tasknote/compare/app-v2025.12.15.1...app-v2026.01.14.3
[app-v2025.12.15.1]: https://github.com/RMCampos/tasknote/releases/tag/app-v2025.12.15.1
+10 -4
View File
@@ -9,7 +9,7 @@ If you want to contribute, please create a fork and a Merge Request. Take a look
## Steps to Contribute
1. Fork the Project
2. Clone it on your local (`git clone https://github.com/ricardo-campos-org/react-typescript-todolist`)
2. Clone it on your local (`git clone https://lightroasted.vps-kinghost.net/rmcampos/tasknote.git`)
3. Develop your amazing feature/changes
4. Make sure your name is set (`git config user.name 'YOUR NAME'; git config user.email 'YOUR EMAIL'`)
5. Commit your changes (`git commit -m 'Add some amazing feature'`)
@@ -24,19 +24,25 @@ The easiest way of having the app up and running is using [Docker](https://www.d
1. Start the database engine (PostgreSQL)
```sh
bash tools/run-docker-db.sh
task dev-run-db
```
2. Start the back-end engine (Java & Spring Boot)
```sh
bash tools/run-docker-server.sh
task dev-run-api
```
3. Start the app server
```sh
bash tools/run-docker-client.sh
task dev-run-web
```
> Remember to follow up logs with 'docker ps' and 'docker logs -f <name>'
Or start all services at once with Docker Compose:
```sh
docker compose -f docker-compose.dev.yml up -d
```
If everything went well, you can head to [http://localhost:5000](http://localhost:5000) and create your user.
## 🦾 Automation
+31 -123
View File
@@ -1,10 +1,9 @@
# TaskNote
[![License: GPL v3](https://img.shields.io/badge/License-GPLv3-blue.svg)](https://www.gnu.org/licenses/gpl-3.0)
[![React App CI](https://github.com/RMCampos/tasknote/actions/workflows/client-ci.yml/badge.svg)](https://github.com/RMCampos/tasknote/actions/workflows/client-ci.yml)
[![Server API CI](https://github.com/RMCampos/tasknote/actions/workflows/server-ci.yml/badge.svg)](https://github.com/RMCampos/tasknote/actions/workflows/server-ci.yml)
[![Build and Push App Docker Image](https://github.com/RMCampos/tasknote/actions/workflows/main-client.yml/badge.svg)](https://github.com/RMCampos/tasknote/actions/workflows/main-client.yml)
[![Build and Push API Docker Image](https://github.com/RMCampos/tasknote/actions/workflows/main-server.yml/badge.svg)](https://github.com/RMCampos/tasknote/actions/workflows/main-server.yml)
[![Frontend CI](https://lightroasted.vps-kinghost.net/rmcampos/tasknote/actions/workflows/ci-main-frontend.yml/badge.svg)](https://lightroasted.vps-kinghost.net/rmcampos/tasknote/actions/?workflow=ci-main-frontend.yml)
[![Backend CI](https://lightroasted.vps-kinghost.net/rmcampos/tasknote/actions/workflows/ci-main-backend.yml/badge.svg)](https://lightroasted.vps-kinghost.net/rmcampos/tasknote/actions/?workflow=ci-main-backend.yml)
[![Deploy](https://lightroasted.vps-kinghost.net/rmcampos/tasknote/actions/workflows/cd-main.yml/badge.svg)](https://lightroasted.vps-kinghost.net/rmcampos/tasknote/actions/?workflow=cd-main.yml)
## 📋 Table of Contents
@@ -102,113 +101,50 @@ tasknote/
## 🚀 Getting Started
### Prerequisites
- **Docker & Docker Compose** (recommended for easy setup)
- **Node.js 20+** and **npm** (for frontend development)
- **Java 25+** and **Maven 3.6+** (for backend development)
- **PostgreSQL 15+** (if running without Docker)
- [Docker](https://docs.docker.com/engine/install/)
- [Docker Compose](https://docs.docker.com/compose/install/)
- [Task](https://taskfile.dev) (`brew install go-task` / `npm install -g @go-task/cli`)
- [Doppler CLI](https://docs.doppler.com/docs/install-cli) (`brew install dopplerhq/cli/doppler`)
### Quick Start with Docker
1. **Clone the repository**
```bash
git clone https://github.com/rmcampos/tasknote.git
cd tasknote
```
### Setup
2. **Start the database**
```bash
bash tools/run-docker-db.sh
```
3. **Start the backend server**
```bash
bash tools/run-docker-server.sh
```
4. **Start the frontend application**
```bash
bash tools/run-docker-client.sh
```
5. **Access the application**
- Frontend: http://localhost:5000
## 🛠️ Development
### Frontend Development
```bash
cd client
npm install # Install dependencies
npm start # Start development server (port 5000)
npm run build # Build for production
npm run preview # Preview production build
npm run lint # Run ESLint
npm run lint:fix # Fix ESLint issues
# 1. Authenticate with Doppler and link the project
doppler login
doppler setup # uses doppler.yaml to link to the shell-whats project
```
### Backend Development
### Running locally
```bash
cd server
./mvnw spring-boot:run # Start development server
./mvnw clean compile # Compile sources
./mvnw spring-boot:build-image # Build Docker image
./mvnw clean verify -Pnative # Build GraalVM native image
task dev-run
```
### Quality Checks
Run quality checks before submitting changes:
This exports the public vars from the `dev_tokens` Doppler config and starts the server in watch mode with secrets injected from `dev_secrets`. No `.env` file needed.
## Building the Docker images
```bash
bash tools/check-frontend.sh # Frontend linting, testing, coverage
bash tools/check-backend.sh # Backend compilation, tests, checkstyle
# Build the backend
task docker-build-api
# Build the frontend
task docker-build-web
```
## 🧪 Testing
## 🧪 Testing & Checks
### Frontend Testing
- **Framework**: Vitest with React Testing Library
- **Coverage**: Comprehensive test coverage with reports in `client/coverage/`
- **Commands**:
```bash
npm test # Run tests in watch mode
npm run test:coverage # Generate coverage report
```
```bash
./tools/check-frontend.sh
```
### Backend Testing
- **Unit Tests**: Fast, isolated tests with mocked dependencies
- **Integration Tests**: Full application context with test database
- **Coverage**: JaCoCo reporting with 75% minimum requirement
- **Commands**:
```bash
./mvnw test # Unit tests only
./mvnw clean verify -Ptests # All tests with coverage
```
## 📦 Deployment
### Production Deployment
The application supports multiple deployment strategies:
1. **Docker Containers** (recommended)
```bash
docker-compose -f docker-compose.prod.yml up -d
```
2. **Traditional JAR Deployment**
```bash
cd server && ./mvnw clean package
java -jar target/tasknote-api.jar
```
3. **GraalVM Native Image** (for optimal performance)
```bash
cd server && ./mvnw clean verify -Pnative
./target/tasknote-api
```
### Environment Configuration
- Database connection via environment variables
- JWT secret configuration for production
- Email service configuration for notifications
- CORS settings for frontend domain
```bash
./tools/check-backend.sh
```
## 🤝 Contributing
@@ -250,34 +186,6 @@ We welcome contributions from the community! This project follows the **Fork & M
For detailed setup instructions and development workflows, see [CONTRIBUTING.md](CONTRIBUTING.md).
## 👨‍💻 Developer
**Ricardo Campos** - Full-Stack Developer & Project Maintainer
- **GitHub**: [@RMCampos](https://github.com/RMCampos)
- **Twitter/X**: [@RMCamposs](https://x.com/RMCamposs)
- **LinkedIn**: [Ricardo Campos](https://www.linkedin.com/in/ricardompcampos/)
### About the Developer
Ricardo is a passionate full-stack developer with expertise in modern web technologies, cloud architecture, and agile development practices. This project showcases his skills in:
- **Frontend Development**: React, TypeScript, modern CSS, responsive design
- **Backend Development**: Java, Spring Boot, RESTful APIs, microservices
- **DevOps & Infrastructure**: Docker, CI/CD, cloud deployment, monitoring
- **Software Quality**: Testing strategies, code coverage, static analysis
- **Open Source**: Community engagement, documentation, maintainership
The TaskNote project represents a commitment to clean code, comprehensive testing, and user-centered design principles.
## 📞 Contact
For questions, suggestions, or collaboration opportunities:
- **Email**: Contact via GitHub issues or discussions
- **Twitter/X**: [@RMCamposs](https://x.com/RMCamposs) for quick questions
- **GitHub Issues**: [Create an issue](https://github.com/rmcampos/tasknote/issues) for bugs or feature requests
- **GitHub Discussions**: [Join discussions](https://github.com/rmcampos/tasknote/discussions) for general questions
## 📄 License
This project is licensed under the **GNU General Public License v3.0** - see the [LICENSE](LICENSE) file for details.
+2 -5
View File
@@ -2,17 +2,14 @@
version: '3'
vars:
GREETING: Hello, World!
tasks:
docker-build-web:
desc: Build the tasknote-web prod-ready docker image, tagging it as candidate
cmd: docker build --no-cache --build-arg VITE_BUILD="v999-$(date '+%Y-%m-%d-%H%M%S')" --build-arg SOURCE_PR="v999-123456789-$(date '+%Y-%m-%d-%H%M%S')" -t ghcr.io/rmcampos/tasknote/app:latest ./client
cmd: docker build --no-cache --build-arg VITE_BUILD="v999-$(date '+%Y-%m-%d-%H%M%S')" --build-arg SOURCE_PR="v999-123456789-$(date '+%Y-%m-%d-%H%M%S')" -t rmcampos/tasknote-app:latest ./client
docker-build-api:
desc: Build the tasknote-api prod-ready docker image, tagging it as candidate
cmd: cd server && mvn -Pnative -DskipTests spring-boot:build-image -Dspring-boot.build-image.imageName=ghcr.io/rmcampos/tasknote/api:latest -Dspring-boot.build-image.builder=paketobuildpacks/builder-jammy-tiny:latest
cmd: cd server && mvn -Pnative -DskipTests spring-boot:build-image -Dspring-boot.build-image.imageName=rmcampos/tasknote-api:latest -Dspring-boot.build-image.builder=paketobuildpacks/builder-jammy-tiny:0.0.505
prod-up-web:
desc: Speed up the tasknote-web prod-like image, building it if required
+30
View File
@@ -0,0 +1,30 @@
# Architecture Principles
## Core Principles
- Keep solutions simple and focused on the problem at hand.
- Prefer readability and maintainability over cleverness.
- Small functions and modules that do one thing well.
- Use clear and descriptive names for variables, functions, and classes.
- Avoid premature optimization; optimize only when necessary.
- Avoid over-engineering; build only what is needed for the current problem.
- Clear boundaries between components to promote separation of concerns.
- Prefer to maintainability over perfection
## Delivery Principles
Prefer:
- small specs
- iterative delivery
- vertical slices of functionality
- simple APIs
- clear documentation
- understandable code
Avoid:
- giant upfront architecture
- premature optimization
- speculative abstractions
- over-engineering
- unnecessary complexity
- unnecessary microservices
+17
View File
@@ -0,0 +1,17 @@
# Domain Glossary
This glossary provides definitions for key terms and concepts related to the domain of artificial intelligence (AI). It serves as a reference for understanding the terminology used in AI research, development, and applications.
Use this file to maintain shared terminology.
Consistent terminology significantly improves:
- communication
- AI consistency
- implement quality
## General Terms
- **User**: Final application consumer, typically a human, who interacts with the AI system.
- **Developer**: Individual or team responsible for designing, building, and maintaining the system.
- **Stakeholder**: Any party with an interest in the system, including users, developers, business owners, and regulators.
- **Spec**: Incremental implementation plan for a specific feature or functionality, often documented as a set of requirements and design decisions.
+31
View File
@@ -0,0 +1,31 @@
# Project constraints
## Backend
Always:
- Use the `SERIAL` type for `id` columns when creating migration SQL files;
- Define a table PRIMARY KEY in the end of the table columns using the table name plus `_pk` and the needed columns;
- Import needed packages one by one;
- Create JavaDoc for public classes and methods;
- Run `./mvnw -Ptests test` to check possible check style issues or failing tests;
- Fix existing test cases, if needed;
- Update docker-compose.yml and github workflow files if a new variable or application.yml has changed;
Never:
- Use `ON DELETE CASCADE` in SQL scripts or migration files;
- Use star to import packages;
## Frontend
Always:
- Type variables according with their data type;
- Create helper functions in the helper directory;
- Update Dockerfile, docker-compose.yml and github workflow files if a new environment variable was added;
Never:
- Use the `any` type;
- Add new dependencies for small helpers or util functions, prefer implementing them;
+44
View File
@@ -0,0 +1,44 @@
# Project Vision
## Project Name
TaskNote
## Problem Statement
In today's fast-paced world, individuals and teams often struggle to keep track of their tasks, deadlines, and project
progress. Traditional task management tools can be overwhelming and lack the flexibility needed to adapt to different
workflows. This leads to decreased productivity, missed deadlines, and increased stress.
As for notes, people often take notes in various formats and locations, such as notebooks, sticky notes, or digital
documents. This scattered approach can make it difficult to find and organize information, leading to inefficiency and
frustration.
## Users
The primary users of TaskNote are:
- **Individuals**: People who want to manage their personal tasks and notes efficiently.
- **Casual**: Users who need a simple and intuitive tool for managing their tasks and notes without the complexity of traditional task management software.
- **Developers**: Individuals who want to manage their coding tasks and notes in a streamlined manner.
## Core Features
- **Authentication**: Allow users to create accounts and securely log in to access their tasks and notes.
- **Task Management**: Create, organize, and prioritize tasks with deadlines and reminders.
- **Note-Taking**: Capture and organize notes in a flexible format, allowing for easy retrieval and organization.
- **Collaboration**: Enable users to share notes with others for better collaboration and teamwork.
- **Search and Organization**: Provide powerful search capabilities and organizational tools to help users find and manage their tasks and notes efficiently.
- **Multi-Language Support**: Support multiple languages to cater to a global user base.
## General Constraints
- **GraalVM Compatibility**: The application must be compatible with GraalVM to leverage its performance benefits and support for multiple languages.
- **Mobile-first UI**: The user interface should be designed with a mobile-first approach to ensure a seamless experience across devices.
## Success Criteria
- Users can manage their tasks and notes efficiently, leading to increased productivity and reduced stress.
- Positive user feedback and high engagement with the application.
- Specs remain under control, with a clear roadmap for future features and improvements.
- Codebase remains maintainable and scalable, allowing for easy addition of new features and improvements over time.
+34
View File
@@ -0,0 +1,34 @@
# Tech Stack
## Frontend
- **React**: A popular JavaScript library for building user interfaces, particularly single-page applications.
- **TypeScript**: A superset of JavaScript that adds static typing, improving code quality and maintainability.
- **Bootstrap**: A widely used CSS framework for building responsive and mobile-first websites.
- **Fetch API**: A modern interface for making HTTP requests from the browser, used for communicating with the backend.
- **Vite**: A build tool that provides a fast development environment and optimized production builds for modern web applications.
## Backend
- **Java**: A widely used programming language known for its portability, performance, and extensive ecosystem.
- **Spring Boot**: A framework for building production-ready applications with Java, providing features like dependency injection, security, and data access.
- **Spring Security**: A framework for securing Java applications, providing authentication and authorization features to protect resources and manage user access.
- **GraalVM**: A high-performance runtime that supports multiple programming languages, allowing for efficient execution of Java applications and interoperability with other languages.
- **JPA (Java Persistence API)**: A specification for managing relational data in Java applications, providing a standard way to interact with databases using object-relational mapping (ORM).
## Database
- **PostgreSQL**: A powerful, open-source relational database management system known for its reliability and performance.
## Infrastructure
- **Docker**: A platform for developing, shipping, and running applications in containers, providing consistency across different environments.
- **Kubernetes**: An open-source container orchestration system for automating the deployment, scaling, and management of containerized applications.
- **Terraform**: An infrastructure as code tool that allows for the provisioning and management of cloud resources in a declarative manner.
- **VPS**: Virtual Private Server, a virtualized server that provides dedicated resources and control over the hosting environment for deploying applications.
## AI Tools
- **Crusher**: An AI tool for code generation and assistance, helping developers write code more efficiently and accurately.
- **GitHub Copilot**: An AI-powered code completion tool that provides suggestions and helps developers write code faster by leveraging machine learning models trained on a vast amount of code from GitHub repositories.
- **Gemini**: An AI tool for natural language processing and understanding, enabling developers to build applications that can process and generate human-like text.
- **Groq**: An AI tool for optimizing and accelerating machine learning models, providing efficient execution and improved performance for AI applications.
@@ -0,0 +1,50 @@
# Feedback Contract
This contract is used for:
- reviews
- implementation feedback
- architecture feedback
- iterative improvement
---
## 1. What Worked Well
Highlight:
- Good implementation choices
- Maintainability improvements
- Strong architectural decisions
## 2. Areas For Improvement
Identify:
- Unclear implementation
- Maintainability concerns
- Architectural inconsistencies
## 3. Risks
Surface:
- Technical debt
- Scalability concerns
- Workflow fragility
## 4. Recommendations
Provide:
- Practical improvements
- Simplification opportunities
- Next iteration suggestions
## Philosophy
Feedback should:
- Improve clarity
- Support maintainability
- Remain constructive
- Avoid unnecessary perfectionism
@@ -0,0 +1,68 @@
# Handoff Contract
This contract is used whenever work moves between roles.
Example:
- PM → Architect
- Architect → Developer
- Developer → Reviewer
---
## 1. Summary
Concise explanation of:
- Completed work
- Important decisions
- Implementation status
## 2. Completed Work
Explicitly list:
- Implemented features
- Completed tasks
- Validated decisions
## 3. Pending Work
List:
- Unfinished work
- Blockers
- Remaining implementation
## 4. Important Decisions
Document:
- Tradeoffs
- Architectural decisions
- Assumptions
- Simplifications
## 5. Risks
Identify:
- Technical concerns
- Unclear requirements
- Scalability limitations
- Possible regressions
## 6. Questions
List:
- Unresolved ambiguity
- Missing requirements
- Pending decisions
## 7. Recommended Next Step
Clearly explain:
- What should happen next
- Which role should act next
- What should be prioritized
@@ -0,0 +1,58 @@
# Question Contract
## Description
This contract is used when:
- Requirements are not clear
- Assumptions must be validated
- More information is needed to proceed
- Implementation direction is uncertain
## 1. Context
Explain:
- The background of the problem or task
- Why it is important to clarify the requirements or assumptions
- Related specs or documentation
- Implementation area
## 2. Questions
Clearly state:
- The specific questions that need to be answered
- What is unclear
- What assumptions are being made
- What decision needs to be made
## 3. Why It Matters
Explain:
- The potential impact of not clarifying the questions
- How it affects the implementation
- Architectural implications
- Performance implications
- User experience implications
- Workflow consequences
## 4. Suggested Options
Provide:
- Possible answers to the questions
- Pros and cons of each option
- Any relevant data or evidence to support the options
## 5. Philosophy
Good questions reduce:
- Hallucinations
- Unnecessary work
- Rework
- Implementation drift
- Misalignment with requirements
- Hidden assumptions
+56
View File
@@ -0,0 +1,56 @@
# Context Policy
AI systems perform significantly better when context is:
- structured
- concise
- consistent
- relevant
## Core Rules
### 1. Read Context Before Acting
Before:
- implementing features
- generating specs
- reviewing code
- proposing architecture
Always review:
- project vision
- architecture principles
- glossary
- relevant specs
---
### 2. Respect Shared Terminology
Use terminology consistently.
The glossary exists to:
- reduce ambiguity
- improve communication
- improve AI consistency
---
### 3. Avoid Context Overload
More context is NOT always better.
Prefer:
- focused context
- relevant files
- small scoped discussions
---
### 4. Surface Missing Context
If important context is missing:
- ask questions
- document assumptions
- identify ambiguity
Avoid silently inventing requirements.
+39
View File
@@ -0,0 +1,39 @@
# Handoff Rules
Every handoff between roles should include:
- completed work
- pending work
- risks
- important decisions
- open questions
- recommended next step
---
## Goals
Handoffs exist to:
- preserve continuity
- reduce ambiguity
- improve collaboration
- support incremental delivery
---
## Good Handoffs
Good handoffs are:
- concise
- explicit
- actionable
- context-aware
Avoid vague summaries.
---
## Important
Hidden assumptions are one of the biggest causes
of AI inconsistency and implementation drift.
+40
View File
@@ -0,0 +1,40 @@
# Orchestrator
The orchestrator coordinates:
- context
- specs
- architecture
- implementation
- review workflows
## Primary Goals
- maintain incremental progress
- reduce ambiguity
- preserve consistency
- support maintainability
---
## Orchestration Responsibilities
- identify next executable spec
- validate dependencies
- coordinate role transitions
- ensure contracts are respected
- maintain delivery momentum
---
## Workflow Philosophy
Prefer:
- small focused steps
- explicit transitions
- structured handoffs
- iterative delivery
Avoid:
- giant implementation phases
- uncontrolled context growth
- hidden assumptions
+71
View File
@@ -0,0 +1,71 @@
# AI Workflow
This repository follows a lightweight AI-native engineering workflow.
```text
Context → Specs → Architecture → Implementation → Review → Iteration
```
---
# 1. Context Definition
Goal: create shared understanding.
Typical artifacts:
- Project vision
- Glossary
- Personas
- Architecture principles
- Tech stack
Context quality directly impacts AI output quality.
# 2. Spec Generation
Goal: break work into small incremental deliverables.
Good specs are:
- Small
- Focused
- Testable
- Independently understandable
# 3. Architecture Validation
Goal: ensure sustainable technical direction.
Architect responsibilities:
- Validate boundaries
- Identify risks
- Reduce complexity
- Support maintainability
# 4. Implementation
Goal: deliver working software incrementally.
Developer responsibilities:
- Implement clearly
- Respect architecture
- Preserve maintainability
# 5. Testing & Review
Goal: validate correctness and maintainability.
Focus on:
- Spec completion
- Workflow correctness
- Architectural consistency
# 6. Iteration
Goal: continuously improve:
- Specs
- Workflows
- Context
- Implementation
AI-native engineering is iterative by nature.
+53
View File
@@ -0,0 +1,53 @@
# Role: Architect
You are responsible for maintaining technical clarity,
system boundaries, and implementation simplicity.
## Primary Responsibilities
- Define system boundaries
- Validate architecture decisions
- Reduce unnecessary complexity
- Identify technical risks
- Support maintainability
- Guide incremental delivery
---
## Prioritize
- clarity
- maintainability
- simplicity
- developer experience
- incremental progress
---
## Avoid
- overengineering
- speculative abstractions
- premature optimization
- architecture astronautics
---
## Expected Outputs
- architecture notes
- API guidance
- data flow recommendations
- technical decisions
- risk analysis
---
## Collaboration
Work closely with:
- PM for requirement clarification
- Developers for implementation guidance
- Reviewers for consistency validation
Your role is guidance and structure, not implementation ownership.
+49
View File
@@ -0,0 +1,49 @@
# Role: Developer
You are responsible for implementing specs incrementally,
clearly, and maintainably.
## Primary Responsibilities
- Implement specs
- Respect architecture boundaries
- Keep code maintainable
- Surface blockers early
- Preserve readability
---
## Engineering Philosophy
Prefer:
- explicit logic
- composable systems
- simple implementations
- incremental delivery
Avoid:
- unnecessary abstractions
- giant refactors
- hidden side effects
- premature optimization
---
## Before Implementation
Always review:
- project context
- architecture principles
- current spec
- related workflows
---
## Expected Outputs
- implementation code
- tests
- documentation
- migrations
- APIs
- technical notes
+40
View File
@@ -0,0 +1,40 @@
# Role: Product Manager
You are responsible for:
- reducing ambiguity
- clarifying requirements
- prioritizing delivery
- maintaining user focus
## Responsibilities
- refine specs
- clarify user value
- define acceptance criteria
- reduce scope ambiguity
- support incremental delivery
---
## Product Philosophy
Prefer:
- small focused specs
- clear workflows
- simple user journeys
- fast iteration
Avoid:
- oversized features
- vague requirements
- unnecessary complexity
---
## Success Criteria
A good spec should be:
- understandable
- implementable
- testable
- incremental
+36
View File
@@ -0,0 +1,36 @@
# Role: Reviewer
You are responsible for validating:
- quality
- maintainability
- spec completion
- architectural consistency
## Responsibilities
- Verify acceptance criteria
- Validate readability
- Identify technical debt
- Surface risks
- Recommend improvements
---
## Review Philosophy
Focus on:
- practical maintainability
- implementation clarity
- architecture consistency
Avoid:
- perfectionism
- unnecessary nitpicks
- overcomplicated suggestions
---
## Important
The goal is sustainable delivery,
not theoretical perfection.
+36
View File
@@ -0,0 +1,36 @@
# Role: Tester
You are responsible for validating:
- expected behavior
- acceptance criteria
- workflow correctness
- critical edge cases
## Responsibilities
- validate specs
- test workflows
- identify regressions
- surface inconsistencies
---
## Testing Philosophy
Focus on:
- critical workflows
- realistic scenarios
- maintainability
- clarity
Avoid:
- unnecessary exhaustive testing
- unrealistic edge cases
- overcomplicated testing strategies
---
## Important
The goal is confidence and reliability,
not perfect theoretical coverage.
+14
View File
@@ -0,0 +1,14 @@
# Skill: Create Handoff Contract
Good handoffs preserve:
- continuity
- implementation context
- architectural decisions
Include:
- summary
- completed work
- pending work
- risks
- questions
- recommended next step
+14
View File
@@ -0,0 +1,14 @@
# Skill: Review Code Quality
## Focus Areas
- readability
- maintainability
- consistency
- architectural alignment
## Avoid
- unnecessary nitpicks
- perfectionism
- speculative suggestions
+19
View File
@@ -0,0 +1,19 @@
# Skill: Write Spec
## Goal
Create small incremental implementation specs.
## Good Specs
Good specs:
- have clear goals
- define acceptance criteria
- remain focused
- avoid ambiguity
## Avoid
- giant specs
- vague requirements
- mixing unrelated concerns
+14
View File
@@ -0,0 +1,14 @@
# Skill: Write Tests
## Prioritize
- critical workflows
- expected behavior
- important edge cases
## Philosophy
Testing should improve:
- confidence
- reliability
- maintainability
+58
View File
@@ -0,0 +1,58 @@
# Spec: Support Multiple Tags for Tasks and Notes
## Goal
Enable users to associate multiple tags with both tasks and notes, enhancing organization and search capabilities.
---
## User Value
Users can categorize their tasks and notes more granularly, making it easier to find and filter information. This improves overall productivity and reduces the time spent searching for specific items.
---
## Requirements
- Users must be able to add multiple tags to a single task.
- Users must be able to add multiple tags to a single note.
- The system should support adding new tags and selecting existing tags.
- Display of multiple tags associated with tasks and notes in the UI.
- Backend API endpoints must be updated to support multiple tags for tasks and notes.
- Database schema must be updated to store multiple tags for tasks and notes.
---
## Acceptance Criteria
- [ ] When editing a task, a user can add more than one tag.
- [ ] When editing a note, a user can add more than one tag.
- [ ] All tags associated with a task are displayed when viewing the task.
- [ ] All tags associated with a note are displayed when viewing the note.
- [ ] Users can filter tasks by multiple tags.
- [ ] Users can filter notes by multiple tags.
- [ ] The API for tasks and notes allows for creation and update with multiple tags.
- [ ] The database correctly stores and retrieves multiple tags for tasks and notes.
---
## Dependencies
None.
---
## Risks
- **Data Migration**: Existing single-tag data will need to be migrated to the new multi-tag schema, potentially requiring a database migration script.
- **Performance Impact**: Storing and querying multiple tags might introduce performance overhead, especially for large datasets. This will need careful indexing and optimization.
- **UI Complexity**: Designing a user-friendly interface for managing multiple tags could add complexity to the frontend.
- **API backward compatibility**: Changes to the API might break existing clients if not handled carefully with versioning or clear migration paths.
---
## Notes
- Consider a many-to-many relationship between tasks/notes and tags in the database.
- Frontend tag input should allow for auto-completion of existing tags.
- The API should handle tag creation on the fly if a new tag is submitted.
@@ -0,0 +1,36 @@
# Spec 002: Markdown Formatting Toolbar for Notes
## Goal
Enhance the Note editing experience by adding a Markdown formatting toolbar to the note creation and editing interface. This provides a "rich text" editing capability while preserving the existing Markdown-based storage and rendering system.
## User Value
Users who are unfamiliar with Markdown syntax can easily format their notes (bold, italic, lists, etc.) using familiar UI controls. This reduces the cognitive load and makes the application more accessible to a broader audience without losing the power of Markdown for advanced users.
## Requirements
- **Toolbar Placement**: A horizontal toolbar should be placed immediately above the "Content" textarea in the Note creation/editing form.
- **Formatting Actions**: The toolbar must include buttons for the following actions:
- **Bold**: Wraps selection with `**`.
- **Italic**: Wraps selection with `_`.
- **Heading**: Prepends `### ` to the current line or selection.
- **Bullet List**: Prepends `- ` to the current line or selection.
- **Link**: Inserts a Markdown link template `[text](url)`.
- **Interaction Logic**:
- If text is selected, clicking a button should wrap/prefix the selection.
- If no text is selected, clicking a button should insert the Markdown symbols at the cursor position.
- The textarea should regain focus immediately after a toolbar button is clicked.
- **Styling**: The toolbar should use standard Bootstrap components (e.g., `ButtonGroup`) and icons (e.g., `react-bootstrap-icons`) to match the existing project aesthetic.
## Acceptance Criteria
- [ ] The toolbar is visible in the `NoteAdd` view for both adding a new note and editing an existing one.
- [ ] Clicking the **Bold** button wraps the selected text in the textarea with `**`.
- [ ] Clicking the **Italic** button wraps the selected text with `_`.
- [ ] Clicking the **Heading** button adds `### ` at the cursor or selection start.
- [ ] Clicking the **Bullet List** button adds `- ` at the start of the line.
- [ ] Clicking the **Link** button inserts `[](url)` or wraps selection as `[selection](url)`.
- [ ] The note can be saved successfully with the newly formatted content.
- [ ] The "Preview Markdown" modal correctly renders the formatted content.
## Risks
- **Cursor Management**: Maintaining or restoring cursor position/selection after formatting might be technically challenging in a standard HTML `textarea`.
- **Mobile UX**: A long toolbar might overflow on small screens, requiring careful responsive design (e.g., horizontal scrolling or wrapping).
- **Undo/Redo**: Standard browser undo/redo might behave unexpectedly if the textarea value is manipulated programmatically.
+33
View File
@@ -0,0 +1,33 @@
# Specs
Specs are the primary implementation units in this repository.
## Good Specs
Good specs are:
- small
- incremental
- independently understandable
- testable
- focused on one responsibility
---
## Recommended Structure
Each spec should contain:
- spec.md
- architecture.md
- tasks.md
- optional contracts/
---
## Recommended Size
Prefer:
- 3 to 8 specs maximum for dojo projects
Avoid:
- giant umbrella specs
- multi-week implementation specs
+43
View File
@@ -0,0 +1,43 @@
# Spec: <name>
## Goal
What are we building?
---
## User Value
Why does this matter?
---
## Requirements
- Requirement 1
- Requirement 2
---
## Acceptance Criteria
- [ ] Criteria 1
- [ ] Criteria 2
---
## Dependencies
List required previous specs.
---
## Risks
Identify possible implementation risks.
---
## Notes
Additional implementation guidance.
+16
View File
@@ -0,0 +1,16 @@
# Orchestration Prompt
Using the orchestrator workflow defined at `ai/orchestration/orchestrator.md`,
execute the first spec file, 001-add-multiple-tags.md.
Respect:
- architecture principles
- role responsibilities
- context policies
- handoff rules
Keep implementation:
- simple
- maintainable
- incremental
- production-like
+22
View File
@@ -0,0 +1,22 @@
# Spec for a feature prompt example
Based on the project context, defined at `ai/context/*.md` files, generate one small increment spec file for this
feature: <brief description of the feature>.
Requirements:
- small scope
- independently implementable
- clear acceptance criteria
- incremental delivery
- strictly follow all constraints in `ai/context/project_constraints.md` during implementation
The spec file should include:
- goal
- user value
- requirements
- acceptance criteria
- risks
Name the spec file as `000-short-descriptive-name.md` similar to git branch naming convention, starting with 001, 002,
003, and so on, and place it in the appropriate directory under `ai/specs/`.
+18
View File
@@ -0,0 +1,18 @@
# Spec Generation Prompt
Based on the project context,
generate 3 to 8 small incremental specs.
Requirements:
- small scope
- independently implementable
- clear acceptance criteria
- incremental delivery
- avoid overengineering
Each spec should include:
- goal
- user value
- requirements
- acceptance criteria
- risks
+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"
+2 -2
View File
@@ -14,7 +14,7 @@ RUN npm i --ignore-scripts --no-update-notifier --omit=dev && \
# Deploy container
# Caddy serves static files
FROM caddy:2.10.2-alpine
FROM caddy:2.11.4-alpine
RUN apk add --no-cache ca-certificates curl
# Receive build number as argument, retain as environment variable
@@ -29,7 +29,7 @@ LABEL org.opencontainers.image.authors="Ricardo Campos <ricardompcampos@gmail.co
org.opencontainers.image.title="TaskNoteApp client" \
org.opencontainers.image.description="React Web app application" \
org.opencontainers.image.version="${SOURCE_PR}" \
org.opencontainers.image.source="https://github.com/ricardo-campos-org/react-typescript-todolist"
org.opencontainers.image.source="https://lightroasted.vps-kinghost.net/rmcampos/tasknote"
# Copy files and run formatting
COPY --from=build /app/dist/ /app/dist
+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');
});
});
});
+204
View File
@@ -0,0 +1,204 @@
/**
* 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',
tags: ['personal'],
urls: []
},
{
id: 2,
description: 'Write report',
done: false,
highPriority: false,
dueDate: '',
dueDateFmt: '',
lastUpdate: '2026-05-02',
tags: ['work'],
urls: []
}
];
const mockNotes = [
{
id: 1,
title: 'Meeting notes',
description: 'Discuss quarterly goals',
url: null,
tags: ['work'],
lastUpdate: '2026-05-01',
shared: false,
shareToken: null
},
{
id: 2,
title: 'Recipe',
description: 'Pasta carbonara recipe',
url: null,
tags: ['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\/users\/me/, {
statusCode: 200,
body: mockUser
}).as('getCurrentUser');
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');
});
});
});
+273
View File
@@ -0,0 +1,273 @@
/**
* 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,
tags: ['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\/users\/me/, {
statusCode: 200,
body: mockUser
}).as('getCurrentUser');
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,
tags: [],
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');
});
});
});
+231
View File
@@ -0,0 +1,231 @@
/**
* 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',
tags: ['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\/users\/me/, {
statusCode: 200,
body: mockUser
}).as('getCurrentUser');
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: '',
tags: [],
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',
+3604 -2252
View File
File diff suppressed because it is too large Load Diff
+33 -30
View File
@@ -9,29 +9,28 @@
"node",
"nestjs"
],
"repository": "https://github.com/ricardo-campos-org/react-typescript-todolist",
"repository": "https://lightroasted.vps-kinghost.net/rmcampos/tasknote",
"private": true,
"dependencies": {
"@popperjs/core": "^2.11.8",
"@types/node": "^25.6.0",
"@types/node": "^26.1.1",
"@types/react-dom": "^19.2.3",
"@vitejs/plugin-react": "^5.2.0",
"@vitejs/plugin-react": "^6.0.4",
"bootstrap": "^5.3.8",
"dompurify": "^3.4.1",
"i18next": "^25.10.10",
"react": "^19.2.5",
"dompurify": "^3.4.12",
"i18next": "^26.3.6",
"react": "^19.2.8",
"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.8",
"react-i18next": "^17.0.10",
"react-markdown": "^10.1.0",
"react-router": "^7.14.2",
"react-router": "^8.3.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.1.5"
},
"scripts": {
"start": "vite --host",
@@ -41,7 +40,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,30 +64,31 @@
]
},
"devDependencies": {
"@eslint/compat": "^2.0.5",
"@eslint/eslintrc": "^3.3.5",
"@eslint/js": "^9.39.4",
"@eslint/compat": "^2.1.0",
"@eslint/eslintrc": "^3.3.6",
"@eslint/js": "^9.39.5",
"@stylistic/eslint-plugin": "^5.10.0",
"@testing-library/jest-dom": "^6.9.1",
"@testing-library/jest-dom": "^6.10.0",
"@testing-library/react": "^16.3.2",
"@testing-library/user-event": "^14.6.1",
"@types/jest": "^30.0.0",
"@types/react": "^19.2.14",
"@types/react": "^19.2.17",
"@types/react-router-bootstrap": "^0.26.8",
"@vitest/coverage-v8": "^4.1.5",
"eslint": "^9.39.4",
"@vitest/coverage-v8": "^4.1.10",
"cypress": "^15.19.0",
"eslint": "^9.39.5",
"eslint-config-prettier": "^10.1.8",
"eslint-plugin-import": "^2.32.0",
"eslint-plugin-jsdoc": "^62.9.0",
"eslint-plugin-n": "^17.24.0",
"eslint-plugin-promise": "^7.2.1",
"eslint-plugin-import-x": "^4.17.1",
"eslint-plugin-jsdoc": "^63.2.0",
"eslint-plugin-n": "^18.2.2",
"eslint-plugin-promise": "^7.3.0",
"eslint-plugin-react": "^7.37.5",
"globals": "^17.5.0",
"jsdom": "^29.0.2",
"prettier": "^3.8.3",
"sass": "^1.99.0",
"globals": "^17.7.0",
"jsdom": "^29.1.1",
"prettier": "^3.9.6",
"sass": "^1.101.3",
"source-map-support": "^0.5.21",
"typescript-eslint": "^8.59.0",
"vitest": "^4.1.5"
"typescript-eslint": "^8.65.0",
"vitest": "^4.1.10"
}
}
-21
View File
@@ -1,21 +0,0 @@
# Must be unique in a given SonarQube instance
sonar.projectKey=ricardo-campos-org_react-typescript-todolist_client
sonar.organization=ricardo-campos-org
# This is the name and version displayed in the SonarQube UI.
# Was mandatory prior to SonarQube 6.1.
sonar.projectName=tasknote-webapp
#sonar.projectVersion=1.0
# Path is relative to the sonar-project.properties file.
# Replace "\" by "/" on Windows.
# This property is optional if sonar.modules is set.
sonar.javascript.lcov.reportPaths=coverage/lcov.info
sonar.typescript.tsconfigPaths=tsconfig.json
sonar.sources=src/
sonar.exclusions=src/__test__/**
sonar.tests=src/__test__/
sonar.verbose=false
# Encoding of the source code. Default is default system encoding
sonar.sourceEncoding=UTF-8
+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,6 +1,6 @@
import React from 'react';
import { describe, vi, it, expect, beforeEach } from 'vitest';
import { render, screen, fireEvent, act, waitFor } from '@testing-library/react';
import { describe, vi, it, expect, beforeEach, afterEach } from 'vitest';
import { render, screen, fireEvent, act, waitFor, cleanup } from '@testing-library/react';
import ModalMarkdown from '../../components/ModalMarkdown';
describe('ModalMarkdown Component', () => {
@@ -12,13 +12,19 @@ describe('ModalMarkdown Component', () => {
};
beforeEach(() => {
Object.assign(navigator, {
vi.stubGlobal('navigator', {
clipboard: {
writeText: vi.fn().mockResolvedValue(undefined),
},
});
});
afterEach(() => {
vi.useRealTimers();
vi.unstubAllGlobals();
cleanup();
});
it('should render the modal with the correct title and markdown text', () => {
render(<ModalMarkdown {...props} />);
@@ -84,15 +90,29 @@ describe('ModalMarkdown Component', () => {
});
it('should show "Copied!" text after Copy button is clicked', async () => {
vi.useFakeTimers();
render(<ModalMarkdown {...props} />);
const copyButton = screen.getByTestId('modal-copy-button');
await act(async () => {
fireEvent.click(screen.getByTestId('modal-copy-button'));
fireEvent.click(copyButton);
});
await waitFor(() => {
expect(screen.getByTestId('modal-copy-button').textContent).toBe('Copied!');
// Resolve microtasks for the clipboard promise
await act(async () => {
await vi.runAllTicks();
});
expect(screen.getByTestId('modal-copy-button').textContent).toBe('Copied!');
// Advance timers to see it go back to "Copy"
await act(async () => {
vi.advanceTimersByTime(2000);
});
expect(screen.getByTestId('modal-copy-button').textContent).toBe('Copy');
vi.useRealTimers();
});
it('should reset source view state when modal is closed', () => {
@@ -5,14 +5,14 @@ import TaskTag from '../../components/TaskTag';
describe('TaskTag Component', () => {
it('should render the TaskTag component with provided tag and last update', () => {
const { getByText } = render(<TaskTag tag="important" lastUpdate="2025-02-20" />);
expect(getByText('#important')).toBeDefined();
const { getByText } = render(<TaskTag tags={['important']} lastUpdate="2025-02-20" taskOrNote="task" />);
expect(getByText('#important task')).toBeDefined();
expect(getByText('2025-02-20')).toBeDefined();
});
it('should render the TaskTag component with default tag when no tag is provided', () => {
const { getByText } = render(<TaskTag lastUpdate="2025-02-20" />);
expect(getByText('#untagged')).toBeDefined();
const { getByText } = render(<TaskTag lastUpdate="2025-02-20" taskOrNote="task" />);
expect(getByText('#untagged task')).toBeDefined();
expect(getByText('2025-02-20')).toBeDefined();
});
});
@@ -4,22 +4,22 @@ import { describe, expect, it } from 'vitest';
import TaskTimeLeft from '../../components/TaskTimeLeft';
describe('TaskTimeLeft Component', () => {
const renderComponent = (done: boolean) => {
const renderComponent = (completed: boolean) => {
return render(
<TaskTimeLeft
text="2 days left"
done={done}
completed={completed}
tooltip="2025-03-20"
/>
);
};
it('should render the TaskTimeLeft component with text when task is not done', () => {
it('should render the TaskTimeLeft component with text when task is not completed', () => {
const { getByText } = renderComponent(false);
expect(getByText('2 days left')).toBeDefined();
});
it('should not render the TaskTimeLeft component when task is done', () => {
it('should not render the TaskTimeLeft component when task is completed', () => {
const { queryByText } = renderComponent(true);
expect(queryByText('2 days left')).toBeNull();
});
@@ -4,32 +4,32 @@ import { describe, expect, it } from 'vitest';
import TaskTitle from '../../components/TaskTitle';
describe('TaskTitle Component', () => {
it('should render the TaskTitle component with high priority and done', () => {
const { getByText, container } = render(<TaskTitle title="Test Task" highPriority={true} done={true} />);
it('should render the TaskTitle component with high priority and completed', () => {
const { getByText, container } = render(<TaskTitle title="Test Task" highPriority={true} completed={true} />);
expect(container.querySelector('.task-title-icon')).toBeDefined();
expect(container.querySelector('.text-strike')).toBeDefined();
expect(getByText('Test Task')).toBeDefined();
expect(container.querySelector('svg')).toBeDefined(); // Check2Circle icon
});
it('should render the TaskTitle component with high priority and not done', () => {
const { getByText, container } = render(<TaskTitle title="Test Task" highPriority={true} done={false} />);
it('should render the TaskTitle component with high priority and not completed', () => {
const { getByText, container } = render(<TaskTitle title="Test Task" highPriority={true} completed={false} />);
expect(container.querySelector('.task-title-icon')).toBeDefined();
expect(container.querySelector('.text-strike')).toBeNull();
expect(getByText('Test Task')).toBeDefined();
expect(container.querySelector('svg')).toBeDefined(); // Bell icon
});
it('should render the TaskTitle component with not high priority and done', () => {
const { getByText, container } = render(<TaskTitle title="Test Task" highPriority={false} done={true} />);
it('should render the TaskTitle component with not high priority and completed', () => {
const { getByText, container } = render(<TaskTitle title="Test Task" highPriority={false} completed={true} />);
expect(container.querySelector('.task-title-icon')).toBeDefined();
expect(container.querySelector('.text-strike')).toBeDefined();
expect(getByText('Test Task')).toBeDefined();
expect(container.querySelector('svg')).toBeDefined(); // Check2Circle icon
});
it('should render the TaskTitle component with not high priority and not done', () => {
const { getByText, container } = render(<TaskTitle title="Test Task" highPriority={false} done={false} />);
it('should render the TaskTitle component with not high priority and not completed', () => {
const { getByText, container } = render(<TaskTitle title="Test Task" highPriority={false} completed={false} />);
expect(container.querySelector('.task-title-icon')).toBeDefined();
expect(container.querySelector('.text-strike')).toBeNull();
expect(getByText('Test Task')).toBeDefined();
@@ -1,12 +1,13 @@
// 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';
import api from '../../api-service/api';
import { API_TOKEN, USER_DATA } from '../../app-constants/app-constants';
import ApiConfig from '../../api-service/apiConfig';
// Mock the API service methods.
vi.mock('../../api-service/api');
@@ -15,6 +16,7 @@ vi.mock('../../api-service/api');
const ConsumerComponent: React.FC = () => {
const {
signed,
loading,
user,
signIn,
register,
@@ -26,6 +28,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 +92,70 @@ 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 fakeTokenResponse = {
token: 'refresh-token',
};
const fakeCurrentUser = {
userId: '789',
name: 'Refreshed User',
email: 'refreshed@example.com',
admin: false,
createdAt: new Date().toISOString(),
gravatarImageUrl: 'http://dummyimage.com',
lang: 'en',
lastLogin: new Date().toISOString()
};
vi.spyOn(api, 'getJSON').mockImplementation(async(url: string) => {
if (url === ApiConfig.refreshTokenUrl) {
return fakeTokenResponse;
}
if (url === ApiConfig.currentUserUrl) {
return fakeCurrentUser;
}
return undefined;
});
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');
expect(getByTestId('user').textContent).toBe('Refreshed User');
});
it('should sign in a user successfully', async () => {
@@ -120,9 +178,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 +225,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 +250,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();
@@ -217,17 +265,29 @@ describe('AuthProvider', () => {
});
it('should call fetchCurrentSession when checking current auth user', async () => {
const fakeResponse = {
const fakeTokenResponse = {
token: 'refresh-token',
};
const fakeCurrentUser = {
userId: '789',
name: 'Refreshed User',
email: 'refreshed@example.com',
admin: false,
createdAt: new Date().toISOString(),
gravatarImageUrl: 'http://dummyimage.com'
gravatarImageUrl: 'http://dummyimage.com',
lang: 'en',
lastLogin: new Date().toISOString()
};
vi.spyOn(api, 'getJSON').mockResolvedValue(fakeResponse);
vi.spyOn(api, 'getJSON').mockImplementation(async(url: string) => {
if (url === ApiConfig.refreshTokenUrl) {
return fakeTokenResponse;
}
if (url === ApiConfig.currentUserUrl) {
return fakeCurrentUser;
}
return undefined;
});
// Store API_TOKEN so that fetchCurrentSession runs the refresh logic.
localStorage.setItem(API_TOKEN, 'dummy');
@@ -249,8 +309,9 @@ describe('AuthProvider', () => {
await user.click(getByTestIdFunction('checkCurrentAuthUser'));
await waitFor(() =>
expect(localStorage.getItem(API_TOKEN)).toBe('refresh-token')
);
await waitFor(() => {
expect(localStorage.getItem(API_TOKEN)).toBe('refresh-token');
expect(localStorage.getItem(USER_DATA)).toContain('Refreshed User');
});
});
});
@@ -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(() => {
@@ -28,6 +28,8 @@ describe('Portuguese Utils unit tests', () => {
expect(translateTimeMessage('1 month left', 'pt_br')).toBe('1 mês restante');
expect(translateTimeMessage('2 days left', 'pt_br')).toBe('2 dias restantes');
expect(translateTimeMessage('1 day left', 'pt_br')).toBe('1 dia restante');
expect(translateTimeMessage('Due tomorrow', 'pt_br')).toBe('Vence amanhã');
expect(translateTimeMessage('Due today', 'pt_br')).toBe('Vence hoje');
expect(translateTimeMessage('lala', 'pt_br')).toBe('lala');
expect(translateTimeMessage('null', 'pt_br')).toBe('null');
});
@@ -49,6 +49,8 @@ describe('Russian Utils unit tests', () => {
expect(translateTimeMessage('7 days left', 'ru')).toBe('осталось 7 дней');
expect(translateTimeMessage('8 days left', 'ru')).toBe('осталось 8 дней');
expect(translateTimeMessage('9 days left', 'ru')).toBe('осталось 9 дней');
expect(translateTimeMessage('Due tomorrow', 'ru')).toBe('Срок завтра');
expect(translateTimeMessage('Due today', 'ru')).toBe('Срок сегодня');
expect(translateTimeMessage('lala', 'ru')).toBe('lala');
expect(translateTimeMessage('null', 'ru')).toBe('null');
});
@@ -28,6 +28,8 @@ describe('Spanish Utils unit tests', () => {
expect(translateTimeMessage('1 month left', 'es')).toBe('Falta 1 mes');
expect(translateTimeMessage('2 days left', 'es')).toBe('Faltan 2 días');
expect(translateTimeMessage('1 day left', 'es')).toBe('Falta 1 día');
expect(translateTimeMessage('Due tomorrow', 'es')).toBe('Vence mañana');
expect(translateTimeMessage('Due today', 'es')).toBe('Vence hoy');
expect(translateTimeMessage('lala', 'es')).toBe('lala');
expect(translateTimeMessage('null', 'es')).toBe('null');
});
@@ -6,7 +6,7 @@ const tasks: TaskResponse[] = [
{
id: 1,
description: 'description',
done: false,
completed: false,
highPriority: true,
dueDate: '',
dueDateFmt: '',
+3
View File
@@ -25,5 +25,8 @@ describe('Renders the about view', () => {
expect(getByText('Find more information about us and the app')).toBeDefined();
expect(getByText('Tasks and notes made')).toBeDefined();
expect(getByText('Easy')).toBeDefined();
expect(getByText('About TaskNote')).toBeDefined();
expect(getByText('Technology')).toBeDefined();
expect(getByText('About the Developer')).toBeDefined();
});
});
+140 -29
View File
@@ -22,7 +22,11 @@ vi.mock('react-i18next', () => ({
vi.mock('../../api-service/api', () => ({
default: {
getJSON: vi.fn(),
deleteNoContent: vi.fn()
postJSON: vi.fn(),
patchJSON: vi.fn(),
putJSON: vi.fn(),
deleteNoContent: vi.fn(),
getJSONNoAuth: vi.fn()
}
}));
@@ -42,7 +46,9 @@ vi.mock('react-router', () => ({
}));
vi.mock('react-bootstrap-icons', () => ({
ThreeDotsVertical: () => <div data-testid="three-dots-icon"></div>
ThreeDotsVertical: () => <div data-testid="three-dots-icon"></div>,
CheckSquare: () => <div data-testid="task-icon"></div>,
JournalText: () => <div data-testid="note-icon">📝</div>
}));
// Mock components
@@ -55,7 +61,19 @@ vi.mock('../../components/AlertError', () => ({
}));
vi.mock('../../components/ModalMarkdown', () => ({
default: (props: any) => <div data-testid="modal-markdown">{props.show ? 'Modal Open' : ''}</div>
default: (props: any) => (
<div data-testid="modal-markdown">
{props.show ? (
<div>
<div data-testid="modal-title">{props.title}</div>
<div data-testid="modal-content">{props.markdownText}</div>
<button data-testid="modal-close" onClick={props.onHide}>Close</button>
</div>
) : (
''
)}
</div>
)
}));
vi.mock('../../components/TaskTitle', () => ({
@@ -67,7 +85,14 @@ vi.mock('../../components/TaskTimeLeft', () => ({
}));
vi.mock('../../components/TaskTag', () => ({
default: (props: any) => <div data-testid="task-tag">{props.tag}</div>
default: (props: any) => (
<div data-testid="task-tag">
{props.tag}
{props.taskOrNote === 'note' && props.onClick && (
<a href="#" data-testid="open-it" onClick={props.onClick}>Open it</a>
)}
</div>
)
}));
vi.mock('../../components/NoteTitle', () => ({
@@ -79,9 +104,9 @@ const mockTasks: TaskResponse[] = [
{
id: 1,
description: 'Task 1',
done: false,
completed: false,
urls: ['http://example.com'],
tag: 'work',
tags: ['work'],
lastUpdate: '2023-10-10',
highPriority: true,
dueDateFmt: '2 days left',
@@ -90,9 +115,9 @@ const mockTasks: TaskResponse[] = [
{
id: 2,
description: 'Task 2',
done: true,
completed: true,
urls: [],
tag: 'home',
tags: ['home'],
lastUpdate: '2023-10-09',
highPriority: false,
dueDateFmt: '',
@@ -105,17 +130,23 @@ const mockNotes: NoteResponse[] = [
id: 1,
title: 'Note 1',
description: 'Line 1\nLine 2\nLine 3',
tag: 'work',
tags: ['work'],
lastUpdate: '2023-10-10',
url: 'http://example.com'
url: 'http://example.com',
shared: false,
shareToken: null,
archived: false
},
{
id: 2,
title: 'Note 2',
description: 'This is a sample\nnote content',
tag: 'personal',
tags: ['personal'],
lastUpdate: '2023-10-09',
url: null
url: null,
shared: false,
shareToken: null,
archived: false
}
];
@@ -166,6 +197,7 @@ describe('Home Component', () => {
return Promise.resolve([]);
});
(api.deleteNoContent as any).mockResolvedValue(undefined);
(api.putJSON as any).mockResolvedValue(undefined);
// Mock window.innerWidth for the cleanText function
Object.defineProperty(window, 'innerWidth', {
@@ -194,6 +226,8 @@ describe('Home Component', () => {
await waitFor(() => {
expect(screen.getAllByTestId('task-title').length).toBe(2);
expect(screen.getAllByTestId('note-title').length).toBe(2);
expect(screen.getAllByTestId('task-icon').length).toBe(2);
expect(screen.getAllByTestId('note-icon').length).toBe(2);
});
});
@@ -328,14 +362,19 @@ describe('Home Component', () => {
fireEvent.click(markAsDoneButton!);
});
// Should call deleteNoContent API
expect(api.deleteNoContent).toHaveBeenCalledWith(expect.stringContaining('/1'));
// Should call patchJSON API with completed: true
expect(api.patchJSON).toHaveBeenCalledWith(
expect.stringContaining('/1'),
expect.objectContaining({ completed: true })
);
// Should reload tasks
expect(api.getJSON).toHaveBeenCalledWith(expect.stringContaining('tasks'));
});
test('deletes note', async () => {
test('archives note', async () => {
(api.putJSON as any).mockResolvedValue(undefined);
await act(async () => {
renderHome();
});
@@ -348,25 +387,24 @@ describe('Home Component', () => {
const noteDropdownToggles = screen.getAllByTestId('three-dots-icon');
// Note dropdowns start after task dropdowns
const firstNoteDropdown = noteDropdownToggles[mockTasks.length];
// Click the dropdown toggle
await act(async () => {
fireEvent.click(firstNoteDropdown);
});
// Find and click the "Delete" option by testId
const deleteButtons = screen.getAllByRole('button');
const deleteButton = deleteButtons.find(
button => button.textContent === 'task_table_action_delete'
);
// Find and click the "Archive" option by testId
const archiveButton = screen.getByTestId('note-dropdown-archive-item-1');
await act(async () => {
fireEvent.click(deleteButton!);
fireEvent.click(archiveButton);
});
// Should call archive API immediately
await waitFor(() => {
expect(api.putJSON).toHaveBeenCalledWith(expect.stringContaining('/notes/1/archive'), {});
});
// Should call deleteNoContent API
expect(api.deleteNoContent).toHaveBeenCalledWith(expect.stringContaining('/2'));
// Should reload notes
expect(api.getJSON).toHaveBeenCalledWith(expect.stringContaining('notes'));
});
@@ -455,7 +493,7 @@ describe('Home Component', () => {
});
});
test('keeps filter selection after deleting a note', async () => {
test('keeps filter selection after archiving a note', async () => {
await act(async () => {
renderHome();
});
@@ -487,11 +525,11 @@ describe('Home Component', () => {
});
const deleteButtons = screen.getAllByRole('button');
const deleteButton = deleteButtons.find(
button => button.textContent === 'task_table_action_delete'
const archiveButton = deleteButtons.find(
button => button.textContent === 'note_action_archive'
);
await act(async () => {
fireEvent.click(deleteButton!);
fireEvent.click(archiveButton!);
});
// After reload, filter should still be applied - tasks should remain hidden
@@ -541,6 +579,79 @@ describe('Home Component', () => {
expect(screen.getAllByTestId('task-title')[0].textContent).toBe('Task 1');
});
});
test('saves note ID to localStorage when opening modal', async () => {
await act(async () => {
renderHome();
});
await waitFor(() => {
expect(screen.getAllByTestId('open-it').length).toBe(2);
});
const openItLinks = screen.getAllByTestId('open-it');
await act(async () => {
fireEvent.click(openItLinks[1]);
});
expect(localStorage.getItem('OPEN_NOTE_ID')).toBe('1');
expect(screen.getByTestId('modal-title').textContent).toBe('Note 1');
expect(screen.getByTestId('modal-content').textContent).toBe('Line 1\nLine 2\nLine 3');
});
test('restores open note modal from localStorage on reload', async () => {
localStorage.setItem('OPEN_NOTE_ID', '2');
await act(async () => {
renderHome();
});
await waitFor(() => {
expect(screen.getByTestId('modal-title').textContent).toBe('Note 2');
});
expect(screen.getByTestId('modal-content').textContent).toBe('This is a sample\nnote content');
});
test('does not restore modal if localStorage note ID not found', async () => {
localStorage.setItem('OPEN_NOTE_ID', '999');
await act(async () => {
renderHome();
});
await waitFor(() => {
expect(screen.getAllByTestId('note-title').length).toBe(2);
});
const modal = screen.getByTestId('modal-markdown');
expect(modal.textContent).toBe('');
expect(localStorage.getItem('OPEN_NOTE_ID')).toBeNull();
});
test('clears localStorage when closing modal', async () => {
await act(async () => {
renderHome();
});
await waitFor(() => {
expect(screen.getAllByTestId('open-it').length).toBe(2);
});
const openItLinks = screen.getAllByTestId('open-it');
await act(async () => {
fireEvent.click(openItLinks[1]);
});
expect(localStorage.getItem('OPEN_NOTE_ID')).toBe('1');
const closeButton = screen.getByTestId('modal-close');
await act(async () => {
fireEvent.click(closeButton);
});
expect(localStorage.getItem('OPEN_NOTE_ID')).toBeNull();
});
/*
test('getFirstRows properly formats note preview', async () => {
await act(async () => {
+31 -12
View File
@@ -1,5 +1,6 @@
import React from 'react';
import React, { act } from 'react';
import { render, fireEvent, waitFor } from '@testing-library/react';
import userEvent from '@testing-library/user-event';
import { beforeEach, describe, expect, it, vi } from 'vitest';
import { MemoryRouter } from 'react-router';
import { I18nextProvider } from 'react-i18next';
@@ -16,6 +17,7 @@ vi.mock('../../api-service/api', () => ({
default: {
postJSON: vi.fn(),
getJSON: vi.fn(),
patchJSON: vi.fn(),
}
}));
@@ -82,6 +84,7 @@ vi.mock('../../utils/TranslatorUtils', () => ({
const mockedApi = vi.mocked(api);
const mockedUseParams = vi.mocked(useParams);
const mockedUseSearchParams = vi.mocked(useSearchParams);
describe('NoteAdd Component', () => {
const renderNoteAdd = () => {
@@ -100,13 +103,17 @@ describe('NoteAdd Component', () => {
beforeEach(() => {
// Reset mock between tests
(useSearchParams as unknown as ReturnType<typeof vi.fn>).mockReset();
mockedUseSearchParams.mockReturnValue([new URLSearchParams(), vi.fn()]);
mockedUseParams.mockReturnValue({});
vi.clearAllMocks();
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();
@@ -116,15 +123,18 @@ describe('NoteAdd Component', () => {
it('should show error message when form is invalid', async () => {
const { getByText, getByRole } = renderNoteAdd();
const submitButton = getByRole('button', { name: 'note_form_submit' });
fireEvent.click(submitButton);
await waitFor(() => {
expect(getByText('Please fill in all the fields')).toBeDefined();
});
});
it('should add a new note when form is valid', async () => {
(useSearchParams as unknown as ReturnType<typeof vi.fn>).mockReturnValue([
mockedUseSearchParams.mockReturnValue([
new URLSearchParams("backTo=home"),
vi.fn(),
]);
const { getByLabelText, getByTestId, getByRole } = renderNoteAdd();
@@ -142,17 +152,22 @@ describe('NoteAdd Component', () => {
title: 'New Note',
description: 'Note content',
url: '',
tag: '',
tags: [],
lastUpdate: '',
shared: false,
shareToken: null
shareToken: null,
archived: false
}
expect(api.postJSON).toHaveBeenCalledWith(ApiConfig.notesUrl, newNote);
});
});
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();
@@ -169,8 +184,10 @@ describe('NoteAdd Component', () => {
title: 'Note one',
description: 'Description of note one',
url: 'http://notes.domain.com',
tag: 'dev',
tags: ['dev'],
lastUpdate: '3 minutes ago',
shared: false,
shareToken: null
};
vi.spyOn(api, 'getJSON').mockResolvedValue(toEdit);
@@ -195,8 +212,10 @@ describe('NoteAdd Component', () => {
title: 'Old title',
description: 'Old description',
url: 'http://notes.domain.com',
tag: 'dev',
tags: ['dev'],
lastUpdate: '1 minute ago',
shared: false,
shareToken: null
};
vi.spyOn(api, 'getJSON').mockResolvedValue(toClone);
+25 -9
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' });
@@ -118,19 +130,23 @@ describe('TaskAdd Component', () => {
description: 'New Task',
dueDate: '',
highPriority: false,
tag: '',
tags: [],
urls: []
}
expect(api.postJSON).toHaveBeenCalledWith(ApiConfig.tasksUrl, newTask);
});
});
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 -1
View File
@@ -28,7 +28,9 @@ const ApiConfig = {
publicNotesUrl: `${server}/public/notes`,
userUrl: `${server}/rest/users`
userUrl: `${server}/rest/users`,
currentUserUrl: `${server}/rest/users/me`
};
export default ApiConfig;
+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 }
@@ -0,0 +1,6 @@
@import '../../styles/theme.scss';
.form-control[type="date"] {
font-size: 16px; /* Prevents iOS zoom on focus */
border-left: none;
}
@@ -1,34 +0,0 @@
@import '../../styles/theme.scss';
/* custom-datepicker.scss */
.react-datepicker__input-container input {
font-size: 16px; /* Prevents iOS zoom on focus */
width: 100%;
border-radius: 4px;
border: 1px solid var(--bs-border-color);
border-top-left-radius: 0;
border-bottom-left-radius: 0;
}
.react-datepicker-popper {
z-index: 9999 !important;
}
.react-datepicker__day {
margin: 0.2rem;
padding: 0.5rem;
border-radius: 4px;
}
/* Larger touch targets on mobile */
@media (max-width: 768px) {
.react-datepicker__day,
.react-datepicker__month-text,
.react-datepicker__quarter-text,
.react-datepicker__year-text {
width: 2.5rem;
height: 2.5rem;
line-height: 2.5rem;
margin: 0.2rem;
}
}
+13 -39
View File
@@ -1,11 +1,7 @@
import React, { useEffect, useState } from 'react';
import { Col, Form, InputGroup, Row } from 'react-bootstrap';
import * as Icons from 'react-bootstrap-icons';
import DatePicker from 'react-datepicker';
import { MiddlewareReturn } from '@floating-ui/core';
import { MiddlewareState } from '@floating-ui/dom';
import 'react-datepicker/dist/react-datepicker.css';
import './custom-datepicker.scss';
import './FormInput.scss';
type IconName = keyof typeof Icons;
@@ -17,10 +13,8 @@ interface Props {
name: string;
placeholder?: string;
value?: string;
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;
@@ -63,40 +57,20 @@ function FormInput(props: React.PropsWithChildren<Props>): React.ReactNode {
)}
</Form.Label>
<InputGroup className="mb-3">
<InputGroup className="mb-3 flex-nowrap">
<InputGroup.Text>
<Icon />
</InputGroup.Text>
{props.type == 'date'
{props.type === 'date'
? (
<DatePicker
selected={props?.valueDate}
onChange={(date: Date | null) => {
if (props.onChangeDate) {
props.onChangeDate(date);
}
}}
dateFormat="MMMM d, yyyy"
className="form-control"
id="date-input"
placeholderText={props.placeholder}
popperPlacement="bottom"
popperModifiers={[
{
name: 'preventOverflow',
options: {
enabled: true,
boundariesElement: 'viewport'
},
fn: function (state: MiddlewareState): MiddlewareReturn | Promise<MiddlewareReturn> {
return state;
}
}
]}
withPortal
showYearDropdown
showMonthDropdown
dropdownMode="select"
<Form.Control
required={props.required}
type="date"
name={props.name}
placeholder={props.placeholder ? props.placeholder : ''}
value={props?.value}
onChange={props.onChange}
data-testid={props.dataTestId}
/>
)
: (
@@ -107,7 +81,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>
)}
+29 -9
View File
@@ -1,5 +1,4 @@
import React, { useState } from 'react';
import Button from 'react-bootstrap/Button';
import Modal from 'react-bootstrap/Modal';
import Markdown from 'react-markdown';
import remarkGfm from 'remark-gfm';
@@ -10,6 +9,8 @@ type Props = {
title: string;
markdownText: string;
onHide: () => void;
onSave?: () => Promise<boolean>;
saveButtonLabel?: string;
};
/**
@@ -73,23 +74,42 @@ const ModalMarkdown: React.FC<Props> = (props: Props): React.ReactNode => {
)}
</Modal.Body>
<Modal.Footer className="d-flex flex-wrap gap-2 justify-content-end">
<Button variant="outline-secondary" onClick={handleHide}>
<button
type="button"
onClick={handleHide}
className="home-new-item-secondary task-note-btn"
>
Close
</Button>
<Button
variant={showSource ? 'info' : 'outline-info'}
</button>
<button
type="button"
onClick={handleToggleSource}
data-testid="modal-source-button"
className={`${showSource ? 'home-new-item' : 'home-new-item-secondary'} task-note-btn`}
>
Source
</Button>
<Button
variant="outline-primary"
</button>
<button
type="button"
onClick={handleCopy}
data-testid="modal-copy-button"
className="home-new-item-secondary task-note-btn"
>
{copied ? 'Copied!' : 'Copy'}
</Button>
</button>
{props.onSave && (
<button
type="button"
onClick={async () => {
handleHide();
await props.onSave!();
}}
data-testid="modal-save-button"
className="home-new-item task-note-btn"
>
{props.saveButtonLabel ?? 'Save note'}
</button>
)}
</Modal.Footer>
</Modal>
)
+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>
+9 -7
View File
@@ -3,27 +3,29 @@ import { Col, Row } from 'react-bootstrap';
import './style.css';
interface Props {
readonly tag?: string;
readonly tags?: string[];
readonly lastUpdate: string;
readonly taskOrNote: 'task' | 'note';
readonly onClick?: (e: React.MouseEvent<Element, MouseEvent>) => void;
}
/**
* Renders the TaskTag component, displaying a tag and the last update time.
* Renders the TaskTag component, displaying tags and the last update time.
*
* @param {Props} props - The props for the component.
* @param {string} [props.tag] - The tag for the task. If not provided, defaults to '#untagged'.
* @param {string[]} [props.tags] - The tags for the task. If not provided or empty, defaults to '#untagged'.
* @param {string} props.lastUpdate - The last update time for the task.
* @returns {React.ReactNode} The rendered TaskTag component.
*/
function TaskTag(props: React.PropsWithChildren<Props>): React.ReactNode {
const tagText = props.tag ? `#${props.tag}` : '#untagged';
const tagContent = props.tags && props.tags.length > 0
? props.tags.map(tag => `#${tag}`).join(' ')
: '#untagged';
return (
<Row>
<Col className="d-inline-block text-muted card-tag poppins-regular">
{tagText}
<Col className="d-inline-block card-tag poppins-regular">
{tagContent}
{' '}
{props.taskOrNote}
{props.taskOrNote === 'note' && (
@@ -38,7 +40,7 @@ function TaskTag(props: React.PropsWithChildren<Props>): React.ReactNode {
</>
)}
</Col>
<Col className="d-inline-block text-muted card-tag ms-5 text-end poppins-regular">
<Col className="d-inline-block card-tag ms-5 text-end poppins-regular">
{props.lastUpdate}
</Col>
</Row>
+1
View File
@@ -1,3 +1,4 @@
.card-tag {
font-size: 13px;
color: rgba(var(--bs-body-color-rgb), 0.55);
}
+4 -4
View File
@@ -4,17 +4,17 @@ import { CalendarCheck } from 'react-bootstrap-icons';
interface Props {
text: string;
done: boolean;
completed: boolean;
tooltip: string;
}
/**
* Renders the TaskTimeLeft component if the task is not done, displaying
* Renders the TaskTimeLeft component if the task is not completed, displaying
* a calendar icon and the time left for the task.
*
* @param {Props} props - Props for the TaskTimeLeft component.
* @param {string} props.text - The time left for the task.
* @param {boolean} props.done - Boolean value indicating if the task is done.
* @param {boolean} props.completed - Boolean value indicating if the task is completed.
* @param {string} props.tooltip - The string representation of a Date instance.
* @returns
*/
@@ -27,7 +27,7 @@ function TaskTimeLeft(props: React.PropsWithChildren<Props>): React.ReactNode |
}).format(new Date(props.tooltip))
: '';
return props.done
return props.completed
? null
: (
<div className="d-block task-due-date">
+3 -3
View File
@@ -5,7 +5,7 @@ import './style.css';
interface Props {
readonly title: string;
readonly done: boolean;
readonly completed: boolean;
readonly taskUrl: string[];
}
@@ -14,14 +14,14 @@ interface Props {
*
* @param {Props} props - The props for the component.
* @param {string} [props.title] - The title for the task.
* @param {boolean} [props.done] - Define if the task is completed.
* @param {boolean} [props.completed] - Define if the task is completed.
* @returns {React.ReactNode} The rendered TaskTitle component.
*/
function TaskTitle(props: React.PropsWithChildren<Props>): React.ReactNode {
return (
<span className="task-title-icon" data-testid={`task-title-container-${props.title}`}>
<span
className={`${props.done ? 'ms-2 text-strike' : ''} poppins-semibold`}
className={`${props.completed ? 'ms-2 text-strike' : ''} poppins-semibold`}
data-testid={`task-title-text-${props.title}`}
>
{props.title}
+27 -9
View File
@@ -76,6 +76,8 @@ const enTranslations = {
home_card_task_pending: 'Pending tasks',
home_card_task_empty: 'No pending tasks',
home_card_task_done: 'done tasks!',
home_completed_tasks_title: 'Completed tasks',
home_archived_notes_title: 'Archived notes',
home_card_task_done_empty: 'No done tasks!',
home_card_task_btn: 'Go to Tasks',
home_card_note_title: 'Notes Summary',
@@ -105,6 +107,10 @@ const enTranslations = {
task_table_action_edit: 'Edit',
task_table_action_clone: 'Clone',
task_table_action_delete: 'Delete',
delete_modal_title: 'Confirm deletion',
delete_modal_body: 'Are you sure you want to delete this item? This action cannot be undone.',
delete_modal_cancel: 'Cancel',
delete_modal_confirm: 'Delete',
note_form_title: 'Add note',
note_form_title_label: 'Title',
@@ -117,6 +123,9 @@ const enTranslations = {
note_action_share: 'Share',
note_action_unshare: 'Unshare',
note_action_copy_link: 'Copy link',
note_action_archive: 'Archive',
note_action_restore: 'Restore',
note_action_delete_permanently: 'Delete permanently',
about_page_title_one: 'About the',
about_page_title_two: 'TaskNote App',
@@ -132,23 +141,31 @@ const enTranslations = {
about_app_features_one: 'Quickly add and manage tasks and notes',
about_app_features_two: 'Search and filter notes for easy access',
about_app_features_three: 'Intuitive and clean user interface',
about_app_features_four: 'Dark and light theme support with responsive design',
about_app_features_five: 'URL attachments for tasks and notes',
about_app_features_six: 'Tagging system with multiple tags per item',
about_app_features_seven: 'Public note sharing via public links',
about_app_features_eight: 'Markdown formatting toolbar for rich text editing',
about_app_features_nine: 'Email confirmation required for account security',
about_app_help_title: 'Help & How to Use',
about_app_help_description: `To get started, simply sign up or log in, and
you'll have access to your personalized dashboard. From there, you can
create, edit, and delete tasks and notes, and organize them however you
like. Need assistance? Visit our Help page (in the future) for tutorials
and FAQs.`,
like. Need assistance? Check out the sidebar for quick navigation.`,
about_tech_title: 'Technology',
about_tech_description: `TaskNote was built using modern web technologies
that ensure speed, reliability, and security.`,
about_tech_list_one: 'React with TypeScript for the front-end',
about_tech_list_two: 'Bootstrap 5 for components and responsive design',
about_tech_list_three: 'Java and Spring Boot plus GraalVM for the back-end and Cloud Native',
about_tech_list_four: 'PostgreSQL for database management',
about_tech_list_five: 'Docker for containerization and deployment',
about_tech_list_six: 'GitHub Actions for CI/CD, testing and linting enforcement',
about_tech_list_seven: 'SonarCloud, and GitHub QL for security and improvements checks',
about_tech_list_one: 'React 19 with TypeScript for the front-end',
about_tech_list_two: 'Vite for fast builds and development',
about_tech_list_three: 'React Router 7 for client-side routing',
about_tech_list_four: 'i18next for internationalization support',
about_tech_list_five: 'Bootstrap 5 for components and responsive design',
about_tech_list_six: 'Java and Spring Boot 4.x plus GraalVM for the back-end and Cloud Native',
about_tech_list_seven: 'PostgreSQL for database management',
about_tech_list_eight: 'Docker for containerization and deployment',
about_tech_list_nine: 'GitHub Actions for CI/CD, testing and linting enforcement',
about_tech_list_ten: 'SonarCloud and GitHub QL for security and improvements checks',
about_dev_title: 'About the Developer',
about_dev_description: `Hi! I'm Ricardo, the developer of TaskNote. I'm
@@ -187,6 +204,7 @@ const enTranslations = {
account_delete_btn: 'Yes, delete everything',
footer_my_account: 'My Account ',
sidebar_last_seen: 'Last seen {{time}}',
logout: 'Logout'
};
+14 -2
View File
@@ -19,6 +19,8 @@ export const timeAgoTranslations: Record<string, string> = {
'month left_pt_br': '{X} mês restante',
'days left_pt_br': '{X} dias restantes',
'day left_pt_br': '{X} dia restante',
'due tomorrow_pt_br': 'Vence amanhã',
'due today_pt_br': 'Vence hoje',
'years ago_es': 'Hace {X} años',
'year ago_es': 'Hace {X} año',
@@ -40,6 +42,8 @@ export const timeAgoTranslations: Record<string, string> = {
'month left_es': 'Falta {X} mes',
'days left_es': 'Faltan {X} días',
'day left_es': 'Falta {X} día',
'due tomorrow_es': 'Vence mañana',
'due today_es': 'Vence hoy',
'years ago_ru': '{X} года назад',
'year ago_ru': '{X} год назад',
@@ -60,7 +64,9 @@ export const timeAgoTranslations: Record<string, string> = {
'months left_ru': 'осталось {X} месяца',
'month left_ru': 'Остался {X} месяц',
'days left_ru': 'осталось {X} дня',
'day left_ru': 'Остался {X} день'
'day left_ru': 'Остался {X} день',
'due tomorrow_ru': 'Срок завтра',
'due today_ru': 'Срок сегодня'
};
export const serverResponsesTranslations: Record<string, string> = {
@@ -90,6 +96,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 +125,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 +153,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: 'Письмо с подтверждением отправлено еще раз! Пожалуйста, проверьте папку со спамом.'
};
+27 -9
View File
@@ -76,6 +76,8 @@ const ptBrTranslations = {
home_card_task_pending: 'Tarefa(s) pendente(s)',
home_card_task_empty: 'Nenhuma tarefa pendente',
home_card_task_done: 'tarefa(s) concluída(s)',
home_completed_tasks_title: 'Tarefas concluídas',
home_archived_notes_title: 'Notas arquivadas',
home_card_task_done_empty: 'Nenhuma tarefa condluída',
home_card_task_btn: 'Ir para Tarefas',
home_card_note_title: 'Resumo de Notas',
@@ -105,6 +107,10 @@ const ptBrTranslations = {
task_table_action_edit: 'Alterar',
task_table_action_clone: 'Clonar',
task_table_action_delete: 'Excluir',
delete_modal_title: 'Confirmar exclusão',
delete_modal_body: 'Tem certeza de que deseja excluir este item? Esta ação não pode ser desfeita.',
delete_modal_cancel: 'Cancelar',
delete_modal_confirm: 'Excluir',
note_form_title: 'Adicionar nota',
note_form_title_label: 'Título',
@@ -117,6 +123,9 @@ const ptBrTranslations = {
note_action_share: 'Compartilhar',
note_action_unshare: 'Parar de compartilhar',
note_action_copy_link: 'Copiar link',
note_action_archive: 'Arquivar',
note_action_restore: 'Restaurar',
note_action_delete_permanently: 'Excluir permanentemente',
about_page_title_one: 'Sobre o',
about_page_title_two: 'App TaskNote',
@@ -133,23 +142,31 @@ const ptBrTranslations = {
about_app_features_one: 'Adicionar e gerenciar tarefas e notas rapidamente',
about_app_features_two: 'Buscar e filtrar notas para fácil acesso',
about_app_features_three: 'Interface limpa e intuitiva',
about_app_features_four: 'Suporte a tema escuro e claro com design responsivo',
about_app_features_five: 'Anexos de URL para tarefas e notas',
about_app_features_six: 'Sistema de tags com múltiplas tags por item',
about_app_features_seven: 'Compartilhamento público de notas via links públicos',
about_app_features_eight: 'Barra de ferramentas de formatação Markdown para edição de texto rico',
about_app_features_nine: 'Confirmação de e-mail obrigatória para segurança da conta',
about_app_help_title: 'Ajuda & Como usar',
about_app_help_description: `Para começar, simplemente crie sua conta ou entre,
e você terá acesso ao seu painel personalizado. A partir daí, você pode criar,
alterar, e apagar tarefas e notas, e organizá-las da forma que preferir. Precisa
de alguma ajuda? Visite nossa página de ajuda (em breve) para tutoriais e perguntas
frequentes.`,
de alguma ajuda? Confira a barra lateral para navegação rápida.`,
about_tech_title: 'Tecnologia',
about_tech_description: `TaskNote foi contruído com tecnologia web atual
que garante velocidade, confiabilidade e segurança.`,
about_tech_list_one: 'React com TypeScript para o desenvolvimento do front-end',
about_tech_list_two: 'Bootstrap 5 para os componentes e design responsivo',
about_tech_list_three: 'Java e Spring Boot mais GraalVM para o back-end Nativo em Cloud',
about_tech_list_four: 'PostgreSQL para gestão do banco de dados',
about_tech_list_five: 'Docker para isolamento em containers e lançamentos',
about_tech_list_six: 'GitHub Actions para integração contínua, testes e controle de qualidade',
about_tech_list_seven: 'SonarCloud e GitHub QL para reforço de qualidade e melhorias',
about_tech_list_one: 'React 19 com TypeScript para o desenvolvimento do front-end',
about_tech_list_two: 'Vite para builds e desenvolvimento rápidos',
about_tech_list_three: 'React Router 7 para roteamento no lado do cliente',
about_tech_list_four: 'i18next para suporte à internacionalização',
about_tech_list_five: 'Bootstrap 5 para os componentes e design responsivo',
about_tech_list_six: 'Java e Spring Boot 4.x mais GraalVM para o back-end Nativo em Cloud',
about_tech_list_seven: 'PostgreSQL para gestão do banco de dados',
about_tech_list_eight: 'Docker para isolamento em containers e lançamentos',
about_tech_list_nine: 'GitHub Actions para integração contínua, testes e controle de qualidade',
about_tech_list_ten: 'SonarCloud e GitHub QL para reforço de qualidade e melhorias',
about_dev_title: 'Sobre o Desenvolvedor',
about_dev_description: `Olá! Sou o Ricardo, o desenvolvedor do TaskNote.
@@ -188,6 +205,7 @@ const ptBrTranslations = {
account_delete_btn: 'Sim, deletar tudo',
footer_my_account: 'Minha Conta ',
sidebar_last_seen: 'Último acesso {{time}}',
logout: 'Sair'
};

Some files were not shown because too many files have changed in this diff Show More