--- 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: