Gather and organize everything that matters
This application allows users to easily receive and organize shared data, such as links, text, and images. Create your points of interests easily with minimalistic interface:
- Use wizard to automatically parse link content
- Create your own custom categories
- Leave a message for yourself from future. The app also allows for easy searching and filtering of stored information, making it easy to find the information you need quickly.
Current version of application is offline only. It is a work in progress. So stay tuned for future updates.
This app was created to showcase the latest technology in android development. This application is implemented entirely using Kotlin and Jetpack Compose.
APK - Debug v1.0 You can also clone project and build debug version. Note: Google Sign-In will not be fully functional in this case
This application follows the classic SOLID based clean architecture approach. This approach differs from official architecture guidance, but it is actively used by many developers. With this approach, the amount of boilerplate code increases, in favor of standardization and scalability.
The Points of interests application follows modularization strategy know as "by layer". Note: For larger projects i would recommend using by layer and by feature strategy.
For more details about modularization: By layer or feature? Why not both?! Guide to Android app modularization
In this project i tried to cover as many interesting learning cases as i could. So this section will describe interesting features and use cases, as well as used technologies
3rd party libraries:
Features:
3rd party libraries and technologies used:
- Hilt for dependencies injection
- Mockito for unit testing of UseCases
- Kotlin flows
- Room database
- Jetpack Datastore
- Protobuf
- Retrofit
- OkHttp
- Jsoup
Testing:
Features:
Learning cases:
- Room + Kotlin flows
- Room and Dynamic ORDER BY
- Room and FTS (full test search): Look how to define models, add entities to the data base, create search query function and perform the search
- How to parse HTML page with Jsoup
- How to use Proto DataStore: Look how to setup gradle file: protobuf {} section, define proto models, provide datastore using Hilt, create serializers and finally how to use data store
- How to test using Hilt and Robolectric
- How to test using Hilt and Robolectric and Mockito for maximum flexibility
- How to test Room database using Hilt's @TestInstallIn and Room's inMemoryDatabaseBuilder
- How to test Jetpack DataStore based datasource using Hilt's @TestInstallIn and TemporaryFolder
- How to test operations with files using TemporaryFolder
3rd party libraries and technologies used:
- Compose
- Android ViewModel
- Navigation Compose
- Splash Screen Api
- Coil for Compose image loading library
- Flow layout
- Hilt for dependencies injection
- Work Manager for unit testing of UseCases
- Kotlin flows
- Google Sign In
Testing:
Learning cases:
Work in progress, please stay tuned for this section =)
Points of interest is distributed under the terms of the Apache License (Version 2.0). See the license for more information.