🏛ïļ COMPONENT_DIAGRAM.md - System Component Diagram (āđāļœāļ™āļ āļēāļžāļ„āļ­āļĄāđ‚āļžāđ€āļ™āļ™āļ•āđŒāļ‚āļ­āļ‡āļĢāļ°āļšāļš)

This document illustrates the internal component layout and module interfaces of the SplitDee frontend and backend application.
āđ€āļ­āļāļŠāļēāļĢāļ‰āļšāļąāļšāļ™āļĩāđ‰āđāļŠāļ”āļ‡āđāļœāļ™āļœāļąāļ‡āļ‚āļ­āļšāđ€āļ‚āļ•āļŠāļąāļ”āļŠāđˆāļ§āļ™āļĢāļ°āļšāļšāļ„āļ­āļĄāđ‚āļžāđ€āļ™āļ™āļ•āđŒāđāļĨāļ°āļāļēāļĢāļ•āđˆāļ­āđ€āļŠāļ·āđˆāļ­āļĄāđ‚āļĄāļ”āļđāļĨāļ‚āļ­āļ‡āđāļ­āļ› SplitDee āļŦāļ™āđ‰āļēāļšāđ‰āļēāļ™āđāļĨāļ°āļŦāļĨāļąāļ‡āļšāđ‰āļēāļ™


ðŸ‡đ🇭 āļ āļēāļĐāļēāđ„āļ—āļĒ (āļŠāļģāļŦāļĢāļąāļšāļœāļđāđ‰āđƒāļŠāđ‰āļ‡āļēāļ™)

