Skip to content

feat: pluggable bank sync connector architecture (#75)#751

Open
alexchenai wants to merge 1 commit intorohitdash08:mainfrom
alexchenai:feat/bank-sync-connector-75
Open

feat: pluggable bank sync connector architecture (#75)#751
alexchenai wants to merge 1 commit intorohitdash08:mainfrom
alexchenai:feat/bank-sync-connector-75

Conversation

@alexchenai
Copy link
Copy Markdown

/claim #75

Summary

Pluggable bank sync connector architecture for importing transactions from any financial institution.

Features

  • BankConnector ABC: standard interface all connectors implement
  • Connector registry: @register_connector decorator, list_connectors(), create_connector() factory
  • SyncTransaction and SyncResult dataclasses for normalized output
  • Built-in connectors:
    • CSVFileConnector: import from CSV with date/amount/description column detection
    • MockBankConnector: synthetic transactions for testing, balance support
    • PlaidConnector: credential validation skeleton, ready for real API

REST API

  • GET /bank-sync/connectors - list available connectors
  • POST /bank-sync/validate - validate credentials for a connector
  • POST /bank-sync/import - import transactions
  • POST /bank-sync/balance - get account balance

Tests

31 tests: 24 pass, 7 skip (Redis/JWT)

- BankConnector ABC with validate_credentials, fetch_transactions, get_balance, refresh interface
- ConnectorConfig, SyncTransaction, SyncResult dataclasses
- Connector registry with @register_connector decorator and create_connector factory
- Built-in connectors: CSVFileConnector, MockBankConnector, PlaidConnector (skeleton)
- REST API: GET /bank-sync/connectors, POST /bank-sync/validate, POST /bank-sync/import, POST /bank-sync/balance
- CSV connector: column alias detection, date filtering, expense/income type detection
- Mock connector: deterministic synthetic transactions for testing, balance support
- Plaid connector: credential validation skeleton ready for real API integration
- 31 tests (24 pass, 7 skip Redis)

Closes rohitdash08#75
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant