Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/oblakr24/chat-backup-app
An SMS messenger app which supports editing, exporting and importing your SMS messages. Mainly done for tech-demonstration and hobby purposes.
https://github.com/oblakr24/chat-backup-app
android compose-navigation datastore hilt hilt-android jetpack-compose kotlin kotlinx-coroutines kotlinx-serialization messenger molecule
Last synced: 30 days ago
JSON representation
An SMS messenger app which supports editing, exporting and importing your SMS messages. Mainly done for tech-demonstration and hobby purposes.
- Host: GitHub
- URL: https://github.com/oblakr24/chat-backup-app
- Owner: oblakr24
- License: apache-2.0
- Created: 2023-02-07T15:31:53.000Z (almost 2 years ago)
- Default Branch: main
- Last Pushed: 2024-06-06T19:12:41.000Z (7 months ago)
- Last Synced: 2024-06-06T20:59:29.702Z (7 months ago)
- Topics: android, compose-navigation, datastore, hilt, hilt-android, jetpack-compose, kotlin, kotlinx-coroutines, kotlinx-serialization, messenger, molecule
- Language: Kotlin
- Homepage:
- Size: 519 KB
- Stars: 2
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Chat Backup
An fully-featured SMS app with ability to export and import your SMS conversations.This is a tech-demonstration app showcasing the latest Android tech stack while solving a real-world use-case.
## Features:
1. Fully offline
2. Send, receive SMS messages
3. Quick reply to an SMS
4. No ads or payments
5. Listing of current conversations and messages
6. Search with highlighting, select, delete and export functionalities for conversations
7. Import a previously exported file to preview and (selectively) save the messages to the device
8. Open architecture allowing for future extensions and other formats
9. Togglable dark-light theming## Video
https://user-images.githubusercontent.com/32245831/221344724-336c23ea-c49e-4ca9-9392-284b9ed760f4.mov
## Tech stack
This is a single-activity app fully built with Jetpack Compose screens.
Each screen relies on a navigation route usd by Compose Navigation and a Hilt-instantiated viewmodel.
A screen depends on a single UI state model to make it completely reliant on the viewmodel-defined source of truth.
The UI state is constructed using Molecule in the viewmodel from smaller pieces of state; this way the architecture is simpler, more controllable and more extensible.The sharing (exporting and importing of app-generated files) is delegated to system utilities, so the security and privacy is guaranteed by the system and the control is given to the user on how to share.
Specific dependencies:
- [Jetpack Compose](https://developer.android.com/jetpack/compose) and [Compose Navigation](https://developer.android.com/jetpack/compose/navigation): UI
- [Hilt](https://dagger.dev/hilt/): Dependency injection
- [Molecule](https://github.com/cashapp/molecule): usage of Compose Compiler in the VM layer for reactive state construction
- [KotlinX Serialization](https://github.com/Kotlin/kotlinx.serialization) for serialization and deserialization of models into and from files
- [Extended Material icons](https://developer.android.com/jetpack/androidx/releases/compose-material) for vector images
- [Accompanist Permissions](https://github.com/google/accompanist/tree/main/permissions) for Composable permission handling
- [DataStore](https://developer.android.com/topic/libraries/architecture/datastore) for persisting user preferences## FAQ
How do you use this app?1. Use it as your default SMS app
2. Use the app on any phone to export the selected messages
3. Share the messages to another device
4. Use the app on another device to open the file
5. Click the "Save" button on selected conversations to save them to the device.What if I want a different export/import format?
The app currently does not support other formats. However, you can submit an issue request on github or contribute.
Does this app send any of my data?
No - this app does not communicate with any servers.
It is up to you how to share the exported file.## Screenshots
SMS Browsing & Search
Dark Mode
Conversation
Compose