📊 āļŠāļĢāļļāļ›āđ‚āļ„āļĢāļ‡āļŠāļĢāđ‰āļēāļ‡āļ„āļ­āļĄāđ‚āļžāđ€āļ™āļ™āļ•āđŒāļĒāđˆāļ­āļĒāļ‚āļ­āļ‡āļĢāļ°āļšāļš

  • āļāļąāđˆāļ‡āđāļ­āļ›āđ‚āļĄāļšāļēāļĒ (Flutter Mobile Client Components):
    • UI Widgets & Pages: āļ§āļēāļ”āļˆāļąāļ”āļŦāļ™āđ‰āļēāļˆāļ­āļŦāļĨāļąāļāļ‚āļ­āļ‡āđāļ­āļ› āđ€āļŠāđˆāļ™ āļŦāļ™āđ‰āļēāļŦāļĨāļąāļāđāļŠāļ”āļ‡āļŠāļ–āļēāļ™āļ°āļŠāļąāļ•āļ§āđŒāđ€āļĨāļĩāđ‰āļĒāļ‡āđ‚āļĄāļˆāļī āđāļĨāļ°āļŦāļ™āđ‰āļēāļ•āļąāđ‰āļ‡āļŦāļēāļĢāļšāļīāļĨ
    • Riverpod State Controllers: āļˆāļąāļ”āđāļˆāļ‡āđāļĨāļ°āļ„āļ­āļĒāļ›āļĢāļ°āļĄāļ§āļĨāļˆāļģāļŠāļ–āļēāļ™āļ°āļ•āļąāļ§āđāļ›āļĢāđ€āļžāļ·āđˆāļ­āļŠāļąāđˆāļ‡āļ­āļąāļ›āđ€āļ”āļ•āļŦāļ™āđ‰āļēāļˆāļ­āļ—āļąāļ™āđ€āļĄāļ·āđˆāļ­āļĄāļĩāļāļēāļĢāđāļāđ‰āđ„āļ‚
    • Local Secure Storage: āļˆāļąāļ”āđ€āļāđ‡āļšāđāļĨāļ°āļĢāļąāļāļĐāļēāļ„āļ§āļēāļĄāļ›āļĨāļ­āļ”āļ āļąāļĒāļ•āļąāđ‹āļ§ JWT Access/Refresh Token āļšāļ™āļ„āļ§āļēāļĄāļ›āļĨāļ­āļ”āļ āļąāļĒāļ‚āļ­āļ‡āđ‚āļ—āļĢāļĻāļąāļžāļ—āđŒāļĄāļ·āļ­āļ–āļ·āļ­
    • HTTP Client (API client): āđ€āļŠāļ·āđˆāļ­āļĄāļ•āđˆāļ­āļŠāđˆāļ‡ REST API āđāļĨāļ°āļ—āļĢāļēāļ™āđāļ‹āļāļŠāļąāļ™ āļŦāļĢāļ·āļ­āļ•āđˆāļ­ WebSockets āļĢāļąāļšāļŠāđˆāļ‡āđāļŠāļ—āļŠāļ™āļ—āļ™āļēāļāļĨāļļāđˆāļĄāļŠāļ”
    • Camera Picker: āļ•āļąāļ§āļ”āļķāļ‡āļ›āļĢāļ°āļ•āļđāļāļĨāđ‰āļ­āļ‡āļĄāļ·āļ­āļ–āļ·āļ­āļ–āđˆāļēāļĒāļ āļēāļžāļŠāļĨāļīāļ›āđƒāļšāđ€āļŠāļĢāđ‡āļˆ
  • āļāļąāđˆāļ‡āđāļ­āļ›āļŦāļĨāļąāļ‡āļšāđ‰āļēāļ™ (FastAPI Backend Components):
    • API Routers: āļˆāļļāļ”āđ€āļŠāļ·āđˆāļ­āļĄāļ•āđˆāļ­āļ„āļąāļ”āļāļĢāļ­āļ‡āļ‚āļ­āļĒāļīāļ‡ API āļŠāļĩāđ‰āđ€āļ›āđ‰āļēāļ•āļąāļ§āļ™āļģāļ—āļēāļ‡āđ€āļ‚āđ‰āļēāļĢāļ°āļšāļšāļĒāđˆāļ­āļĒ
    • Auth Guard: āļĢāļ°āļšāļšāļ›āđ‰āļ­āļ‡āļāļąāļ™āđāļĨāļ°āļ–āļ­āļ”āļĢāļŦāļąāļŠ Token āļ„āļ§āļēāļĄāļ›āļĨāļ­āļ”āļ āļąāļĒāđ€āļ—āļĩāļĒāļšāļāļąāļš Redis Blacklist
    • UseCase Engine: āļ‚āļļāļĄāļžāļĨāļąāļ‡āđāļāļ™āļāļĨāļēāļ‡āļ›āļĢāļ°āļĄāļ§āļĨāļ•āļĢāļĢāļāļ°āļ˜āļļāļĢāļāļīāļˆāđ€āļ”āļĩāđˆāļĒāļ§āđ† (āđ€āļŠāđˆāļ™ āļāļēāļĢāđāļŠāļĢāđŒāđ€āļ‡āļīāļ™ āļāļēāļĢāļ•āļĢāļ§āļˆāļŠāļ­āļšāļŠāļĨāļīāļ›) āļ›āļĢāļēāļĻāļˆāļēāļāļāļēāļĢāļĒāļķāļ”āļ•āļīāļ”āļāļēāļ™āļ‚āđ‰āļ­āļĄāļđāļĨāļ āļēāļĒāļ™āļ­āļ
    • SQLAlchemy ORM: āđāļ›āļĨāļ„āļĨāļēāļŠāļ‚āđ‰āļ­āļĄāļđāļĨāđ‚āļ”āđ€āļĄāļ™āđ‚āļ”āđ€āļĄāļ™ āđ„āļ›āļŠāļąāđˆāļ‡āļ„āļģāļŠāļąāđˆāļ‡āļ„āļīāļ§āļĢāļĩāļāļēāļ™āļ‚āđ‰āļ­āļĄāļđāļĨ PostgreSQL
    • AI OCR Service: āļ•āļąāļ§āļ„āļļāļĄāļ‡āļēāļ™āļŠāļāļąāļ”āđāļŠāļāļ™āļŠāļĨāļīāļ›āļ˜āļ™āļēāļ„āļēāļĢāđāļĨāļ°āļāļĢāļ­āļ‡āļĢāļđāļ›āļ āļēāļž
  • āļ„āļĨāļąāļ‡āļ‚āđ‰āļ­āļĄāļđāļĨāđāļĨāļ°āļœāļđāđ‰āđƒāļŦāđ‰āļšāļĢāļīāļāļēāļĢāļ āļēāļĒāļ™āļ­āļ (Infrastructure):
    • PostgreSQL Database: āļāļēāļ™āļ‚āđ‰āļ­āļĄāļđāļĨāđ€āļŠāļīāļ‡āļŠāļąāļĄāļžāļąāļ™āļ˜āđŒāđ€āļāđ‡āļšāļ•āļēāļĢāļēāļ‡āļŦāļĨāļąāļ
    • Redis Cache: āļŦāļ™āđˆāļ§āļĒāļˆāļģāđāļĢāļĄāļšāļąāļ™āļ—āļķāļ Token āļĒāļāđ€āļĨāļīāļāļ”āđˆāļ§āļ™
    • Bank Verification API & FCM: API āļŠāļĨāļĩāļ›āļ˜āļ™āļēāļ„āļēāļĢāļ āļēāļĒāļ™āļ­āļ āđāļĨāļ°āļ„āļĨāļēāļ§āļ”āđŒāļŠāđˆāļ‡ Push āđāļˆāđ‰āļ‡āđ€āļ•āļ·āļ­āļ™āļ”āđˆāļ§āļ™āļ‚āļ­āļ‡āļāļđāđ€āļāļīāļĨ

