Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/shade-sdev/secvault

A Password Manager built with Jetpack Compose
https://github.com/shade-sdev/secvault

desktop-app jetpack-compose jvm koin-kotlin kotlin material-ui modern-ui mvvm-architecture password-manager voyager-navigation

Last synced: about 2 months ago
JSON representation

A Password Manager built with Jetpack Compose

Awesome Lists containing this project

README

        

### Architecture

- **di/**: Contains dependency injection setup using Koin.
- `AppModule.kt`: Defines Koin modules for dependency injection.
- **repository/**: Contains data models and repository classes.
- `Person.kt`: Data class representing a person.
- `PersonRepository.kt`: Repository class for data operations.
- **ui/**: Contains UI-related code.
- **theme/**: Contains theme-related files for Jetpack Compose.
- `Color.kt`, `Shape.kt`, `Theme.kt`, `Type.kt`: Define colors, shapes, themes, and typography.
- **components/**: Contains reusable UI components.
- `PersonItem.kt`: Composable function for displaying a person item.
- **screens/**: Contains screen composables.
- `PersonScreen.kt`: Composable function for the person screen.
- `App.kt`: Main composable function for the application.
- **viewmodel/**: Contains ViewModel classes.
- `PersonViewModel.kt`: ViewModel for managing person data.
- `Main.kt`: Entry point of the application.

### Architecture Pattern

The architecture pattern to follow is MVVM (Model-View-ViewModel), which is well-suited for Jetpack Compose
applications.

### MVVM Components

- **Model**: Represents the data layer, including data classes and repository.
- `Person.kt`: Data class.
- `PersonRepository.kt`: Repository for data operations.
- **View**: Represents the UI layer, including composable functions.
- `PersonScreen.kt`: Screen composable.
- `PersonItem.kt`: UI component.
- **ViewModel**: Manages UI-related data and business logic.
- `PersonViewModel.kt`: ViewModel for person data.

src/

├── main/

│ ├── kotlin/

│ │ ├── com/

│ │ │ ├── yourapp/

│ │ │ │ ├── di/

│ │ │ │ │ └── AppModule.kt

│ │ │ │ ├── repository/

│ │ │ │ │ ├── Person.kt

│ │ │ │ │ └── PersonRepository.kt

│ │ │ │ ├── ui/

│ │ │ │ │ ├── theme/

│ │ │ │ │ │ ├── Color.kt

│ │ │ │ │ │ ├── Shape.kt

│ │ │ │ │ │ ├── Theme.kt

│ │ │ │ │ │ └── Type.kt

│ │ │ │ │ ├── components/

│ │ │ │ │ │ └── PersonItem.kt

│ │ │ │ │ ├── screens/

│ │ │ │ │ │ └── PersonScreen.kt

│ │ │ │ │ └── App.kt

│ │ │ │ ├── viewmodel/

│ │ │ │ │ └── PersonViewModel.kt

│ │ │ │ └── Main.kt

│ ├── resources/

│ │ └── …