ChitChat is a simple Android application to show the MVVM design pattern usage following Clean Architecture approach.
- 100% Kotlin-only.
- Following Clean Architecture approach.
- Following MVVM Architectural Design Pattern.
- Using Pagination.
- Using Navigation Component.
- Some minor improvements are underway 🛠
- Register new account
- Login with existing account
- Logout
- Firebase authentication for login and register
- View all the users using the app
- View their profile image and status
- Send friend request to any user
- Cancel friend request sent
- Accept friend request received
- Decline friend request received
- Notification will be received by receiver
- Change Profile Image
- Change Status
- Send Messages
- Send Images
- Delete Messages
- Last seen
- See if a Friend is Online or Not
- Firebase Offline (Once page is loaded , one can view it in offline mode)
- Firebase Cloud Messaging , OKHTTP (for sending notification)
- Image Cropping
- Image Compressing
- ViewModel https://developer.android.com/topic/libraries/architecture/viewmodel
- LiveData https://developer.android.com/topic/libraries/architecture/livedata
- Android Architecture https://developer.android.com/topic/libraries/architecture
- Android Jetpack: ViewModel https://developer.android.com/jetpack
- Unit Testing + Mockito + Kotlin + Architecture components https://medium.com/@marco_cattaneo/unit-testing-with-mockito-on-kotlin-android-project-with-architecture-components-2059eb637912
- Junit + LiveData https://jeroenmols.com/blog/2019/01/17/livedatajunit5/
I appreciate contributions of any kind - new contributions are welcome whether it's through bug reports or new pull requests.
Please add an issue. I'll review it, add labels and reply within a few days.
Comment on the issue that you'd like to work on and I'll add the
claimed
label. If you see the claimed
label already on the issue you
might want to ask the contributor if they'd like some help.
Go right ahead! Just submit a pull request when you're done.
I love pull requests from everyone:
- Fork this repository:
- Clone forked repository
git clone git@github.com:YOUR-USERNAME/ChitChat.git
All changes should be based from the master
branch. Push to your fork and submit a pull request against the master
branch.
At this point you're waiting on me 😊. I like to at least comment on pull requests within few days. I may suggest some changes or improvements or alternatives.
Some things that will increase the chance that your pull request is accepted:
- Make sure all tests and lint checks are passing (review them on the pull request page)
- Update README with any changes are needed
- Write tests (if needed)
- Write a good commit message