Veja o seu perfil publico do github, ou de outros usuarios, por esse aplicativo simples e rapido.
O objetivo do aplicativo foi estudar mais sobre a prataforma Android. Utilizando metodos Agile como SOLID e Clean Code, foram implementados chamadas api utilizando Retrofit juntamente com Coroutines que serviu para lidar com a parte asyncrona do projeto e deixar mais leve e facil de entender. A arquiterura escolhida para o projeto foi a MVVM utilizando Compose para lidar com os estados das UIs, Resource para lidar com o status da Network, StateFlow para comunicação com o compose e ViewModelProvider para podemos criar um ciclo de vida proprio da nossa ViewModel podendo haver activity rotation sem perda de estado ou crashes indesejaveis. A aplicação é internacionalizada e está disponivel em inglês e português(dependendo da linguagem do dispositivo).
Projeto inteiramente desenvolido em Kotlin tento em vista que é a linguagem oficial recomentada para o Android e também tendo em vista suas facilidades e tecnologias, dentro da IDEA Android Studio para uma melhor perfomace no desenvolvimento.
Arquitetura
A arquitetura escolhida para o desenvolvimento foi a Model View ViewModel(MVVM). Esta arquitetura foi escolhida para atuar em conjunto com o Compose e Architecture Components, facilitanto o código e beneficiando os testes
- archive: Onde ficam os arquivos de extension do kotlin.
- injection: Onde ficam os arquivo para Dependency injection.
- ui: Onde fica os fluxos, features e ViewModels do aplicativo.
- util: Onde ficam os arquivos de apoio. (Base)
- adapters: Onde ficam os network adapters.
- api: Onde ficam as interfaces de chamada da api.
- dispatchers: Onde fica a representação de CoroutineDispatcher do projeto.
- models: Onde ficam os modelos para mapeamento dos services.
- network: Onde fica a principal configuração da api do projeto.
- resource: Onde ficam os responsáveis por digerir a resposta da api e devolver de uma forma fácil.
- components: Onde fica os componentes base do projeto.
- state: Onde fica o State, principal responsável por contruir as tela em Compose nesse projeto.
- value: Colors, Text. Onde ficam os Conjutos que formam um Desing System do projeto.
- widget: Onde ficam alguns componentes legados do projeto.
Dependencias
object Versions {
const val kotlinVersion = "1.5.21"
const val coreKtxVersion = "1.6.0"
const val coroutinesVersion = "1.5.2"
//AppCompat and UI things
const val appCompatVersion = "1.4.0-alpha01"
//Koin
const val koinVersion = "3.1.2"
//Compose
const val composeVersion = "1.0.2"
const val composeActivityVersion = "1.3.1"
const val composeNavigationVersion = "2.4.0-alpha08"
//Coil
const val coilVersion = "1.3.0"
//Retrofit and api things
const val retrofitVersion = "2.9.0"
const val loggingInterceptorVersion = "4.9.0"
//Gradle
const val gradleVersion = "7.0.0"
//Test
const val mockKVersion = "1.12.0"
const val coreTestingVersion = "2.1.0"
const val junitVersion = "4.13.2"
const val junitExtVersion = "1.1.3-beta01"
const val espressoCoreVersion = "3.4.0-beta01"
}
➡️ Video da aplicação em uso
Screenrecorder-2021-09-26-23-48-20-518.mp4
A aplicação consiste em um activity onde você pode pesquisar por um perfil do github e também acessar os repositórios desse perfil pesquisado.
➡️ Inicio
Step onde o aplicativo é inicializado e podemos ver a funcionalidade de buscar perfil.
➡️ Busca
Step que podemos ver como fica a funcionalidade de buscar e como utilizar ela.
➡️ Perfil
Step que mostra o resultado de uma busca.
➡️ Perfil não encontrado
Step que mostra o resultado não encontrado de uma busca.
➡️ Detalhes do repositório
Step que mostra o detalhe de um repositório.