View on GitHub

NeoChat

Projeto de Chat, com notificações push utilizando tecnologias do Firebase e Arquitetura MVP.

Um chat simples utlizando as tecnologias do Firebase, como Firebase Authentication, Firebase Realtime Database, Firebase Cloud Messaging e Firebase Functions.

Arquitetura

Um aplicativo sem uma arquitetura é apenas mais um aplicativo. Uma arquitetura não apenas deixa o projeto mais profissional, como também o torna mais legível por outros desenvolvedores e facilita a manutenção. Por isso o NeoChat dois padrões de projeto muito populares, a Arquitetura MVP (Model View Presenter) e Navigation Component Architecture.

MVP

O projeto utiliza a Arquitetura MVP (Model View Presenter) que visa uma melhor separação de responsabilidades, visualização e regra de negócio, utlizando interfaces para comunicação entre elas.

Single Activity

Seguindo as recomendações da Google, o projeto é Single Activity, possuindo apenas uma Atividade que gerencia as telas através de Fragments, usando Navigation Component Architecture e Safe Args para navegação entre elas.

Linguagens

A aplicação é 100% desenvolvida em Kotlin, enquanto o back-end do Functions usa JavaScript com Node.js 12

InicioPresenterImpl () : InicioPresenter
    override fun requireLogin() {

        inicioView.setVisibilityProgressBar(
            View.INVISIBLE
        )

        val providers = arrayListOf(
            AuthUI.IdpConfig.GoogleBuilder().build(),
            AuthUI.IdpConfig.EmailBuilder().build(),
            AuthUI.IdpConfig.PhoneBuilder().build()
        )

        inicioView.requireLogin(providers)
    }
InicioFragment() : InicioView
    override fun requireLogin(
        providers: List<AuthUI.IdpConfig>
    ) {

        startActivityForResult(
            AuthUI.getInstance()
                .createSignInIntentBuilder()
                .setAvailableProviders(providers)
                .setLogo(R.mipmap.ic_launcher)
                .build(),
            requestCodeLogin
        )
    }

Download

Fork ou clone e contribua com o projeto em Projeto NeoChat
Baixe o projeto ou instale o apk em Releases