Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/numq/stash-desktop
Kotlin Jetpack Compose Desktop Clean Architecture file sharing application
https://github.com/numq/stash-desktop
clean-architecture coroutines coroutines-flow event-driven-architecture file-sharing functional-programming jetpack-compose-desktop koin-kotlin kotlin kotlin-desktop qrcode-generator websockets websockets-client websockets-server zxing-qrcode
Last synced: about 8 hours ago
JSON representation
Kotlin Jetpack Compose Desktop Clean Architecture file sharing application
- Host: GitHub
- URL: https://github.com/numq/stash-desktop
- Owner: numq
- License: mit
- Created: 2022-07-28T16:50:07.000Z (over 2 years ago)
- Default Branch: master
- Last Pushed: 2024-03-27T21:57:33.000Z (8 months ago)
- Last Synced: 2024-03-27T22:43:59.514Z (8 months ago)
- Topics: clean-architecture, coroutines, coroutines-flow, event-driven-architecture, file-sharing, functional-programming, jetpack-compose-desktop, koin-kotlin, kotlin, kotlin-desktop, qrcode-generator, websockets, websockets-client, websockets-server, zxing-qrcode
- Language: Kotlin
- Homepage:
- Size: 182 KB
- Stars: 2
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Stash
File sharing desktop application
**See also:**
[Android client](https://github.com/numq/Stash)
[React Electron](https://github.com/numq/stash-electron)
## Architecture
- **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)*## Structure
![Overview](./media/stash-overview.png)
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)**## Features:
- **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**## Tech:
- **Kotlin**
- **Jetpack Compose**
- **Koin DI**
- **Java WebSocket**
- **Utilities**