This is a dating application that is fully built with Jetpack compose. NOTE:
the application is still under very heavy development and your contrubutions are welcome. Chekout the [issues]() section and help work some of the pending issues, enhancements and bugs. Feel free to also add any issues or bugs detected.
To run the application you download the version present on Playstore or clone this project into your machine. Once you clone you'll need to connect the project to firebase and add the google-services.json
file to this path:
app\
src\
dev
NOTE
To simulate the real feel of the application you'll have to create two or three accounts and select different genders and interests in the account creation process. To make this entire process easier you can use this google-services.json
that already has test users that i am using for development phase.
I am using product flavours and have three flavours dev
, staging
and production
. Once you have added the google-services.json
file to the dev flavour variant path,
You have to check and confirm that you have selected the devDebug
Build variant. To do this:
Build Variants
devDebug
NOTE
You will also need to add this to your local.properties
file.
MAPS_API_KEY = API_KEY_HERE
ADMOB_APP_ID = APP_ID_HERE
BANNER_ADD_ID = "BANNER_ID_HERE"
To contribute to the project clone it and make your changes. Once done with making changes, on the terminal of your android studio run
./gradlew spotlessApply
./gradlew ktlintFormat
./gradlew ktlintcheck
Once the code passes all ktlint checks push the code and open a Pull Request
Take a look at the contributors for this project. 😎
Dagger-Hilt- a dependency injection library for Android that reduces the boilerplate of doing manual dependency injection in your project
Coroutines - a concurrency design pattern that you can use on Android to simplify code that executes asynchronously
Flow- In coroutines, a flow is a type that can emit multiple values sequentially, as opposed to suspend functions that return only a single value.
CI/CD - Continuous integration systems let you automatically build and test your app every time you check in updates to your source control system.
Coil - Image Loader library.
The application is built following a multi module approach with all features being developed as separate modules. We have the Network Module which contains the data and domain layers for alll the features and each feature contains its own presentation (ui layer).
The role of the UI layer (or presentation layer) is to display the application data on the screen. Whenever the data changes, either due to user interaction (such as pressing a button) or external input (such as a network response), the UI should update to reflect the changes. The UI layer is made up of two things:
The data layer of an app contains the business logic. The business logic is what gives value to your app—it's made of rules that determine how your app creates, stores, and changes data. The data layer is made of repositories that each can contain zero to many data sources. You should create a repository class for each different type of data you handle in your app.
The domain layer is an optional layer that sits between the UI and data layers. The domain layer is responsible for encapsulating complex business logic, or simple business logic that is reused by multiple ViewModels. This layer is optional because not all apps will have these requirements. You should use it only when needed—for example, to handle complexity or favor reusability
Felix Kariuki
Do Reach Out :
Copyright 2023 Felix Kariuki
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.