StreamDTC
Uma experiência de streaming moderna, construída com as melhores tecnologias Android.
Ver Demonstração em VídeoSobre o Projeto
StreamDTC é um aplicativo Android que simula uma interface de streaming como a da Netflix, utilizando a API do The Movie DB (TMDB) como fonte de dados. O projeto foi desenvolvido como um estudo aprofundado sobre arquitetura de software moderna no Android, componentização de UI com Jetpack Compose e a integração de APIs robustas.
Telas do Aplicativo
Demonstração Rápida
Tecnologias e Arquitetura
UI Moderna
Interface construída 100% com Jetpack Compose, com ênfase no Material 3 Expressive para temas adaptáveis e componentes dinâmicos que enriquecem a experiência visual.
Arquitetura MVVM
Utilização do padrão Model-View-ViewModel para uma separação clara de responsabilidades, facilitando a manutenção e escalabilidade do código.
Carregamento e Gerenciamento de Imagens com Coil
Utilização da biblioteca Coil para o carregamento eficiente, exibição e cache de imagens de filmes e séries, garantindo uma interface fluida e de alta performance visual, essencial para um aplicativo rico em mídia.
API The Movie DB (v3 & v4)
Integração com as versões v3 e v4 da API, utilizando Retrofit e Ktor para comunicação de rede e realizando operações GET, POST, PUT e DELETE.
Dados e Paginação
Paging 3 para carregamento eficiente de listas infinitas e DataStore para persistência de dados locais de forma assíncrona.
Assincronismo
Kotlin Coroutines & Flow para gerenciar operações em background de forma reativa e eficiente, garantindo uma UI sempre fluida.
Desafios e Soluções
Autenticação via WebView e Polling
Um dos maiores desafios foi a autenticação. Para obter o access token sem que o usuário saísse do app, implementei um fluxo com OpenWebView. A aplicação monitora o processo de autenticação usando uma técnica de Polling, capturando o token assim que ele é gerado. A diferença entre os fluxos de autenticação das APIs v3 e v4 da TMDb exigiu ajustes precisos para garantir a estabilidade.
Conflito de IDs e a Migração para a API v4
Na API v3, ao adicionar filmes e séries a uma mesma lista, encontrei um problema crítico: os IDs de filmes podiam ser iguais aos de séries, causando a exibição de dados incorretos. A solução foi migrar para a API v4, que utiliza identificadores únicos para cada tipo de mídia. Essa mudança não apenas corrigiu o problema, mas também abriu portas para funcionalidades mais avançadas, como a manipulação completa de listas com requisições POST, PUT e DELETE.
Aprendizados
A customização da UI foi muito facilitada pelo Material 3 Expressive, que permitiu a criação de temas adaptáveis de forma simples. Essas experiências reforçaram a importância de testar exaustivamente a integração com APIs e de não hesitar em migrar para versões mais novas e robustas quando um obstáculo técnico fundamental aparece.