Projeto Final


Descrição

Como projeto final da disciplina deverá ser construído um frontend de uma aplicação web utilizando o framework HTML, CSS e JavaScript (TypeScript).

A temática do projeto deve possuir viés de extensão. Se você precisa de inspiração confira a página HubEx, que contém ideias de projetos de extensão.

A aplicação deve usar CSS, por essa razão, recomenda-se o uso do Bootstrap ou de outro framework CSS de sua preferência para melhorar o visual da aplicação de forma simplificada.

Lembre-se de seguir as boas práticas:

  • Dê preferência ao uso de Javascript e CSS externos ao HTML.
  • Evite o uso de CSS e Javascript diretamente nos elementos HTML.

O backend (API REST) com o qual a sua aplicação deve se comunicar deve ser construído utilizando o Strapi.

O trabalho pode ser feito em equipe


Requisitos mínimos

  • A sua aplicação deve possuir pelo menos x entidades (tabelas), onde :
\[x = \begin{cases} 3 & \quad \text{quando o trabalho for individual }\\ n + 1 & \quad \text{para trabalhos em equipe onde } n \text{ é o tamanho da equipe} \end{cases} \]
  • A aplicação deve implementar os CRUDs de pelo menos duas dessas tabelas.
    • Uma das entidades deve ser dependende da outra, os CRUDs não podem ser totalmente independentes
    • Para trabalhos em equipe com mais de dois membros, as regras de negócio serão avaliada para verificar a elegibilidade do projeto.
  • A aplicação deve possuir pelo menos 3 papéis de usuários de forma que todos os papéis possuam permissões diferentes.
  • A aplicação deve persistir seus dados em banco dados cuja iteração deve ser feita com um backend via requições HTTP.
  • A aplicação deve possuir uma área pública com páginas/serviços acessíveis a todos; e uma área restrita com páginas/serviços acessíveis somente a usuários autenticados.
    • Consequentemente, o frontend deve implementar um mecanismo de autenticação & autorização.
    • O backend deve fornecer um serviço de autenticação usando JWT.
  • A aplicação deve ter uma barra de navegação/menu com todas as opções/links funcionando e a opção de logout deve estar sempre visível.

O código projeto que vai ser desenvolvido deve ser hospedado no GitHub.

TODOS os membros da equipe devem se envolver em atividades que incluem a ESCRITA de código HTML, CSS e principalmente JavaScript ou TypeScript.


Envio da proposta

O autor do trabalho ou a equipe, deve escolher o domínio da aplicação com viés de extensão, e também deve descrever as funcionalidades do sistema, explicando resumidamente os requisitos do sistema com suas entidades principais. Essa definição deve ser enviada e aprovada pelo professor.

O envio da proposta deve ser feito via Github Classroom. Ao aceitar o assingment você obterá um repositório template, então você deverá alterar o arquivo README.md localizado na raiz do repositório e então, realizar o commit e push com as mudanças.

Submeter proposta via Github Classroom

Os trabalhos devem necessariamente ter domínios distintos.

A ordem de envio para o professor determina quem tem prioridade por determinado domínio. Caso o domínio já tenha sido escolhido por outro aluno, deve-se propor um novo domínio.


Envio das telas

O envio das telas deve ser feito via commit no repositório do GitHub gerado pelo GitHub Classroom. Para realizar a entrega, basta alterar o repositório e realizar o push para o repositório.

Para esta entrega deverá ser enviadas a primeira versão de pelo menos quatro telas:

  • A tela de login
  • A tela de cadastro de usuários
  • A tela principal do sistema (estou considerando que é primeira tela vista após o login)
  • Mais uma tela que a equipe pode escolher

Por se tratar da primeira versão de cada tela, a parte visual não precisa ser feito com o maior capricho. A ideia é que esta entrega não tome muito tempo, ainda assim, espero que as telas sejam capazes de apresentar o sistema de froma geral.

Ao não entregar as telas, a equipe terá dois pontos descontados do valor da nota final do projeto. Portanto, neste cenário a nota da equipe seria no máximo 8.


Entrega final

Antes de enviar o seu projeto para a avaliação será necessário realizar o preenchimento do restante do arquivo README.md do seu projeto.

Informações sobre como utilizar o sistema, além de nomes de usuários e senhas devem ser enviadas por email para que eu possa testar o sistema.

Projetos que não disponibilizarem no README.md as informações acima serão desconsiderados.

Na data final da entrega, todo o código deve estar disponibilizado no Github

Não serão aceitos trabalhos enviados em formato compactados, ex: zip, rar e similares

Caso o trabalho seja feito em equipe, cada membro da equipe deve usar seu próprio usuário para escrever código.

Não serão aceitos trabalhos implementados em um único commit.

Strapi:

O Strapi por padrão utiliza o banco Sqlite, que armazena todo a base de dados em um único arquivo. Logo, se você não alterou nenhuma configuração relacionada ao armazenamento de dados, a base de dados da sua aplicação deve estar localizada em uma pasta oculta chamada .tmp (isso mesmo, tem um ponto antes do nome), dentro da pasta do Strapi.

Por padrão, esse arquivo não é enviado ao GitHub por motivos óbvios, porém para facilitar a correção, peço que envie o arquivo do banco para o GitHub. Para isso, você precisará alterar o arquivo .gitignore presente na raiz do projeto Strapi e remover a segunite linha:

.tmp

Depois disso, será possível commit e enviar a pasta .tmp e o arquivo data.db gerado pelo Strapi.


Apresentação do trabalho

O trabalho também deverá necessariamente ser apresentado conforme cronograma da disciplina. A não apresentação do trabalho pelo aluno em sua anulação.


Table of contents


This site uses Just the Docs, a documentation theme for Jekyll.