Giter Site home page Giter Site logo

david32145 / osf-rn-training-final-app Goto Github PK

View Code? Open in Web Editor NEW

This project forked from fernandomatheus/osf-rn-training-final-app

0.0 0.0 0.0 4.27 MB

JavaScript 2.31% TypeScript 60.28% Starlark 1.84% Java 19.38% Objective-C 13.76% Ruby 2.27% Shell 0.18%

osf-rn-training-final-app's Introduction

Desafio Final

O Desafio final consiste em 2 desafios médios e 3 desafios bônus, cuja complexidade é um pouco maior.

Desafios médios

1. Implementar uma barra de pesquisa para filtrar os filmes

  • Deve seguir o mesmo alinhamento de itens conforme a imagem abaixo:

    expected_search_bar

  • Quando o usuário começar a digitar, um ícone de limpar deve aparecer no canto direito, e quando pressionado, limpar os dados do campo de texto, e fazer o teclado desaparecer, conforme o vídeo baixo:

    Screen.Recording.2021-09-22.at.15.16.56.mov
  • Para cada letra digitada pelo usuário, deve aplicar um filtro na lista de filme para mostrar apenas os títulos do filmes que possuam determinado conjunto de caracteres, conforme o vídeo abaixo:

    expected_filter.mov
  • Caso o usuário digite um conjunto de caracteres que não esteja presente em nenhum título de nenhum filme, deverá mostrar uma messagem de erro, informando que não conseguiu encontrar nenhum filme com o conjunto de caracteres informado, conforme o vídeo abaixo:

    Screen.Recording.2021-09-22.at.15.18.25.mov

2. Implementar as sessões disponíveis para um determinado filme

OBS.: Para fazer manipulações de data, fica ao critério de cada um usar o objeto Date do próprio javascript, quanto usar algum pacote facilitador.

Na tela de MovieDetail será preciso listar as sessões disponíveis por dia, para isso, precisará ser feito alguns ajustes no código atual:

  • O código do SegmentedControl está com os dias fixados, porém esses dias precisam ser interativos contanto da data atual + 3 dias subsequentes. Por exemplo:

    • Caso o dia atual seja segunda-feira, os valores do SegmentedControl deverá ser: 'Segunda-feira', 'Terça-feira', 'Quarta-feira', 'Quinta-feira'.
    • Caso o dia atual seja domingo, os valores do SegmentedControl deverá ser: 'Domingo', 'Segunda-feira', 'Terça-feira', 'Quarta-feira'.
  • Para buscar dados de um dia específico, será preciso fazer uma requisição GET para o seguinte endpoint:
    https://osf-rn-training-bff.herokuapp.com/movies/{movieId}/sessions/date/{date}
    movieId é referente ao id do filme
    date será a data correspondente ao dia da semana, essa data só será aceita no formato: YYYY-MM-DD outro formato o serviço retonará um erro.

  • Para cada mudança de tabs do SegmentedControl deverá listar as sessões disponíveis do dia, e seguir algumas especificações:

    • Enquanto estiver carregando as informações, um indicador de carregamento deverá ser exibido, conforme a imagem abaixo:

    Screen Shot 2021-09-22 at 15 28 38

    • Quando houver uma erro de requisição, deve mostrar uma mensagem de erro conforme a imagem abaixo:

    Screen Shot 2021-09-22 at 15 32 49

    • Quando os dados forem obtidos com sucesso, os dados nome do cinema, horario e detalhes da sessão devem ser exibidos, conforme a imagem abaixo:

    Screen Shot 2021-09-22 at 15 33 37

Desafios Bônus

1. Implementar um sistema de cache de requisições usando por exemplo o pacote React Query

2. Adicionar o pacote Lint-staged para funcionar em conjunto com o Husky ja configurado no projeto

3. Adicionar suporte para mais cidades (Ainda não disponível)

Para acessarem todas as cidades disponíveis suportadas pela api, será necessário fazer uma requisição GET para o endpoint:
https://osf-rn-training-bff.herokuapp.com/cities

Será preciso adicionar na tela de home um componente que será possivel selecionar qual cidade o usuário quer vizualizar os filmes disponíveis.

Para listar os filmes disponíveis por uma cidade, deverá ser feita uma requisição GET para o endpoint:
https://osf-rn-training-bff.herokuapp.com/movies/city/{cityId}
cityId será retornado no endpoint de /cities

Para listar as sessões de um filme de uma cidade específica, basta fazer uma requisição GET para o endpoint:
https://osf-rn-training-bff.herokuapp.com/movies/{movieId}/sessions/date/{date}?cityId={cityId}

Requisitos de layout: Devera haver um ícone que abrirá a lista de cidades, onde mostrará apenas o nome da cidade e se ela foi selecionada

Avaliação

Deverá ser feito um fork desse projeto, adicionar no README.md o template abaixo e enviar um email para os facilitadores do curso seguindo esse padrão:

Título do email: Nome do aluno - Desafio final
Conteúdo do email: link do projeto no github

Desafios médios

1. Implementar uma barra de pesquisa para filtrar os filmes

  • Concluído Total
  • Concluído Parcial
  • Não Concluído

Explicação

2. Implementar as sessões disponíveis para um determinado filme

  • Concluído Total
  • Concluído Parcial
  • Não Concluído

Explicação

Desafios bônus

1. Implementar um sistema de cache de requisições

  • Concluído Total
  • Concluído Parcial
  • Não Concluído

Explicação

2. Adicionar o pacote Lint-staged

  • Concluído Total
  • Concluído Parcial
  • Não Concluído

Explicação

3. Adicionar suporte para mais cidades

  • Concluído Total
  • Concluído Parcial
  • Não Concluído

Explicação

osf-rn-training-final-app's People

Contributors

david32145 avatar fernandomatheus avatar fernandomatheusc avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.