AlinChinese is based on Multi-Module Clean Architecture using Dagger Hilt, Coroutines, Flow, Android Jetpack and Unidirectional Data Flow in the presentation layer.
It would be reasonable to switch from "Provides" to "Binds" annotation in the Hilt modules whenever it is possible to prevent generating unnecessary InjectClassFactories.
It is a good idea to introduce pre-defined user roles to get the ability to control lessons visibility and other parameters for different types of users on the app.
Why do we possibly need that?
To moderate newly added lessons before the regular user would be up to read them.
To introduce lessons that are available only for specific users.
The current behavior of the button does not indicate whether a lesson is in the favorite list of the logged-in user. A better approach would be to change the buttons icons based on the presence of the selected lesson in the local database.