Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
44 commits
Select commit Hold shift + click to select a range
13bec4e
Merge pull request #1 from toshi38/toshi38/test
toshi38 Jul 25, 2025
b5839e1
Add workflow
toshi38 Jul 25, 2025
7335cad
Don't fail if upload of coverage fails
toshi38 Jul 25, 2025
4fa7f05
Merge pull request #2 from toshi38/toshi38/workflow
toshi38 Jul 25, 2025
b63355e
Add SheetJS library for Excel support
toshi38 Jul 25, 2025
56f02a7
Add Excel parsing capability to DataObject class
toshi38 Jul 25, 2025
67d2ab5
Enable Excel file uploads in UI and directives
toshi38 Jul 25, 2025
1a16793
Add multi-sheet support and Excel UI enhancements
toshi38 Jul 25, 2025
a79809e
Add comprehensive Excel testing and update documentation
toshi38 Jul 25, 2025
0a8c03e
Fix Excel file parsing with format-specific handling and validation
toshi38 Jul 25, 2025
a52770d
Fix Excel file loading when selected manually
toshi38 Jul 25, 2025
42a87c8
Clean up debug code and fix CSV functionality and tests
toshi38 Jul 25, 2025
e9a545e
Clean up console.error output in tests
toshi38 Jul 25, 2025
08ee1ac
Add Excel files to .gitignore to prevent accidental commits
toshi38 Jul 25, 2025
1fe0a1f
Update UI to show correct file type instead of hardcoded 'CSV'
toshi38 Jul 25, 2025
d490ceb
Add Excel test coverage and clean up console errors
toshi38 Jul 25, 2025
5fbd085
Fix Excel worksheet selection bug for multi-sheet files
toshi38 Jul 26, 2025
46fe3a7
Refactor file processing architecture for unified data handling
toshi38 Jul 26, 2025
3d61133
Extract shared file processing utilities into FileUtils module
toshi38 Jul 26, 2025
d4656ca
Remove unnecessary scope wrapper functions for FileUtils
toshi38 Jul 26, 2025
97d7d04
Consolidate file utilities and remove redundant functions
toshi38 Jul 26, 2025
2e72d28
Merge pull request #3 from toshi38/toshi38/excel
toshi38 Jul 26, 2025
5ce11eb
Setup Prettier and lint-staged with Husky
toshi38 Jul 26, 2025
d9caa0d
Prettier fixes
toshi38 Jul 26, 2025
3567413
Add workflow
toshi38 Jul 26, 2025
78f73c6
Fix formatting in yaml
toshi38 Jul 26, 2025
4aa0958
Merge pull request #4 from toshi38/toshi38/prettier
toshi38 Jul 26, 2025
49a4fe8
Add e2e tests
toshi38 Jul 26, 2025
d9ba002
Jest ignore playwright
toshi38 Jul 26, 2025
2bbda01
Merge pull request #5 from toshi38/toshi38/e2e
toshi38 Jul 26, 2025
c7f3349
Remove google tag
toshi38 Jul 27, 2025
ee29ec9
Move page to point at my fork
toshi38 Jul 27, 2025
14802b2
Add options after upload
toshi38 Jul 27, 2025
ed11321
Add reusable file parsing settings component
toshi38 Jul 27, 2025
9f9364c
Add tests
toshi38 Jul 27, 2025
a4ce10c
Merge pull request #6 from toshi38/toshi38/options-after-upload
toshi38 Jul 27, 2025
e8ce506
Add auto-matching configuration system
toshi38 Jan 10, 2026
e775ad2
Merge pull request #7 from toshi38/stelau/auto-select
toshi38 Jan 10, 2026
5b27bea
Fix auto-matching when switching between files with different startAtRow
toshi38 Jan 11, 2026
fa3f389
Add tests to improve coverage for auto-matching feature
toshi38 Jan 17, 2026
a406ee5
Merge pull request #8 from toshi38/stelau/auto-select
toshi38 Jan 17, 2026
3dcd6be
Add invert amount toggle for new YNAB format
toshi38 Jan 17, 2026
396ba42
Merge pull request #9 from toshi38/stelau/add-output-toggles
toshi38 Jan 17, 2026
47c5ae1
Add fix dates toggle to convert 2-digit years to 4-digit years
toshi38 Feb 28, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .babelrc
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
{
"presets": ["@babel/preset-env"]
}
}
51 changes: 51 additions & 0 deletions .github/workflows/e2e-tests.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
name: E2E Tests

on:
push:
branches: [main, gh-pages]
pull_request:
branches: [main, gh-pages]
merge_group:

jobs:
e2e:
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
browser: [chromium, firefox, webkit]
name: E2E Tests - ${{ matrix.browser }}

steps:
- uses: actions/checkout@v4

- name: Use Node.js 22.x
uses: actions/setup-node@v4
with:
node-version: "22.x"
cache: "npm"

