ðïļ 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.