{"id":21541703,"url":"https://github.com/concretesolutions/external-ios-recruiting-brazil","last_synced_at":"2026-01-04T16:02:35.603Z","repository":{"id":86351980,"uuid":"198886577","full_name":"concretesolutions/external-ios-recruiting-brazil","owner":"concretesolutions","description":null,"archived":false,"fork":false,"pushed_at":"2019-08-13T14:00:38.000Z","size":5258,"stargazers_count":1,"open_issues_count":0,"forks_count":2,"subscribers_count":11,"default_branch":"master","last_synced_at":"2025-01-24T08:31:16.238Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":null,"has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/concretesolutions.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2019-07-25T19:00:44.000Z","updated_at":"2019-08-30T19:26:50.000Z","dependencies_parsed_at":null,"dependency_job_id":"bd5ea6a6-a4ee-4ed4-896c-3271f40c88bf","html_url":"https://github.com/concretesolutions/external-ios-recruiting-brazil","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/concretesolutions%2Fexternal-ios-recruiting-brazil","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/concretesolutions%2Fexternal-ios-recruiting-brazil/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/concretesolutions%2Fexternal-ios-recruiting-brazil/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/concretesolutions%2Fexternal-ios-recruiting-brazil/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/concretesolutions","download_url":"https://codeload.github.com/concretesolutions/external-ios-recruiting-brazil/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":244124179,"owners_count":20401683,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-11-24T05:07:20.803Z","updated_at":"2026-01-04T16:02:35.503Z","avatar_url":"https://github.com/concretesolutions.png","language":null,"funding_links":[],"categories":[],"sub_categories":[],"readme":"# Concrete iOS Recruit Challenge\n\n---\n\n![Gif](assets/Logo-animado-1.gif)\n\n## Bem vindo\n\n---\n\nObrigado por participar do desafio iOS da Concrete! Estamos muito contentes pelo seu primeiro passo para fazer parte de um time excepcional.\n\n## Afinal, o que é esse desafio?\n\n---\n\nVocê deverá criar uma app sobre filmes, usando a [API](https://developers.themoviedb.org/3/getting-started/introduction) do [TheMovieDB](https://www.themoviedb.org/?language=en). Legal, certo? Para dar uma padronizada e ter um layout minimamente definido anexamos alguns assets que vão te ajudar a desenvolver esse app:\n\n- [Ícones do app](assets/appIcons)\n- [ScreenShots](assets/screenshots)\n- [Ícones](assets/icons)\n\nPense no desafio como uma oportunidade de mostrar todo o seu conhecimento. E faça com calma, você tem uma semana para entregar!\nVamos avaliar como você lida com casos de:\n\n- Consumo de APIs\n- Persistência de dados (Favoritos)\n- Lógicas de filtros e buscas.\n- Estruturação de layout e fluxo de aplicação.\n\nO único pré-requisito é que o código seja feito em Swift, de preferência na versão mais atual. Sinta-se a vontade para:\n\n- Usar ou não usar bibliotecas\n- Estruturar seu layout com storyboards, xibs ou ViewCode\n- Adotar a arquitetura que você quiser.\n\nSomos 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.\nPara posições mais Seniors, porém, damos muito importância para a qualidade do código.\n\n# Features ..\n\n---\n\n### Precisa ter:\n\n- Tela de Splash;\n- 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;\n- Tela de grid de filmes trazendo a lista de filmes populares da [API](https://developers.themoviedb.org/3/movies/get-popular-movies).\n- Tratamento de erros e apresentação dos fluxos de exceção: Busca vazia, Error generico, loading;\n- Ao clicar em um filme do grid deve navegar para a tela de detalhe do filme;\n- Tela de Detalhe do filme deve conter ação para favoritar o filme;\n- Tela de Detalhe do filme deve conter gênero do filme por extenso (ex: Action, Horror, etc); Use esse [request](https://developers.themoviedb.org/3/genres/get-movie-list) da API para trazer a lista.\n- Tela de lista de favoritos persistido no app entre sessões;\n- Tela de favoritos deve permitir desfavoritar um filme.\n\n### Ganha mais pontos se tiver:\n\n- Tela de grid com busca local;\n- Scroll Infinito para fazer paginação da API de filmes populares;\n- Célula do Grid de filmes com informação se o filme foi favoritado no app ou não;\n- 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;\n- 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;\n- Testes unitários no projeto;\n- Testes funcionais.\n- Pipeline Automatizado\n\n# Exemplos e sugestões\n\n---\n\nAbaixo podemos ver algumas telas de exemplo de alguns desses fluxos. São apenas sugestões, fique à vontade para modificar como você quiser.\nPara 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!\n\n### Fluxo de grid de filmes\n\n![Image of Yaktocat](assets/flow/lista.png)\n\n### Fluxo com Splash, Tela de Detalhes e tela de lista da favoritos\n\n![Image of Yaktocat](assets/flow/splash_detalhes.png)\n\n### Fluxo Opcional de filtro\n\n![Image of Yaktocat](assets/flow/filtro.png)\n\n## **Processo de submissão**\n\n---\n\nDepois de implementar a solução, envie um pull request para este repositório.\nO processo de Pull Request funciona da seguinte maneira:\n\n1. Faça um fork deste repositório (não clonar direto!);\n2. Faça seu projeto neste fork;\n3. Commit e suba as alterações para o **SEU** fork;\n4. Pela interface do Github, envie um Pull Request.\n\nDeixe o fork público para facilitar a inspeção do código.\n\n### **ATENÇÃO**\n\nNão tente fazer o PUSH diretamente para ESTE repositório!\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fconcretesolutions%2Fexternal-ios-recruiting-brazil","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fconcretesolutions%2Fexternal-ios-recruiting-brazil","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fconcretesolutions%2Fexternal-ios-recruiting-brazil/lists"}