- name: Install dependencies
run: npm ci

- name: Install Playwright Browsers
run: npx playwright install --with-deps ${{ matrix.browser }}

- name: Run E2E tests
run: npx playwright test --project=${{ matrix.browser }}

- name: Upload test results
uses: actions/upload-artifact@v4
if: ${{ !cancelled() }}
with:
name: playwright-report-${{ matrix.browser }}
path: playwright-report/
retention-days: 30

- name: Upload test videos
uses: actions/upload-artifact@v4
if: ${{ !cancelled() }}
with:
name: test-videos-${{ matrix.browser }}
path: test-results/
retention-days: 7
27 changes: 27 additions & 0 deletions .github/workflows/quality-check.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
name: Quality Check

on:
push:
branches: [main, gh-pages]
pull_request:
branches: [main, gh-pages]
merge_group:

jobs:
quality:
runs-on: ubuntu-latest

steps:
- uses: actions/checkout@v4

- name: Use Node.js 22.x
uses: actions/setup-node@v4
with:
node-version: "22.x"
cache: "npm"

- name: Install dependencies
run: npm ci

- name: Check Prettier formatting
run: npm run format:check
33 changes: 33 additions & 0 deletions .github/workflows/test.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
name: Run Tests

on:
push:
branches: [main, gh-pages]
pull_request:
branches: [main, gh-pages]
merge_group:

jobs:
test:
runs-on: ubuntu-latest

steps:
- uses: actions/checkout@v4

- name: Use Node.js 22.x
uses: actions/setup-node@v4
with:
node-version: "22.x"
cache: "npm"

- name: Install dependencies
run: npm ci

- name: Run tests with coverage
run: npm run test:coverage

- name: Upload coverage reports
uses: codecov/codecov-action@v5
with:
token: ${{ secrets.CODECOV_TOKEN }}
fail_ci_if_error: false
12 changes: 12 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,3 +1,15 @@
node_modules
*.log
.vscode
coverage/

# Excel files (to prevent accidental commits of sensitive data)
*.xls
*.xlsx
*.xlsm
*.xlsb

# Playwright
/test-results/
/playwright-report/
/playwright/.cache/
1 change: 1 addition & 0 deletions .husky/pre-commit
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
lint-staged
11 changes: 11 additions & 0 deletions .prettierignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
node_modules
coverage
*.log
.vscode
dist
build
tmp
*.min.js
*.min.css
playwright-report
test-results
28 changes: 16 additions & 12 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,17 +1,21 @@
# ynab-csv

Tool for making your CSV and Excel files ready to import into YNAB.

Tool for making your CSV files ready to import into YNAB.

http://aniav.github.io/ynab-csv/

http://toshi38.github.io/ynab-csv/

## How to Use

1. Visit the link above.
2. Drop or select the the csv file you want to make ready for YNAB.
3. For each column in the YNAB data file, choose which column you want to pull from your source data file.
4. Save the new YNAB file and you are ready to import that right into YNAB!
2. Drop or select the CSV or Excel file you want to make ready for YNAB.
3. For Excel files with multiple worksheets, select the desired worksheet from the dropdown.
4. For each column in the YNAB data file, choose which column you want to pull from your source data file.
5. Save the new YNAB file and you are ready to import that right into YNAB!

## Supported File Formats

- **CSV files** (.csv) - All standard CSV formats with configurable delimiters and encodings
- **Excel files** (.xlsx, .xls, .xlsm, .xlsb) - Full support for Excel spreadsheets including multi-sheet workbooks

## Multiple Profiles

Expand All @@ -37,7 +41,6 @@ To run the project locally using Docker Compose:

Your data never leaves your computer. All the processing happens locally.


## Reporting Issues

If you have any other issues or suggestions, go to https://github.com/aniav/ynab-csv/issues and create an issue if one doesn't already exist. If the issue has to do with your csv file, please create a new gist (https://gist.github.com/) with the content of the CSV file and share the link in the issue. If you tweak the CSV file before sharing, just make sure whatever version you end up sharing still causes the problem you describe.
Expand All @@ -46,10 +49,11 @@ If you have any other issues or suggestions, go to https://github.com/aniav/ynab

1. Fork and clone the project
2. `cd` into project
3. Run `npm install` # You will need to install node and npm if it is not already
4. Run `npm start` # when running in Windows, modify package.json and replace "open" with "start"
* Optional: run `npm run bs` instead to use [Browsersync](https://browsersync.io/)
3. Run `npm install` # You will need to install node and npm if it is not already
4. Run `npm start` # when running in Windows, modify package.json and replace "open" with "start"

- Optional: run `npm run bs` instead to use [Browsersync](https://browsersync.io/)

5. Make your changes locally and test them to make sure they work
6. Commit those changes and push to your forked repository
7. Make a new pull request

Loading
Loading