Giter Site home page Giter Site logo

chatapp's Introduction

ChatApp

Description

The Chat App can be used for communication between people all over the world!

Features

State

The application are available to handle user's network connection and connection with the server in real time
We can see the current state of the connection with server or user's network connection on the toolbar If the application aren't connected to the server error occurs: "Waiting for server..."
If the application lost connection with the Internet error occurs: "Waiting for network"
To handle network connection of devices I used Broadcast receiever

Join

To join to any chat user should enter his name. He's got an ability to add image profile (Optional)
If profile image wasn't chosen a standard image profile will be shown
To test my application's ability to save state I used "Don't keep activityies" option you can find in "Developer options"
The application is able to save the last state of the screen if any configuration changes or something more like lack of memory occurs

Success join user to the chat Failure join user to the chat


Users

Show users who have already joned to the chat
I display users in the list who have ever joined to the app
For uploading images I used Glide, they have circle form with the help of CircleImageView


The last sent message updates on screen with users
For updating recycler view I used Diffutils


Chat

In this screen I also save the state to restore it in the future
We can send messages and edit them
Edited message are marked like "edited" to undertanding that this message's content was changed
Also I realized reading messages other users and mark them like "read"
If user is typing some text we show this state in the toolbar it looks like "User name is typing..."



Last sent messages are displayed by the following way

Offline

When we do not have the Internet but we want to send or edit the message we can do it
All the transactions with messages will be shown via android notifications
When the internet is available we hide all the notifications and commit scheduled transactions
For automatically sending and editting messages I used WorkManager

Technology

  • Clean architecture
  • SOLID
  • Junit tests
  • Single activity approach
  • Used Koin for dependency injection
  • View binding is used to interact with views within fragments and recyclerview adapters
  • Kotlin coroutines are used for asynchronous operations
  • Socket io
  • CircleImageView and Glide libs are involved to obtain and display user profile image
  • WorkManager

Statistic

Backend

Beckend was written with the help of node.js
You can see the file with source code here

chatapp's People

Contributors

kostyagig avatar kostyagigpullrequest avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.