Comlib is a system that aims to complement your reading habits. You log on to the system track what you're reading, share reading materials with others and even set milestones.
The modern society requires individuals to stay constantly updated on various aspects of the world. The exchange of ideas, beliefs, and opinions is happening at a rapid pace. Young people need to be consistently aware of what is happening in the world around them.
Reading is one of the proven ways to enhance the exchange of information, especially in a world where information is ubiquitous. Establishing a strong foundation in the principles that shape our lives is an effective way to promote this exchange. But how do we ensure that we regularly update ourselves without the need to purchase books every time, which can be both expensive and time-consuming?
Enter ComLib. We strive to simplify the process of book exchange for readers, effectively fostering the development of a reading culture.
graph TD
Comlib-->Backend
Comlib-->Frontend
Backend-->NodeJS+Express+MongoDB
Frontend-->Android
Comlib attempts use of the latest libraries and tools:
-
Entirely written in Kotlin
-
Ui is completely written in Jetpack compose
-
Uses Hilt for Dependency Injection.
-
Uses Recommended architecture and Architectural components - Room, Lifecycle, Navigation throughout.
Module | Purpose |
---|---|
:app | Serves as the entry point |
:core:designsystem | Contains all things design |
:core:util | Contains all utilities eg String extension functions |
:core:ui | Contains common ui components |
:core:auth | Contains all logic for authentication flow |
:core:common | Contains logic that is shared commonly in more than one module |
:core:data | Combines all the data from the various sources |
:core:database | Contains database implementations |
:core:data-test | Contains all testing logic for data module |
:core:datastore | Contains data from the datastore prefs |
:core:testing | Contains testing logic that is common in more several modules |
:core:local | Contains data from disk eg. usage statistics |
:core:model | Contains all data model definitions |
:core:network | Contains logic for making API interface definitions. |
:core:domain | Contains use case implementation |
:feauture:auth | Auth ui logic |
:feature:add_book | UI logic for adding new books to the library |
:feature:book_detail | Book detail ui |
:feature:books | List of available books |
:feature:genre_setup | Preferred genres selection |
:feature:my_books | Books belonging to current user |
:feature:profile | User profile and setting information |
:feature:streak | UI logic for creating a new reading streak. |
You need to be using the latest Android studio (Hedgehog and newer) to build and run the app.
Comlib employs the use of Gradle conventional plugins for faster and efficient build times.
ComLib uses Spotless and Ktlint is used to catch bugs before they propagate in production.
If you've found an error in this sample please feel free to file an issue.
Patches are encouraged and maybe submitted by forking this project and submitting a pull request.
The app follows this design.
Copyright 2023 Denis Githuku
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
https://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.
-
Streak state widget
-
Ask Gemini - summary and book plot.
-
Port to multiplatform
-
Periodic reminders