Criação de uma aplicação que exibe uma lista de filmes usando a API do TMDB.
Após abrir a aplicação, a tela inicial exibirá um Grid contendo os filmes carregados pela API do TMDB. A requisição foi realizada utilizando o endpoint Movie Lists/Popular. É necessário informar a página para que este endpoint retorne um Array contendo no máximo 20 filmes.
Sempre que o último elemento da lista é exibido, será feita uma requisição de novos vídeos referentes a página seguinte.
Por padrão, todos os filmes retornados pela API serão exibidos. Ao clicar em Upcoming será realizado um filtro nos filmes já carregados, exibindo apenas os filmes que ainda serão lançados. Ao clicar em Popular, o filtro será removido e todos os filmes previamente carregados, serão exibidos novamente.
Ao clicar em algum filme da lista, será exibido uma nova tela contendo os detalhes do filme selecionado.
Quando a aplicação está no formato Portrait (Vertical), os elementos da tela inicial serão exibidos no formato de Grid.
![]() |
![]() |
Quando a aplicação está no formato Landscape (Horizontal), os elementos da tela inicial serão exibidos no formato de Lista, para facilitar a navegação e visualização dos filmes exibidos.
As features foram criadas utilizando a arquitetura VIP (View, Interactor, Presenter). As interações do usuário na tela, fazem com que a View comunique com o Interactor, para que o mesmo efetue requisições ao TMDB através da classe NetworkService. Após receber os dados da requisição, o Interactor passa os dados para o Presenter, que será responsável por manipular/tratar os dados e encaminhar para a View, que irá exibir as informações na tela. Devido a forma como o SwiftUI renderiza a hierarquia de Views, foi necessário adicionar uma classe ViewModel, que retem os dados e, ao ser alterada, faz com que o SwiftUI renderize a tela novamente.
Foi criada uma classe chamada ImageDownloader, responsável por fazer cache das imagens (banners e fotos), para melhorar a performance da aplicação. Existe também uma classe Formatter, com funções auxiliares responsáveis por formatar as datas que serão exibidas na tela.
XCode Build Code Coverage: 63% - Foram criados Spy, Mocks, Fake e Stubs das camadas, entidades e network, para realização dos testes. Os testes estão configurados para serem executados no Xcode usando o XCTest.
- Mudar a arquitetura
para MVVMouComposable Architecturepois funcionam melhor com oSwiftUI. - Adicionar a possibilidade da autenticação de usuário;
- Melhorar design das telas
- Tratar Light / Dark mode
- Remover variáveis que não estão sendo utilizadas nas entidades.
- Avaliar o que realmente precisa ser
asynce o que precisa atuar namain thread
- Sistema operacional: MacOS
- IDE: Xcode 16
- Simulador iOS (18.1): iPhone 15 Pro / iPhone 15 Pro Max
- Ao abrir o projeto, ter certeza que esteja selecionado o scheme "TMDB, conforme imagem abaixo"




