How destinym01/accounting-bot works
AccBot is an active personal-finance web dashboard backed by a JWT-protected NestJS API; the README says the Telegram bot is retired. The main workflow is bank mail ingestion into categorized transactions and balance updates, followed by web review, correction, and reporting. Other distinct workflows cover budgets, cash envelopes, recurring bookings, categories, and merchant memory. The graph emphasizes documented features and sampled controller-to-service calls; several API feature internals are represented at their exact controller paths because their service code was not sampled.
Main entry points: api.service.ts API client · ingestion.service.ts Ingestion runner · app.routes.ts Dashboard pages · ingestion.controller.ts Ingestion controls
Components 28
Web dashboard
- Dashboard pages
web/src/app/app.routes.ts - API client
web/src/app/core/services/api.service.ts
REST API
- JWT authentication
api/src/auth/jwt.guard.ts - Settings
api/src/settings/settings.controller.ts
Mail ingestion
- Ingestion controls
api/src/ingestion/ingestion.controller.ts - Ingestion runner
api/src/ingestion/ingestion.service.ts - Bank mail client
api/src/ingestion/mail.client.ts - Transaction categorizer
api/src/ingestion/categorizer.service.ts - Ingestion status
api/src/ingestion/ingestion-status.service.ts
Finance features
- Transactions
api/src/transactions/transactions.controller.ts - Balance ledger
api/src/shared/ledger/ledger.service.ts - Balance history
api/src/balance/balance.controller.ts - Budgets
api/src/budget/budget.controller.ts - Cash envelopes
api/src/cash/cash.controller.ts - Recurring rules
api/src/recurring/recurring.controller.ts - Categories
api/src/categories/categories.controller.ts - Merchant memory
api/src/merchants/merchants.controller.ts
Insights and reports
- Statistics
api/src/statistics/statistics.controller.ts - Analytics
api/src/analytics/analytics.controller.ts - Period comparison
api/src/compare/compare.controller.ts - Financial tips
api/src/tips/tips.controller.ts - Email reports
api/src/reports/reports.controller.ts - Growth calculator
api/src/calculator/calculator.controller.ts
Other components
- Account owner
- MongoDB
- Bank mailbox
- Mistral AI
- Gmail SMTP
Connections 40
- Account owner → Dashboard pages: uses
- Dashboard pages → JWT authentication: guards routes
- Dashboard pages → API client: requests data
- API client → Transactions: calls API
- API client → Balance history: calls API
- API client → Budgets: calls API
- API client → Cash envelopes: calls API
- API client → Recurring rules: calls API
- API client → Categories: calls API
- API client → Merchant memory: calls API
- API client → Settings: calls API
- API client → Statistics: calls API
- API client → Analytics: calls API
- API client → Period comparison: calls API
- API client → Financial tips: calls API
- API client → Email reports: calls API
- API client → Growth calculator: calls API
- Account owner → Ingestion controls: requests mail check
- Ingestion controls → Ingestion runner: runs check
- Ingestion controls → Ingestion status: reads status
- Ingestion runner → Bank mail client: fetches messages
- Bank mailbox → Bank mail client: provides messages
- Ingestion runner → Transaction categorizer: categorizes unknowns
- Ingestion runner → Merchant memory: uses remembered categories
- Ingestion runner → Balance ledger: applies booked entries
- Ingestion runner → Ingestion status: records run
- Transactions → Balance ledger: updates balance
- Transactions → MongoDB: reads and writes
- Balance history → MongoDB: reads and writes
- Budgets → MongoDB: reads and writes
- Cash envelopes → MongoDB: reads and writes
- Recurring rules → MongoDB: reads and writes
- Categories → MongoDB: reads and writes
- Merchant memory → MongoDB: reads and writes
- Settings → MongoDB: reads and writes
- Statistics → MongoDB: queries
- Analytics → MongoDB: queries
- Period comparison → Mistral AI: requests narrative
- Financial tips → Mistral AI: requests tips
- Email reports → Gmail SMTP: sends email