Skip to content

feat: Pluggable bank connector architecture#665

Open
flaggdavid-source wants to merge 1 commit intorohitdash08:mainfrom
flaggdavid-source:feature/bank-connector-architecture
Open

feat: Pluggable bank connector architecture#665
flaggdavid-source wants to merge 1 commit intorohitdash08:mainfrom
flaggdavid-source:feature/bank-connector-architecture

Conversation

@flaggdavid-source
Copy link
Copy Markdown

Summary

Implements a pluggable architecture for bank integrations as requested in issue #75.

Changes

New Files

  1. app/services/bank_connectors/__init__.py - Module entry point

  2. app/services/bank_connectors/base.py - Abstract base class BankConnector defining the interface:

    • connector_type / display_name properties
    • connect() / disconnect() methods
    • import_transactions(from_date, to_date) - Import transactions within date range
    • refresh_transactions(from_date) - Get new transactions since last sync
    • get_account_balance() - Get current balance
    • validate_credentials() - Validate credentials
  3. app/services/bank_connectors/registry.py - Registry for managing connectors

  4. app/services/bank_connectors/mock.py - Mock connector for testing/development

  5. app/routes/bank_connectors.py - REST API endpoints:

    • GET /bank-connectors/types - List available connector types
    • GET /bank-connectors - List user's connectors
    • POST /bank-connectors - Create a connector
    • POST /bank-connectors/<id>/import - Import transactions
    • POST /bank-connectors/<id>/refresh - Refresh transactions
    • GET /bank-connectors/<id>/balance - Get account balance
  6. tests/test_bank_connectors.py - 16 unit tests (all passing)

Modified Files

  • app/db/schema.sql - Added bank_connectors table
  • app/models.py - Added BankConnector model
  • app/routes/__init__.py - Registered bank_connectors blueprint

Acceptance Criteria Met

Connector interface - Abstract base class with all required methods
Import & refresh support - Both methods implemented with date filtering
Mock connector included - Full mock implementation for testing

Testing

All 16 tests pass:

tests/test_bank_connectors.py::TestConnectorRegistry - 3 passed
tests/test_bank_connectors.py::TestMockConnector - 10 passed  
tests/test_bank_connectors.py::TestTransactionModel - 1 passed
tests/test_bank_connectors.py::TestConnectorConfig - 2 passed

@flaggdavid-source flaggdavid-source force-pushed the feature/bank-connector-architecture branch from 43a409e to 695b0bc Compare April 3, 2026 00:12
- Add BankConnector abstract base class with import/refresh methods
- Add ConnectorConfig and Transaction dataclasses with proper typing
- Add ConnectorRegistry for managing connector types
- Add MockConnector for testing
- Add BankConnectorConfig model for storing connector configs
- Add REST API routes for connector management
- Add comprehensive tests for the connector architecture

Acceptance criteria met:
- Connector interface: BankConnector abstract class with import_transactions and refresh methods
- Import & refresh support: Full API endpoints for importing transactions and refreshing connections
- Mock connector included: MockConnector implementation for testing
@flaggdavid-source flaggdavid-source force-pushed the feature/bank-connector-architecture branch from 695b0bc to 52c4762 Compare April 3, 2026 09:12
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant