StreamDTC

Uma experiência de streaming moderna, construída com as melhores tecnologias Android.

Ver Demonstração em Vídeo

Sobre 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.