New Vite + TypeScript UI for transaction analysis (rules editor, categories, subscriptions)#78
Open
ssubbotin wants to merge 2 commits into
Open
New Vite + TypeScript UI for transaction analysis (rules editor, categories, subscriptions)#78ssubbotin wants to merge 2 commits into
ssubbotin wants to merge 2 commits into
Conversation
A new client-side SPA under app/ (Vite 5 + React 18 + TypeScript) for navigating and analyzing the bank/order data, intended to replace the Create-React-App UI. Privacy-first: all data stays in the browser localStorage, no runtime network calls; reuses the patterns.json classifier. Tabs: - Обзор — monthly cash-flow KPIs (income/outflow/net/savings, vs prior month), 12-month chart, biggest movers; opens on the latest complete month. - Транзакции — virtualized ledger, faceted filter rail, real-spending / all-movements toggle, inline + bulk categorization, coverage bar, and a group-by-merchant view sortable by operation count. - По категориям — per-category monthly spend trend with an average line and a subcategory breakdown. - Правила — categorization-rules editor: edit the mask (substring or /regex/), inspect matched transactions, delete; sortable, state in the URL. - Оптимизация — recurring-subscription detector with a monthly-commitment total. Also: Авто and Бизнес top-level categories; the URL hash encodes page state (active tab, sort, filters); a file-import button. deploy.yml is switched to build app/ and publish app/dist (Node 20). The data pipeline (parse/categorize/classify/aggregate/subscriptions) is a typed-TypeScript mirror of src/db.js and utils.py. 64 Vitest tests; build clean.
a788903 to
2d975da
Compare
…hree-way logic mirror)
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
A from-scratch Vite + React 18 + TypeScript single-page app under
app/for navigating and analyzing the data, intended to replace the current Create-React-App UI. It keeps the project's privacy-first model — all data stays in the browserlocalStorage, nothing leaves the device — and reuses the existingpatterns.jsonclassifier.The focus is family financial oversight: separating real spending from money movement (FX, cash withdrawals, transfers, crypto), fast categorization with editable rules, subscription detection, and per-category trends.
What's included
New app at
app/, with tabs:/regex/), inspect-matched-transactions, and delete. Sortable, with state in the URL.Also:
patterns.json..github/workflows/deploy.ymlis switched to buildapp/and publishapp/dist/(Node 20,npm ci). Merging this deploys the new app tortxdata.github.io. The legacy CRA app stays in the repo (rootsrc/) but is no longer the deploy target. Happy to instead keep the current deploy and land the app side-by-side, so you can flip it whenever you're ready — just say the word.Stack & testing
Vite 5, React 18, TypeScript (strict), Tailwind v4, shadcn/ui (@base-ui), TanStack Table/Virtual, Recharts. No runtime network calls; a build-time CSP
<meta>enforces the privacy posture.Validated end-to-end against a real 12-month export.
Notes
app/src/lib/*alongsidesrc/db.jsandutils.py;CLAUDE.mddocuments keeping the FX rates and positional field indices in sync.CLAUDE.mdand an implementation-plan doc underdocs/— easy to drop if you'd rather not keep them.