Obrigado por participar do desafio iOS da Concrete! Estamos muito contentes pelo seu primeiro passo para fazer parte de um time excepcional.
VocĂȘ deverĂĄ criar uma app sobre filmes, usando a API do TheMovieDB. Legal, certo? Para dar uma padronizada e ter um layout minimamente definido anexamos alguns assets que vĂŁo te ajudar a desenvolver esse app:
Pense no desafio como uma oportunidade de mostrar todo o seu conhecimento. E faça com calma, vocĂȘ tem uma semana para entregar! Vamos avaliar como vocĂȘ lida com casos de:
- Consumo de APIs
- PersistĂȘncia de dados (Favoritos)
- LĂłgicas de filtros e buscas.
- Estruturação de layout e fluxo de aplicação.
O Ășnico prĂ©-requisito Ă© que o cĂłdigo seja feito em Swift, de preferĂȘncia na versĂŁo mais atual. Sinta-se a vontade para:
- Usar ou nĂŁo usar bibliotecas
- Estruturar seu layout com storyboards, xibs ou ViewCode
- Adotar a arquitetura que vocĂȘ quiser.
Somos especialmente preocupados com qualidade e acreditamos bastante em testes automatizados. Entretanto, sabemos que nĂŁo Ă© um tĂłpico dominado por todos, por isso aceitamos desafios com todos os perfis e diferentes momentos de experiĂȘncia e conhecimento tĂ©cnico. Para posiçÔes mais Seniors, porĂ©m, damos muito importĂąncia para a qualidade do cĂłdigo.
- Tela de Splash;
- Layout em abas, contendo na primeira aba a tela de grid de filmes e na segunda aba a tela de lista de filmes favoritados no app;
- Tela de grid de filmes trazendo a lista de filmes populares da API.
- Tratamento de erros e apresentação dos fluxos de exceção: Busca vazia, Error generico, loading;
- Ao clicar em um filme do grid deve navegar para a tela de detalhe do filme;
- Tela de Detalhe do filme deve conter ação para favoritar o filme;
- Tela de Detalhe do filme deve conter gĂȘnero do filme por extenso (ex: Action, Horror, etc); Use esse request da API para trazer a lista.
- Tela de lista de favoritos persistido no app entre sessÔes;
- Tela de favoritos deve permitir desfavoritar um filme.
- Tela de grid com busca local;
- Scroll Infinito para fazer paginação da API de filmes populares;
- Célula do Grid de filmes com informação se o filme foi favoritado no app ou não;
- Tela de filtro com seleção de data de lançamento e gĂȘnero. A tela de filtro sĂł Ă© acessĂvel a partir da tela de favoritos;
- Ao Aplicar o filtro, retornar a tela de favoritos e fazer um filtro local usando as informaçÔes selecionadas referentes a data de lançamento e gĂȘnero;
- Testes unitĂĄrios no projeto;
- Testes funcionais.
- Pipeline Automatizado
Abaixo podemos ver algumas telas de exemplo de alguns desses fluxos. SĂŁo apenas sugestĂ”es, fique Ă vontade para modificar como vocĂȘ quiser. Para facilitar o processo, existem assets, app icons, Ăcones e paleta de cores no repositĂłrio. Mas se o seu lado designer falar mais alto, pode nos surpreender!
Depois de implementar a solução, envie um pull request para este repositório. O processo de Pull Request funciona da seguinte maneira:
- Faça um fork deste repositório (não clonar direto!);
- Faça seu projeto neste fork;
- Commit e suba as alteraçÔes para o SEU fork;
- Pela interface do Github, envie um Pull Request.
Deixe o fork pĂșblico para facilitar a inspeção do cĂłdigo.
NĂŁo tente fazer o PUSH diretamente para ESTE repositĂłrio!



