Commit Graph
58 Commits
Author SHA1 Message Date
tiennm99 2edcdf7d84 fix(node): require Node 22.13+ for pnpm 11.1.1 2026-05-13 16:44:11 +07:00
tiennm99 e232a4c66d chore: migrate from npm to pnpm
Replace package-lock.json with pnpm-lock.yaml and add packageManager field.
2026-05-13 10:20:25 +07:00
dependabot[bot]GitHubdependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
f2760925e3 build(deps): bump next from 16.2.2 to 16.2.3 (#23)
Bumps [next](https://github.com/vercel/next.js) from 16.2.2 to 16.2.3.
- [Release notes](https://github.com/vercel/next.js/releases)
- [Changelog](https://github.com/vercel/next.js/blob/canary/release.js)
- [Commits](https://github.com/vercel/next.js/compare/v16.2.2...v16.2.3)

---
updated-dependencies:
- dependency-name: next
  dependency-version: 16.2.3
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-05-07 13:33:33 +07:00
dependabot[bot]GitHubdependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
f6c4737ed7 build(deps): bump follow-redirects from 1.15.9 to 1.16.0 (#25)
Bumps [follow-redirects](https://github.com/follow-redirects/follow-redirects) from 1.15.9 to 1.16.0.
- [Release notes](https://github.com/follow-redirects/follow-redirects/releases)
- [Commits](https://github.com/follow-redirects/follow-redirects/compare/v1.15.9...v1.16.0)

---
updated-dependencies:
- dependency-name: follow-redirects
  dependency-version: 1.16.0
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-05-07 13:33:31 +07:00
tiennm99 293b3716be chore: add Apache-2.0 license 2026-04-29 21:33:36 +07:00
tiennm99andGitHub da0f4c1008 Merge pull request #22 from tiennm99/dependabot/npm_and_yarn/next-16.2.2
build(deps): bump next from 16.1.5 to 16.2.2
2026-04-05 11:12:26 +07:00
tiennm99andGitHub d1fc05871b Merge pull request #21 from tiennm99/dependabot/npm_and_yarn/multi-bf05dc1ecf
build(deps): bump picomatch
2026-04-05 11:12:04 +07:00
tiennm99andGitHub 110e91978e Merge pull request #20 from tiennm99/dependabot/npm_and_yarn/flatted-3.4.2
build(deps-dev): bump flatted from 3.3.3 to 3.4.2
2026-04-05 11:11:48 +07:00
tiennm99 7b70fbf513 feat: add responsive card layout for tables on mobile screens
Tables show as cards on small screens (<640px) with key rate fields
in a compact grid, while desktop retains the full table view.
2026-04-04 13:28:01 +07:00
tiennm99 d1ad51ff52 feat: add dark mode toggle with system/light/dark cycling
Three-state theme toggle persisted to localStorage. Supports
explicit light/dark override or falling back to system preference.
2026-04-04 13:27:02 +07:00
tiennm99 6c1701fd35 feat: sync state to URL params for shareable/bookmarkable queries
Bank, currency, and date range are now reflected in URL search
params. URL params take priority over localStorage on load.
2026-04-04 13:25:52 +07:00
tiennm99 3a4075875f feat: add loading progress indicator with day count and progress bar
Show total days being fetched and an animated progress bar during
data loading to give users better feedback on long date ranges.
2026-04-04 13:25:14 +07:00
tiennm99 bb1d82ab35 feat: add retry with exponential backoff for bank API requests
Bank APIs can be flaky; retrying up to 2 times with exponential
backoff (500ms, 1s) improves reliability for transient failures.
2026-04-04 13:23:23 +07:00
tiennm99 fe4cddc998 feat: improve UI/UX with consistent styling and better usability
Replace all inline styles with Tailwind classes, add SVG icons to
action buttons, right-align numeric table cells with tabular-nums,
add sticky table headers, highlight active date preset, improve
empty state with illustration, fix SSR hydration mismatch for
localStorage settings, and make buttons mobile-responsive.
2026-04-04 00:11:32 +07:00
dependabot[bot]andGitHub 04b5cb7e70 build(deps): bump next from 16.1.5 to 16.2.2
Bumps [next](https://github.com/vercel/next.js) from 16.1.5 to 16.2.2.
- [Release notes](https://github.com/vercel/next.js/releases)
- [Changelog](https://github.com/vercel/next.js/blob/canary/release.js)
- [Commits](https://github.com/vercel/next.js/compare/v16.1.5...v16.2.2)

---
updated-dependencies:
- dependency-name: next
  dependency-version: 16.2.2
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-04-03 16:31:13 +00:00
tiennm99 317801df20 feat: add rate trend chart with recharts
Toggle "Show Chart" displays line chart above the table.
Supports single-bank and comparison mode visualizations.
Also modularized components: extracted tables, status indicators,
and chart into separate files for maintainability.
2026-04-03 23:27:21 +07:00
tiennm99 67085db355 feat: add BIDV vs TCB comparison mode
Toggle fetches both banks simultaneously, merges by date+currency,
and displays side-by-side in a unified table. Bank selector disabled
in compare mode. Export handles comparison data format.
2026-04-03 23:24:56 +07:00
tiennm99 82245edbf7 feat: add Excel (.xlsx) export alongside CSV
Use SheetJS (xlsx) for proper Excel file generation.
Both export buttons available: Excel as primary, CSV as secondary.
2026-04-03 23:22:57 +07:00
tiennm99 c9357d74e7 feat: add multi-currency support with currency selector
API now accepts currency param (USD, EUR, JPY, ALL, etc.).
Returns array of rates per date instead of single object.
Frontend adds currency dropdown with 12 common currencies plus "All".
2026-04-03 23:21:25 +07:00
tiennm99 6e8c12cdf7 feat: remember last bank and date range in localStorage 2026-04-03 23:18:51 +07:00
tiennm99 d2ed5525d9 feat: auto-fetch exchange rates on page load 2026-04-03 23:18:07 +07:00
tiennm99 8bc191dc22 feat: add date range presets (Today, Last 7d, Last 30d, This month) 2026-04-03 23:17:26 +07:00
tiennm99 c633c0ebe8 feat: add Enter key shortcut to trigger fetch 2026-04-03 23:16:47 +07:00
tiennm99 83384f54d0 refactor: parallel fetching, simplified page, consistent dates, cleanup
- Fetch dates in parallel chunks of 5 instead of sequentially
- Simplify page.js to server component, move default dates into viewer
- Replace showTable with hasFetched for clearer semantics
- Normalize date display to yyyy-MM-dd for both banks
- Remove unused Geist_Mono font import (~50KB savings)
- Change lang to "vi" for Vietnamese bank data context
- Clean up empty blocks and redundant variables in API route
2026-04-03 23:14:40 +07:00
tiennm99 b985426047 ci: add Claude Code project configuration 2026-04-03 23:03:43 +07:00
tiennm99 45ea2956e4 feat: improve UI/UX with dark mode, better visual hierarchy, and accessibility
- Add card layout, loading spinner, error/empty states for better UX
- Full dark mode support for date picker, tables, and inputs via CSS vars
- Extract reusable RateTable component, remove duplicate table markup
- Fix CSV injection vulnerability with escapeCsv sanitizer
- Fix URL.createObjectURL memory leak
- Replace JS hover handlers with CSS hover for better performance
- Add aria-live region for screen reader announcements
- Fix metadata from default "Create Next App" to proper title
- Differentiate table stripe/hover colors in light mode
2026-04-03 23:02:53 +07:00
dependabot[bot]andGitHub d88d5a7b0b build(deps): bump picomatch
Bumps  and [picomatch](https://github.com/micromatch/picomatch). These dependencies needed to be updated together.

Updates `picomatch` from 2.3.1 to 2.3.2
- [Release notes](https://github.com/micromatch/picomatch/releases)
- [Changelog](https://github.com/micromatch/picomatch/blob/master/CHANGELOG.md)
- [Commits](https://github.com/micromatch/picomatch/compare/2.3.1...2.3.2)

Updates `picomatch` from 4.0.2 to 4.0.4
- [Release notes](https://github.com/micromatch/picomatch/releases)
- [Changelog](https://github.com/micromatch/picomatch/blob/master/CHANGELOG.md)
- [Commits](https://github.com/micromatch/picomatch/compare/2.3.1...2.3.2)

---
updated-dependencies:
- dependency-name: picomatch
  dependency-version: 2.3.2
  dependency-type: indirect
- dependency-name: picomatch
  dependency-version: 4.0.4
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-03-26 05:28:06 +00:00
dependabot[bot]andGitHub 069204e0c6 build(deps-dev): bump flatted from 3.3.3 to 3.4.2
Bumps [flatted](https://github.com/WebReflection/flatted) from 3.3.3 to 3.4.2.
- [Commits](https://github.com/WebReflection/flatted/compare/v3.3.3...v3.4.2)

---
updated-dependencies:
- dependency-name: flatted
  dependency-version: 3.4.2
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-03-21 15:48:32 +00:00
Tien Nguyen MinhandGitHub dc1b2ac06b Merge pull request #17 from tiennm99/dependabot/npm_and_yarn/tar-7.5.11
build(deps-dev): bump tar from 7.4.3 to 7.5.11
2026-03-13 14:58:48 +07:00
dependabot[bot]andGitHub af5b5ff181 build(deps-dev): bump tar from 7.4.3 to 7.5.11
Bumps [tar](https://github.com/isaacs/node-tar) from 7.4.3 to 7.5.11.
- [Release notes](https://github.com/isaacs/node-tar/releases)
- [Changelog](https://github.com/isaacs/node-tar/blob/main/CHANGELOG.md)
- [Commits](https://github.com/isaacs/node-tar/compare/v7.4.3...v7.5.11)

---
updated-dependencies:
- dependency-name: tar
  dependency-version: 7.5.11
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-03-11 11:40:53 +00:00
Tien Nguyen MinhandGitHub 6b14d120de Merge pull request #11 from tiennm99/dependabot/npm_and_yarn/next-16.1.5
build(deps): bump next from 15.5.9 to 16.1.5
2026-03-11 18:39:51 +07:00
dependabot[bot]andGitHub ac460a2c67 build(deps): bump next from 15.5.9 to 16.1.5
Bumps [next](https://github.com/vercel/next.js) from 15.5.9 to 16.1.5.
- [Release notes](https://github.com/vercel/next.js/releases)
- [Changelog](https://github.com/vercel/next.js/blob/canary/release.js)
- [Commits](https://github.com/vercel/next.js/compare/v15.5.9...v16.1.5)

---
updated-dependencies:
- dependency-name: next
  dependency-version: 16.1.5
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-01-28 19:36:19 +00:00
Tien Nguyen MinhandGitHub 737c8d0037 Merge pull request #5 from tiennm99/dependabot/npm_and_yarn/js-yaml-4.1.1
build(deps-dev): bump js-yaml from 4.1.0 to 4.1.1
2026-01-09 10:17:12 +07:00
Tien Nguyen MinhandGitHub ab722b85d1 Merge pull request #4 from tiennm99/dependabot/npm_and_yarn/axios-1.12.0
build(deps): bump axios from 1.10.0 to 1.12.0
2026-01-09 10:17:01 +07:00
Tien Nguyen MinhandGitHub 7e7a984986 Merge pull request #1 from tiennm99/dependabot/npm_and_yarn/form-data-4.0.4
build(deps): bump form-data from 4.0.3 to 4.0.4
2026-01-09 10:16:49 +07:00
Tien Nguyen MinhandGitHub e753720260 Merge pull request #7 from tiennm99/dependabot/npm_and_yarn/next-15.5.9
build(deps): bump next from 15.3.4 to 15.5.9
2026-01-09 10:15:44 +07:00
dependabot[bot]andGitHub 04828751f5 build(deps): bump next from 15.3.4 to 15.5.9
Bumps [next](https://github.com/vercel/next.js) from 15.3.4 to 15.5.9.
- [Release notes](https://github.com/vercel/next.js/releases)
- [Changelog](https://github.com/vercel/next.js/blob/canary/release.js)
- [Commits](https://github.com/vercel/next.js/compare/v15.3.4...v15.5.9)

---
updated-dependencies:
- dependency-name: next
  dependency-version: 15.5.9
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-12-12 05:14:12 +00:00
dependabot[bot]andGitHub fe0290ad13 build(deps-dev): bump js-yaml from 4.1.0 to 4.1.1
Bumps [js-yaml](https://github.com/nodeca/js-yaml) from 4.1.0 to 4.1.1.
- [Changelog](https://github.com/nodeca/js-yaml/blob/master/CHANGELOG.md)
- [Commits](https://github.com/nodeca/js-yaml/compare/4.1.0...4.1.1)

---
updated-dependencies:
- dependency-name: js-yaml
  dependency-version: 4.1.1
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-11-16 13:33:47 +00:00
dependabot[bot]andGitHub fa1411b7f4 build(deps): bump axios from 1.10.0 to 1.12.0
Bumps [axios](https://github.com/axios/axios) from 1.10.0 to 1.12.0.
- [Release notes](https://github.com/axios/axios/releases)
- [Changelog](https://github.com/axios/axios/blob/v1.x/CHANGELOG.md)
- [Commits](https://github.com/axios/axios/compare/v1.10.0...v1.12.0)

---
updated-dependencies:
- dependency-name: axios
  dependency-version: 1.12.0
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-09-13 15:48:48 +00:00
dependabot[bot]andGitHub c55d59a545 build(deps): bump form-data from 4.0.3 to 4.0.4
Bumps [form-data](https://github.com/form-data/form-data) from 4.0.3 to 4.0.4.
- [Release notes](https://github.com/form-data/form-data/releases)
- [Changelog](https://github.com/form-data/form-data/blob/master/CHANGELOG.md)
- [Commits](https://github.com/form-data/form-data/compare/v4.0.3...v4.0.4)

---
updated-dependencies:
- dependency-name: form-data
  dependency-version: 4.0.4
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-07-22 13:15:42 +00:00
tiennm99 c889488998 feat: remove debug log 2025-07-08 13:07:00 +07:00
tiennm99 5d03ca5edf feat: handle for missing data days 2025-07-08 12:35:05 +07:00
tiennm99 f52d0a7757 fix: a day off on input 2025-07-08 12:27:34 +07:00
tiennm99 12a0710cda feat: update view 2025-06-27 22:48:24 +07:00
tiennm99 f1574b9717 feat: add speed insights 2025-06-27 22:37:10 +07:00
tiennm99 a59418e1d2 feat: add analytics 2025-06-27 22:30:24 +07:00
tiennm99 7a4bc932d2 feat: update README 2025-06-27 22:17:34 +07:00
tiennm99 452d826a77 feat: tuning views 2025-06-27 22:15:10 +07:00
tiennm99 30e5224f50 feat: refactor 2025-06-27 22:07:15 +07:00
tiennm99 d83a694cc9 feat: date picker 2025-06-27 21:55:43 +07:00