Projeto 2: Consumo de APIs
Entrega
28/10 (domingo)
Commits até as 23:59
Dupla ou Individual
Entrega via Github Classroom
Antes de começar
Inception do Projeto até: 22/09 (segunda-feira) [Clique aqui para acessar o formulário]
GitHub Classroom: Para este projeto será necessário criar dois repositórios GitHub, um para o frontend e outro para o backend .
- Frontend: https://classroom.github.com/a/UhO1nY2N
- Backend: https://classroom.github.com/a/5CXfCXPo
O objetivo deste projeto é praticar o desenvolvimento e consumo de APIs REST.
Importante
A sua proposta deve ser validada pela professora antes de iniciar a implementação =)
Restrições
O tema deste projeto é aberto, mas ele possui algumas restrições:
- Precisa utilizar algum tipo de persistência em um banco de dados;
- Precisa consumir uma API externa (de terceiros). Essa API externa pode ser consumida tanto pelo frontend quanto pelo backend. Como você preferir;
- Backend deve ser feito utilizando Django REST framework. (Sua API deve ser RESTful)
- Frontend deve ser feito utilizando React.
Roadmap
- Decida se você vai fazer este projeto sozinho ou em dupla (a rubrica é a mesma, mas a exigência será maior em termos do que é considerado bem feito);
-
Escolha sua API externa.
Dica
Dica de repositório para procurar APIs: https://rapidapi.com/
Algumas APIs disponíveis pela RapidAPI são pagas, mas tem várias opções gratuitas ou freemium. Evite utilizar APIs que peçam o cadastro de cartão de crédito.
Se você tiver um tema definido, também é bem fácil de achar APIs gratuitas procurando no Google.
-
Faça alguma requisição para a API escolhida (utilizando o Postman ou via axios) para verificar se ela está funcionando. Pois existem muitas APIs que acabam não funcionando da forma como esperamos;
- Liste 2 funcionalidades essenciais;
- Envie o Inception do Projeto 2 respondendo ao seguinte formulário até o dia 28/10 (domingo). O formulário deve ser preenchido para que o tema seja validado. Clique aqui para acessar o formulário.
- Faça um fluxo de tela de baixa fidelidade para o frontend. E liste todas endpoints que você vai precisar implementar no backend. O fluxo de tela poderá ser feito no papel, na lousa ou afins. O importante é que você tenha um fluxo de tela definido antes de começar a implementação do frontend. Deixe uma foto do fluxo de tela no repositório do projeto do frontend. A lista de endpoints deverá ser descrita no README do repositório do backend.
IMPORTANTE: Faça o commit do fluxo de tela e do README do backend antes do início da implementação do projeto. O fluxo de tela e o README do backend serão avaliados na rubrica do projeto.
Tarefas
A rubrica a seguir será utilizada na correção do Projeto 2:
Tarefas: As tarefas a serem realizadas são:
- Funcionalidade essencial 1 indicada no Inception;
- Funcionalidade essencial 2 indicada no Inception;
- Implementou o frontend usando React. Além disso, implementou estilo CSS ou utiliza algum framework CSS para o frontend.
- Colocou em produção (está disponível na internet)
Rubrica
- Conceito I: Não entregou ou o código não executa;
- Conceito D: Entregou apenas 1 funcionalidade essencial;
- Conceito C:
- Entregou as 2 funcionalidades essenciais;
- E Entregou o fluxo de tela de baixa fidelidade. Deve estar commitado no primeiro dia de aula estúdio.
- E Entregou o README com a lista de endpoints que serão implementadas no backend. Deve estar commitado no primeiro dia de aula estúdio.
- Conceito B:
- Atingiu o conceito C.
- E Todas as requisições para a API externa foram feitas no backend.
- E entregou a funcionalidade 3.
- E A API desenvolvida é RESTful, ou seja, pode ser classificada no nível 2 ou superior da Maturidade de Richardson
- Conceito A:
- Atingiu o conceito B.
- E Colocou o backend e o frontend em produção.
- Conceito A+:
- Atingiu o conceito A.
- E Implementou testes de integração para o projeto backend.
- E Todas as endpoints da API foram testadas.
- E Existe mais de um cenário de teste para cada endpoint.
Importante
É importante a contribuição de ambos os membros da dupla para a implementação do projeto. Caso a contribuição não seja equilibrada, o conceito final do projeto poderá ser diferente para cada membro da dupla.
Além da rubrica, caso alguma das restrições citadas no enunciado não seja cumprida, poderão ocorrer descontos no conceito final do projeto.
Participação
Faltas em aulas estúdio e frequência de commits relevantes podem influenciar na nota final do projeto.