How krezzy88/sochat works
SổChat is a Vietnamese personal-finance workspace whose central flow is chat message → extraction proposal → user review and confirmation → auditable ledger entry. The React client calls a session- and CSRF-protected Express API; deterministic parsing is primary, with guarded Gemini extraction available for ambiguous input. The API persists exact integer VND data in PostgreSQL and also serves analytics, budgets, goals, assistant answers, and opt-in semantic search. Several feature modules were not sampled; their presence and capabilities are documented in README.md, so those branches are shown without claiming unsampled implementation details.
Main entry points: app.ts HTTP application · api.ts JSON API client · App.tsx Finance workspace · hybrid.ts Hybrid extraction
Components 26
Finance workspace
- Finance workspace
apps/web/src/App.tsx - Chat and drafts
apps/web/src/pages/Chat.tsx - Ledger management
apps/web/src/pages/Transactions.tsx - Analytics dashboard
apps/web/src/pages/Dashboard.tsx - Category budgets
apps/web/src/pages/Budgets.tsx - Savings goals
apps/web/src/pages/Goals.tsx - Ledger assistant
apps/web/src/pages/QueryPanel.tsx - Semantic search
apps/web/src/pages/SemanticSearch.tsx - Account settings
apps/web/src/pages/Settings.tsx - JSON API client
apps/web/src/api.ts
API and extraction
- HTTP application
apps/api/src/http/app.ts - Draft revision
apps/api/src/http/revision.ts - Question interpretation
apps/api/src/http/assistant.ts - Semantic endpoints
apps/api/src/http/semantic.ts - Finance operations
apps/api/src/http/repository.ts - Hybrid extraction
apps/api/src/extraction/hybrid.ts - Gemini adapter
apps/api/src/extraction/provider.ts
Ledger and providers
- Extraction records
apps/api/src/extraction/store.ts - PostgreSQL ledger
apps/api/src/db/repositories.ts - Tenant sessions
apps/api/src/db/tenant.ts
Language processing
- Vietnamese parser
packages/parser/src/index.ts - Amount parsing
packages/parser/src/amounts.ts - Date resolution
packages/parser/src/dates.ts - Category classification
packages/parser/src/classify.ts
Other components
- Finance user
- Google Gemini
Connections 33
- Finance user → Finance workspace: uses
README.md - Finance workspace → Chat and drafts: opens
apps/web/src/App.tsx - Finance workspace → Ledger management: opens
apps/web/src/App.tsx - Finance workspace → Analytics dashboard: opens
apps/web/src/App.tsx - Finance workspace → Category budgets: opens
README.md - Finance workspace → Savings goals: opens
README.md - Finance workspace → Account settings: opens
apps/web/src/App.tsx - Chat and drafts → JSON API client: requests
apps/web/src/pages/Chat.tsx - Ledger management → JSON API client: requests
README.md - Analytics dashboard → JSON API client: requests
README.md - Category budgets → JSON API client: requests
README.md - Savings goals → JSON API client: requests
apps/web/src/pages/Goals.tsx - Ledger assistant → JSON API client: requests
apps/web/src/pages/QueryPanel.tsx - Semantic search → JSON API client: requests
apps/web/src/pages/SemanticSearch.tsx - Account settings → JSON API client: requests
README.md - JSON API client → HTTP application: calls
apps/web/src/api.ts - HTTP application → Tenant sessions: scopes requests
apps/api/src/http/app.ts - HTTP application → Hybrid extraction: extracts drafts
apps/api/src/http/app.ts - HTTP application → Draft revision: revises drafts
apps/api/src/http/app.ts - HTTP application → Question interpretation: interprets questions
apps/api/src/http/app.ts - HTTP application → Semantic endpoints: routes search
apps/api/src/http/app.ts - HTTP application → Finance operations: serves ledger
README.md - Hybrid extraction → Vietnamese parser: parses rules
apps/api/src/extraction/hybrid.ts - Hybrid extraction → Gemini adapter: requests extraction
apps/api/src/extraction/hybrid.ts - Hybrid extraction → Extraction records: checks limits
apps/api/src/extraction/hybrid.ts - Gemini adapter → Google Gemini: calls API
README.md - Semantic endpoints → Extraction records: uses embeddings
apps/api/src/http/semantic.ts - Finance operations → PostgreSQL ledger: reads and writes
README.md - Vietnamese parser → Amount parsing: extracts amounts
packages/parser/src/index.ts - Vietnamese parser → Date resolution: resolves dates
packages/parser/src/index.ts - Vietnamese parser → Category classification: classifies items
packages/parser/src/index.ts - Ledger assistant → HTTP application: asks ledger
README.md - Semantic search → HTTP application: searches notes
README.md