Skip to content

DenisGithuku/comlib-android-client

Repository files navigation

Comlib (work in progress 👷 🛠️)

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.

Problem statement

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.

Tech stack

graph TD
Comlib-->Backend
Comlib-->Frontend
Backend-->NodeJS+Express+MongoDB
Frontend-->Android
Loading

Android development

Comlib attempts use of the latest libraries and tools:

Modules

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.

Development setup

You need to be using the latest Android studio (Hedgehog and newer) to build and run the app.

Code style

Comlib employs the use of Gradle conventional plugins for faster and efficient build times.

Linting

ComLib uses Spotless and Ktlint is used to catch bugs before they propagate in production.

Contributing

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.

License

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.

Planned

  • Streak state widget

  • Ask Gemini - summary and book plot.

  • Port to multiplatform

  • Periodic reminders

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published