🇎🇧 English (For AI Agents)

🗚ïļ Component Diagram

graph TD
    subgraph MobileClient [Flutter Mobile Client Components]
        UI[UI Widgets & Pages]
        StateCtrl[Riverpod State Controllers]
        SecureStorage[Local Secure Storage]
        HTTPClient[API client - HTTP/WS]
        CameraPicker[Camera & Gallery Picker]
        
        UI --> StateCtrl
        StateCtrl --> SecureStorage
        StateCtrl --> HTTPClient
        HTTPClient --> CameraPicker
    end

    subgraph BackendApp [FastAPI Backend Components]
        Router[API Routers & Controllers]
        AuthGuard[Auth Middleware / JWT Validator]
        UseCaseEngine[Use Case business logic Engine]
        SQLAlchemyORM[SQLAlchemy ORM & Models]
        SecurityUtil[Hasher & Token Generators]
        OCRService[AI OCR & Image Pre-processor]

        Router --> AuthGuard
        Router --> UseCaseEngine
        UseCaseEngine --> SQLAlchemyORM
        UseCaseEngine --> SecurityUtil
        UseCaseEngine --> OCRService
    end

    subgraph Infrastructure [Data Storage & External Services]
        Postgres[(PostgreSQL Database)]
        Redis[(Redis Cache)]
        BankAPI[Bank Slip verification API]
        FCM[Firebase Messaging Server]
    end

    HTTPClient -- HTTPS REST / WebSocket --> Router
    SQLAlchemyORM -- pg_driver --> Postgres
    AuthGuard -- Redis Client --> Redis
    UseCaseEngine -- HTTP Client --> BankAPI
    UseCaseEngine -- Firebase Admin SDK --> FCM

📝 Component Specifications

  • 1. Flutter Mobile Client Components
    • UI Widgets & Pages: Renders pages for Dashboard, Group Details, and Bills.
    • Riverpod State Controllers: Manages local state lifecycle, reloading UI widgets on updates.
    • Local Secure Storage: Securely persists JWT credentials on-device.
    • HTTP/WS Client: Executes async HTTP queries and WebSocket chat connections.
  • 2. FastAPI Backend Components
    • API Routers: Directs requests to specific presentation layer schemas and controllers.
    • Auth Guard: Middleware decoding credentials, checking Redis blacklists, and injecting user context.
    • UseCase Engine: Contains the pure domain business rules (creating bills, verifying slips) decoupled from ORMs.
    • SQLAlchemy ORM: Map models to PostgreSQL relational tables.
    • AI OCR Service: Processes receipt images and extracts Mini-QR identifiers.