---
# System prepended metadata

title: Comunidade para Cinéfilos (PT 2022/2)
tags: [' PT-2022/2', Orcestra]

---

---
tags: Orcestra, PT-2022/2
---
# Comunidade para Cinéfilos (PT 2022/2)

## Objetivos

Este é **projeto final** do segundo processo trainee de 2022 da Empresa Junior Orc'estra Gamificação, que contempla todos os ensinamentos aprendidos no bootcamp Javascript. E neste documento se encontram as instruções para realizar o projeto final, além de estarem detalhados os requisitos não-funcionais (restrições) e funcionais (que devem ser desenvolvidos pelos trainees).

## Introdução
*"Jorge gosta muito de filmes, toda semana vai ao cinema e adora principalmente filmes de terror, mas sempre tem um problema, as vezes está assistindo a um filme em sua casa, quando chega no meio ele percebe que já assistiu ao filme :face_palm:. Muitas vezes não sabe qual filme recomendar para amigos, pois já assistiu a tantos! E agora, quem poderá nos defender?"*

Precisamos ajudar cinéfilos, como o Jorginho, com sua paixão cinematográfica! Dessa forma, o **projeto final deve ser um site/app na *web* com a temática de Comunidade para cinéfilos.**

Para isso e como restrição para esse projeto, o site deve consumir a **API TheMoviesDB**. Mais informações sobre o funcionamento da API podem ser encontradas nesse [**link**](https://developers.themoviedb.org/3/getting-started/introduction).

Tudo que deve conter no projeto final estão no requisitos elicitados logo abaixo:

## Requisitos não-funcionais (restrições)

| Código | Descrição                                                                                        |
|:------:|:------------------------------------------------------------------------------------------------ |
|  RN01  | Este projeto deve consumir a API do TheMoviesDB.                                                 |
|  RN02  | Este projeto deve ser desenvolvido na linguagem Javascript/Typescript utilizando React e NodeJs. |
|  RN03  | Todos os Requisitos funcionais dentro da sessão "Obrigatório" devem ser desenvolvidos.           |
|  RN04  | O projeto **NÃO DEVE** ter auxílio de IA (ex.: *chatGPT*, *Github co-pilot*).                                           |


## Requisitos funcionais

### Obrigatórios

#### Conta

| Código | Descrição                                                                                               |
|:------:| ------------------------------------------------------------------------------------------------------- |
|  RF01  | Um usuário deve ser capaz de criar uma nova conta no site.                                              |
| RF02   | Um usuário deve ser capaz de logar na sua conta e visualizar seus dados cadastrados      |
|  RF03  | Um usuário deve ser capaz de editar os dados cadastrais |
|  RF04  | Um usuário deve ser capaz de excluir sua conta.              |
|  RF05  | Ao excluir uma conta, todas as listas e tarefas associadas a mesma devem ser excluidas .                |

#### Filmes
 
| Código | Descrição                                                                                            |
|:------:|:---------------------------------------------------------------------------------------------------- |
|  RF06  | Qualquer usuário deve ser capaz de visualizar os filmes mais populares do momento                    |
|  RF07  | Qualquer usuário deve poder buscar filmes pelo nome                                                  |
|  RF08  | Qualquer usuário deve ser capaz de filtrar por filmes no site (mínimo de 1 filtro)                   |
|  RF09  | Qualquer usuário deve ser capaz de visualizar informações sobre um filme                             |
|  RF10  | Cada filme deve ter **no mínimo**: título do filme, sinopse, avaliação média e imagem do poster do filme |
|  RF11  | Um usuário logado deve ser capaz de favoritar/desfavoritar um filme                                  |
|  RF12  | Um usuário logado deve ser capaz de visualizar sua lista de favoritos                                |
|  RF13  | Um usuário logado deve ser capaz de marcar/desmarcar um filme como já assistido                      |
|  RF14  | Filmes já assistidos devem ser mostrados de forma diferente para o usuário logado                    |
|  RF15  | Um usuário logado deve ser capaz de visualizar uma lista de seus filmes já assistidos                                    |

#### Avaliação:

| Código | Descrição                                                    |
| :----: | ------------------------------------------------------------ |
|  RF16  | Um usuário logado deve ser capaz de avaliar (dar nota para) um filme |
|  RF17  | Um usuário logado deve ser capaz de criar uma postagem (*review*) sobre um filme |
|  RF18  | Um usuário logado deve ser capaz de editar uma postagem feita sobre um filme |
|  RF19  | Um usuário logado deve ser capaz de excluir uma postagem feita sobre um filme |
|  RF20  | Qualquer usuário deve ser capaz de visualizar postagens feitas sobre um filme |

### Extras

#### Autenticação:

| Código | Descrição                                                                                                                                                                                       |
|:------:| ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|  RF21  | O usuário logado deve ser capaz de visualizar dados **somente** de sua própria conta (favoritos, filmes já assistidos, suas avaliações).                                                                              |
|  RF22  | Caso o usuário logado tente acessar os dados de outro, ele deve receber uma mensagem de erro "Não autorizado".                                                                                        |
|  RF23  | Um usuário logado que ficar muito tempo sem acessar a aplicação deve receber o erro "Login expirado". |

#### Filmes +



| Código | Descrição                                                                                    |
|:------:| -------------------------------------------------------------------------------------------- |
|  RF24  | Qualquer usuário deve ser capaz de visualizar os filmes que estão em cartaz nos cinemas      |
|    RF25    | Qualquer usuário deve ser capaz de visualizar os filmes que vão estrear em breve nos cinemas |
|   RF26     | Qualquer usuário deve ser capaz de visualizar os filmes relacionados a um filme selecionado                                                                                             |

####  Lista de Filmes

| Código | Descrição                                                                                 |
|:------:| ----------------------------------------------------------------------------------------- |
|  RF27  | Um usuário logado deve ser capaz de criar uma lista de filmes, com um título para a lista |
|    RF28    | Um usuário logado deve ser capaz de visualizar suas listas de filmes criadas              |
|  RF29  | Um usuário logado deve ser capaz de adicionar/remover filmes a uma lista                  |
|  RF30  | Um usuário logado deve ser capaz de editar o título de uma lista de filmes                |
|    RF31    |    Um usuário logado deve ser capaz de excluir uma lista de filmes criada                                                                                       |

#### Séries e Seriados

A API selecionada para o projeto proporciona outros tipos de entretenimento além de filmes, como séries e seriados. Assim, esse módulo extra tem a finalidade de adicionar essa outra parte ao projeto:

Os requisitos de RF06 a RF20 devem ser implementados também para séries e seriados, e um novo requisito abaixo:

| Código | Descrição                                                                                 |
|:------:| ----------------------------------------------------------------------------------------- |
|  RF32  | Qualquer usuário deve ser capaz de visualizar a temporada e os episódios dessa temporada de uma série/seriado |

## Observações

1) Todos os requisitos funcionais [**Obrigatórios**](#Obrigatórios) devem estar implementados de alguma forma na aplicação, enquanto que os [**Extras**](#Extras) não precisam necessariamente serem implementados, mas somam muito tanto no portfólio de vocês, como na **avaliação do projeto**.

2) **O RN04 deve ser seguido a risca**, pois terá verificação de utilização de IA na correção e caso seja identificado ocorrerá a eliminação imediata do trainee.

3) O README do repositório do projeto final deve conter todas **as instruções necessárias para executar a aplicação** desenvolvida.

4) Alguns requisitos permitem que qualquer usuário da aplicação consiga acessar, enquanto outros restrigem que o usuário esteja logado. Para implementar isso no app deve-se ter o entendimento do que são **rotas públicas e rotas privadas**!

5) Os membros da **Diproj** estarão a disposição para auxiliar em dúvidas e auxílio a respeito do projeto. :purple_heart: 