This app mimics the functionality of the popular Pocket app which is available to download in the play store. To try out this app you need to use the latest version of Android Studio Arctic Fox. The main aim of this app was to test the applicability of compose in a small sized offline app. There is no intention of releasing this app to the play store. Also note that, eventhough firebase authentication is used, the saved items for each user are not stored in the cloud. The app has reached a 'stable' and 'usable' state. But, testing the app was not the main focus. Hence, bugs are bound to exist.
Pocket-Material-3-Demo.mp4
Pocket-Demo.mp4
The overflow menu on the top bar will display the option to change the theme if, and only if, the device's current android version doesn't support dark mode. If it supports dark mode, then the theme of the app will match the current system theme.
- Entirely written in Kotlin.
- Hilt for dependency injection.
- Jetpack Compose for building the UI.
- Kotlin Coroutines for threading.
- Room for database.
- Timber for logging.
- DataStore for storing user preferences.
- Glide for image loading.
- Jsoup for parsing the website.
- Work Manager for background tasks.
- Firebase Authentication for user account creation and authentication.
- Accompanist for navigation animations,pager and pager indicators.
- Uses Material 3 components and also adds support for dynamic theming.
- Save URL's from any web browser using the share menu.
- Dark and light mode support.
- The app's theme matches the current system theme for all devices above API level 29 (Android 10).
- Ability to search through the list of saved urls.
- The user's theme preference will be saved, and it will be applied everytime the app is re-opened ( API level < 29).
- 'Loading' and 'refreshing' banners in the home screeen to notify the user that the list is in the process of being updated.
- Architecture components such as Room,Lifecycle and ViewModels are used.
- MVVM architecture is used.
- Source code conforms to the Kotlin coding conventions.
- Material design color system specification is used for assigning colors to the UI components.
- Commit messages follow the Angular specification for commit messages.(Note:Some early commits do not follow this convention.)