


Visão Geral do Projeto
Insplash é um aplicativo desenvolvido na linguagem Kotlin para Android utilizando o Jetpack Compose UI Toolkit para construção da interface e consome a API do Unsplash que é um repositório de imagens gratuitas.
O app possui uma tela de listagem de fotos com opção de pesquisa, uma tela para exibir a foto + informações e uma tela para listagem das fotos favoritas. Possui uma funcionalidade para favoritar fotos que serão salvas somente no banco de dados local por questões de simplicidade.
A arquitetura definida segue recomendações e princípios da documentação oficial do Android e baseia-se na estrutura conforme imagem abaixo:

Arquitetura & Tecnologias
Construção de UI utilizando o Jetpack Compose
Arquitetura MVVM com ViewModel para interação com repositório e UI
Camada de dados utilizando repositório + data sources
Coroutines para programação assíncrona e gerenciamento de longas tarefas
Cliente HTTP e configuração de conexão da API com Retrofit
Injeção de dependência com Dagger Hilt
Carregamento e caching de imagens com Glide
Armazenamento de resultados da API no banco de dados local com Room
Mecanismo de paginação de resultados implementado manualmente
Criação de classes genéricas auxiliares a fim de evitar repetições de código (princípios de DRY code)
Tags
Kotlin
MVVM
Jetpack Compose UI
Coroutines
Repository Pattern
Retrofit
Dagger Hilt
Glide
Room