Indice
| Membro | Responsabilidade(s) |
|---|---|
| David Teixeira | 🎲 Suporte Backend |
| Denner Pantoja | 🔍 Artigo e Pesquisa |
| Endrew Diaz | 🎲 Suporte Frontend |
| Fernando Cosme | 🔍 Artigo e Pesquisa |
| Iderlan Lira | 🏴 Confecção do Banner & Suporte Artigo |
| Joelson Lima | 🌎 Fullstack & Design das Telas |
| Leonardo Chagas | 🎲 Suporte Frontend |
| Natanael Falcão | 📔 Desenvolvimento do Artigo & Documentação |
| Oscar Oliveira | 🔍 Artigo e Pesquisa |
| Stefanny Lohany | 🍁 Confecção de Fôlders & Suporte Design |
| Thiago Leão | 👔 Confecção da Camisa & Identidade Visual |
O projeto Task 2 Do (T2D), que foi construido na temática da Inovatec 2023 da FAMETRO, têm como objetivo facilitar a gerência de projetos colaborativos, utilizando de tecnologias modernas, responsivas e reativas para esse propósito.
A stack utilizada para o desenvolvimento da aplicação é chamada MEVN
M: Representa o banco de dados MariaDBE: Representa o framework Express.js, usado no Backend com NodeV: Representa o framework Vue.js, usado no FrontendN: Representa o Node.js, utilizado no Backend
- Descrição: Vue.js é um framework progressivo Javascript que permite a criação de aplicações Web reativas através de uma linguagem única utilizando Single File Components e tecnologia Client Side Rendering
- Uso: Vue.js foi usado para criar as telas da aplicação, processar formulários diversos, consumir a API da aplicação e tudo relacionado a construção da UI/UX
- Justificativa: Vue.js é um framework simples de implementar e utilizar em aplicações Web, por sua linguagem ser Javascript, é extremamente leve, flexível e extensível. Abaixo alguns pacotes utilizados para extender funcionalidades
- Vue Router: Pacote oficial do Vue responsável por gerenciar as páginas e rotas do cliente, simulando uma aplicação com várias páginas em um unico arquivo utilizando Javascript
- Axios: Um cliente simples baseado em promises para fazer requisições HTTP (
GET,POST,PUT,DELETE, etc). - Pinia: Um gerenciador de estados globais para Vue, utilizado para gerenciar os estados de login do usuário de forma local
- Vue3 Markdown It: Um renderizador de markdown em tempo real para Vue.js. Usado para melhorar o sistema de visualização de documentos com o poderoso Markdown
- Descrição: Node.js é uma plataforma e interpretador de código Javascript que funciona fora do navegador
- Uso: Node.js foi utilizado para criar os serviços backend da aplicação, como as resposta da API REST, comunicação com o banco de dados e tudo relacionado a infraestrutura da aplicação
- Justificativa: Node.js é uma tecnologia simples de utilizar, devido o mesmo fazer o uso da linguagem Javascript para rodar as tarefas. É possível instalar pacotes utilizando o gerenciador de pacotes NPM para acelerar o desenvolvimento. Abaixo a lista de pacotes
- Express.js: É um microframework Web backend que agiliza o processo de construção da API, sendo extremamente extensível e flexível.
- Prisma: É um ORM que permite a comunicação com o banco de dados através do código
- Express Session: Permitiu criar as sessões de usuário, para gerenciar logins e logouts
- Bcrypt: Permite encriptar e decriptar as senhas
- Typescript: Um typeset do Javascript, que permite uma programação mais segura usando tipos de dados, POO melhorada e vários outros recursos
- CORS: Permite a transmissão de dados entre origens cruzadas, permitindo a comunicação entre a app frontend e a API
- Descrição: MariaDB é um sistema de gerenciamento de banco de dados relacional (RDBMS) de código aberto que se originou como um "fork" do MySQL.
- Uso: MariaDB foi utilizada para gerenciar um banco de dados, para armazenamento e controle dos dados do usuário final
- Justificativa: O banco MariaDB é compatível com o MySQL, oferece recursos avançados e é amplamente utilizado em aplicações de diferentes áreas.
🧑 Usuário
- Realizar cadastro
- Deve-se enviar um email, nome de usuário, senha e repetição de senha
- O email será validado com RegEx
- O email e nome de usuário serão recusados caso estejam em uso
- A senha será validada com RegEx
- A senha será comparada com a repetição e encriptada com hash
- Realizar login
- Deve-se enviar um email e senha cadastrados
- O email será verificado e a senha comparada com o hash
- O sistema realizará login alocando uma sessão e dando acesso a funcionalidades somente para usuários logados
- Realizar logout
- O sistema validará o login e executará o logout, desalocando a sessão
- Atualizar email
- Deve-se enviar um email novo
- O email será validado com RegEx
- O email será recusado caso esteja em uso
- Atualizar nome de usuário
- Deve-se enviar um nome de usuário novo
- O nome de usuário será recusado caso esteja em uso
- Atualizar senha
- Deve-se enviar uma senha, nova senha e repetição da nova senha
- A senha será comparada com o hash
- A senha será validada com RegEx
- A nova senha será comparada com a repetição da nova senha e encriptada com hash
- Deletar usuário
- O sistema validará o login e executará a deleção da conta
📁 Projeto
- Criar um novo projeto
- Deve-se validar se o usuário está logado
- O projeto deve ter um nome e descrição obrigatórios
- O nome deve ser menor que 20 caracteres
- A descrição deve ser menor que 20 caracteres
- Editar o nome do projeto
- Deve-se validar se o usuário está logado
- Deve-se enviar um nome válido e menor que 20 caracteres
- O sistema verifica se o ID do projeto enviado está correto e se pertence realmente ao usuário logado
- Editar a descrição do projeto
- Deve-se validar se o usuário está logado
- Deve-se enviar uma descrição válida e menor que 50 caracteres
- O sistema verifica se o ID do projeto enviado está correto e se pertence realmente ao usuário logado
- Apagar um projeto
- Deve-se validar se o usuário está logado
- O sistema verifica se o ID do projeto enviado está correto e se pertence realmente ao usuário logado
- Mostrar os projetos do usuário
- Deve-se validar se o usuário está logado
- Se o usuário tiver projetos ≤ 0, retorna um erro
404 - Mostra os projetos
📄 Documento
- Criar um novo documento
- Deve-se validar se o usuário está logado e se o projeto cujo documento está sendo adicionado pertence a esse usuário
- Deve-se enviar um nome e descrição válidos
- O documento deve ter um nome e descrição obrigatório
- O nome deve ser menor que 20 caracteres
- A descrição deve ser menor que 20 caracteres
- Pegar todos os documentos de um projeto
- Deve-se validar se o usuário está logado e se o projeto cujo documentos estão sendo pegos pertence a esse usuário
- O sistema retorna os documentos do projeto OU um erro
404caso não hajam documentos cadastrados no projeto
- Pegar todos os documentos compartilhados com o usuário logado
- Deve-se validar se o usuário está logado
- O sistema retorna os documentos compartilhados com o usuário logado OU um erro
404caso não hajam documentos compartilhados com o mesmo
- Compartilhar o documento do usuário logado com outro usuário
- Deve-se validar se o usuário está logado
- O sistema valida se o usuário a receber o compartilhamento é o mesmo do logado. Se sim retorna um erro
- O sistema verifica se o usuário a receber existe realmente do banco de dados
- O sistema valida se os dados estão condizentes, ou seja, se o documento a ser compartilhado realmente pertencem a um projeto do usuário logado E se o documento existe
- O sistema deve verificar se o documento já está sendo compartilhado. Caso sim, remove o acesso do usuário anterior
- O sistema adiciona acesso ao documento ao usuário enviado
- Remover o compartilhamento de um documento com outro usuário
- Deve-se validar se o usuário está logado e se o documento em questão pertence a algum projeto do mesmo
- O sistema valida se o documento realmente está sendo compartilhado
- O sistema remove o acesso ao documento do outro usuário
- Atualizar o nome do documento
- Deve-se validar se o usuário está logado e se o documento em edição pertence a algum projeto do usuário
- Deve-se enviar um nome válido e menor que 20 caracteres
- O sistema atualiza o nome do projeto
- Atualizar a descrição do documento
- Deve-se validar se o usuário está logado e se o documento em edição pertence a algum projeto do usuário
- Deve-se enviar uma descrição válida e menor que 50 caracteres
- O sistema atualiza a descrição do projeto
- Deletar um documento
- Deve-se validar se o usuário está logado e se o documento a ser deletado pertence a algum projeto do usuário
- O sistema deleta o documento do projeto
- Pegar documento
- Deve-se validar se o usuário está logado e se o documento a ser visto pertence a algum projeto do usuário OU se está sendo compartilhado com este usuário logado
- Retorna o documento em questão
- Salvar documento (
conteúdo)- Deve-se validar se o usuário está logado e se o documento a ser visto pertence a algum projeto do usuário OU se está sendo compartilhado com este usuário logado
- Deve-se enviar o conteúdo do documento
- Atualiza o conteúdo do documento
🌎 Frontend
- A app tem um sistema de mensagens para informar sobre erros e sucessos, baseado em regras internas e respeitando as regras de negócio implementadas na API
- A app tem um sistema de roteamento de views dinâmico, renderizando uma página 404 com instruções caso o usuário venha a ir para uma rota que não existe
- A app também conta com um sistema de redirecionamento, dependendo de estado de login e de respostas da API
- Ao realizar ações criticas, como deleção de dados, o usuário deve confirmar a escolha na tela, sendo exibido avisos sobre as consequências das ações descritas
