This project brings to the table set of best practices, tools, and solutions:
- 100% Kotlin
- Modern architecture (Clean Architecture, Multi-Module setup, Model-View-ViewModel)
- Android Jetpack
- Single-activity architecture
- CI/CD (AppCenter) and GitHub Actions
- Dependency Injection (Koin)
- Material Design
- Dark Theme
Currently available commands in production:
-
actions.intent.GET_THING - Easter egg in application, the real feature with search functionality will be available in the next feature drop.
Command example: Hey Google, search [felt hats] on lady happy
-
actions.intent.OPEN_APP_FEATURE - voice intent for opening main application screens:
Command example: Hey Google, open [catalog, about, news, settings] screen on lady happy
-
Kotlin - First class and official programming language for Android development.
-
Coroutines - Kotlin's way of way of writing asynchronous, non-blocking code
- StateFlow - notify views when the underlying data changes
- SharedFlow - notify multiple subscribers that data changes
-
Android Architecture Components - Collection of libraries that help you design robust, testable, and maintainable apps
- View Binding - Allows you to more easily write code that interacts with views
- ViewModel - Manage UI-related data in a lifecycle conscious way
- Saved State - Prevent data lost from system-initiated process death
-
Detekt - static code analysis tool for the Kotlin programming language
-
Koin - Dependency Injection Framework
-
Material Components for Android - Modular and customizable Material Design UI components for Android
-
Firebase libraries
- Firebase Analytics - Free app measurement solution that provides insight on app usage and user engagement
- Firebase Cloud Functions - Custom triggers for make some changes in Firestore database
- Firebase Crashlytics - Lightweight, realtime crash reporter that helps you track, prioritize, and fix stability issues that erode your app quality
- Firebase Firestore - Realtime data storage
- Firebase Performance - Service that helps to gain insight into the performance characteristics app
- Firebase Storage - Storage for images and files
- Step by step migration to Jetpack Compose
- Allow everyone to try Dynamic delivery with demo credentials
Other things feel free to request using issues
Just checkout the repository and build with gradle, necessary debug key stored inside the repository.
Support it by joining stargazers for this repository. ⭐
And follow me for my next creations! 🤩
This project follows multi-module structure:
Copyright 2021 Yahor Urbanovich
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.