File sharing desktop application
See also:
- Clean Architecture
- Domain driven design
- Reactive programming
- Functional programming - monadic error handling, pipeline, clean functions (side effects control)
- Screaming architecture (features)
- MVVM
- Unidirectional Data Flow (state reduction)
Infrastructure:
- Socket server (desktop specific)
Data layer:
- Socket client
Domain layer:
- Entities (
File
,Folder
, etc.) - Interactors (
Start sharing
,Share file
, etc.) FileRepository
FolderRepository
TransferService
Framework:
- DI
- Application
- Navigation
- Presentation (viewModels, screens)
- Folder sharing mode
- Offline mode
- Share file (if sharing)
- Remove file (if sharing)
- Download file
- Show image content
- Show file details (carousel)
- Files selection
- Selected files actions
- Download multiple files as ZIP
- Auto reconnection
- Kotlin
- Jetpack Compose
- Koin DI
- Java WebSocket
- Utilities