Sobre o Projeto | Demonstração | Funcionalidades | Práticas de acessibilidade aplicadas | Deploy | Tecnologias | Como rodar a aplicação? | Como contribuir | Layout | Licença
Esse é um projeto Help Desk, ou seja, uma aplicação voltada para registrar e solucionar problemas relacionado a algum hardware ou sistema de uma empresa.
No caso do Tech Guardian, há dois tipos de usuário: aquele que pode abrir chamados relatando a ocorrência de um problema relacionado a um patrimônio da empresa (denominado como Tech), e aquele que pode sugerir uma solução para resolver o problema em questão (denominado como Guardian).
O objetivo para a construção desse projeto foi estudar e aplicar conceitos básicos de backend, como autenticação, permissão de usuário, renderização estática, CRUD, paginação e filtragem de dados utilizando NodeJs e EJS.
- Deve ser possível autenticar um usuário por e-mail e senha
- Não deve ser possível autenticar um usuário que não existe
- Todas as ações por dentro do sistema devem exigir autenticação do usuário, caso contrário o usuário deve voltar para tela de autenticação
- Deve ser possível verificar se um usuário é do tipo
Tech
,Guardian
ouAdmin
- Deve ser possível cadastrar um usuário
- Ao se cadastrar o usuário pode escolher ser do tipo
Tech
ouGuardian
, mas nãoAdmin
- Não deve ser possível cadastrar um usuário já existente
- O usuário cadastrado deve ter um avatar registrado por padrão
- [] Somente um usuário do tipo
Admin
pode cadastrar outro usuário do tipoAdmin
- Deve ser possível listar chamados, com seus respectivos dados, bem como o usuário que criou o chamado
- Deve ser possível filtrar chamados título, patrimônio associado, data de criação ou por status (se está aberto/pendente ou fechado/solucionado)
- Deve ser possível paginar os chamados
- Deve ser possível aplicar uma ou mais filtragens ao mesmo tempo
- Qualquer tipo de usuário pode ver os chamados listados
- Na listagem de chamados fechados deve ser possível ver os dados do usuário que solucionou o chamado
- Deve ser possível criar um novo chamado
- Chamados recém-criados deve estar com status aberto por padrão
- Apenas usuários do tipo
Tech
podem criar chamados - Os dados do chamado podem ser lidos por qualquer tipo de usuário
- Deve ser possível enviar uma solução escrita que vise solucionar um chamado
- Apenas usuários do tipo
Guardian
podem enviar soluções - Não deve ser possível enviar uma solução associado a um chamado que já esteja fechado, ou seja, solucionado
- A solução enviada pode ser lida por qualquer tipo de usuário
- Deve ser possível abrir novamente um chamado
- Somente chamados que estejam fechados podem ser abertos novamente
- Somente chamados com solução podem ser fechados
- Somente usuário do tipo
Tech
pode abrir novamente ou fechar um chamado - Somente o usuário que criou o chamado pode abri-lo novamente ou fechá-lo
- Deve ser possível editar os dados de um chamado
- Somente os dados inseridos ao criar um chamado podem ser editados
- Somente usuário do tipo
Tech
pode editar um chamado - Somente o usuário que criou o chamado pode editá-lo
- Deve ser possível deletar um chamado
- Não deve ser possível deletar um chamado que não existe
- Somente usuário do tipo
Tech
pode deletar um chamado - Somente usuário que criou o chamado pode deletá-lo
- Todo e qualquer ação feita por um usuário do tipo
Tech
ouGuardian
pode ser feita por um usuário do tipoAdmin
- Deve ser possível cadastrar um patrimônio
- Não deve ser possível cadastrar um patrimônio já existente
- Somente usuário do tipo
Admin
pode cadastrar um patrimônio
- Deve ser possível listar patrimônios
- Deve ser possível filtrar os patrimônios por título
- Deve ser possível paginar os patrimônios
- Somente usuário do tipo
Admin
pode visualizar, filtrar e paginar os patrimônios
- Deve ser possível editar um patrimônio
- Não deve ser possível editar um patrimônio que não existe
- Somente usuário do tipo
Admin
pode editar um patrimônio
- Deve ser possível deletar um patrimônio
- Não deve ser possível deletar um patrimônio que não existe
- Somente usuário do tipo
Admin
pode deletar um patrimônio
- Deve ser possível listar usuários
- Deve ser possível filtrar os usuários por título ou por tipo (se é do tipo
Tech
ouGuardian
) - Deve ser possível paginar os usuários
- Somente usuário do tipo
Admin
pode visualizar, filtrar e paginar os usuários
- Deve ser possível editar a conta de um usuário
- Somente o usuário que cadastrou a conta ou usuário do tipo
Admin
pode editá-la - Deve ser possível mudar o tipo de usuário (
Tech
ouGuardian
, mas não do tipoAdmin
) - Dever ser possível mudar o avatar de usuário enviando um arquivo de imagem válido
- Todos os dados do usuário são atualizados de uma vez, porém o usuário pode escolher altarar ou não sua senha
- Somente usuário do tipo
Admin
pode mudar o tipo de outro usuário paraAdmin
- Deve ser possível deletar a conta de um usuário
- Somente o usuário que cadastrou a conta ou um usuário do tipo
Admin
pode deletá-la
Este projeto foi desenvolvido usando as seguintes tecnologias:
✔️ HTML Para a contrução das páginas
✔️ CSS Para a estilização das páginas
✔️ JS Para a criação de ações dinâmicas das páginas
✔️ NodeJs Para executar JS no lado do servidor e prover os recursos e as funcionalidades principais da aplicação
✔️ EJS - para renderização de recursos estáticos como páginas HTML, arquivos CSS, JS e imagens
✔️ Phosphor icons - para exibição de ícones
✔️ PostgreSQL - banco de dados da aplicação
✔️ Knex - Para a construção automáticas de queries para interagir com o banco de dados
Para mais detalhes acerca das dependências do projeto veja o arquivo package.json
Antes de baixar o projeto você vai precisar ter instalado na sua máquina as seguintes ferramentas:
Além disto é bom ter um editor para trabalhar com o código como VSCode
# Clone este repositório
$ git clone https://github.com/JohnPetros/tech-guardian.git
# Acesse a pasta do projeto
$ cd tech-guardian
# Instale as dependências
$ npm install
# ou
$ yarn add
# Execute as migrations do banco de dados
$ knex migrate:latest
# Execute a aplicação em modo de desenvolvimenro
$ npm run dev
# ou
$ yarn dev
# Provavelmente a aplicação estará rodando na porta 3000, então acesse http://localhost:3333
Além disto é crucial configurar as variáveis de ambiente em um arquivo chamado
.env
antes de executar a aplicação. veja o arquivo .env.example para ver quais variáveis devem ser configuradas
O deploy dessa aplicação foi realizada usando a plataforma da Render, o que implica dizer que você pode acessar aplicação funcionando acessando esse link.
# Fork este repositório
$ git clone https://github.com/JohnPetros/tech-guardian.git
# Cria uma branch com a sua feature
$ git checkout -b minha-feature
# Commit suas mudanças:
$ git commit -m 'feat: Minha feature'
# Push sua branch:
$ git push origin minha-feature
Você deve substituir 'minha-feature' pelo nome da feature que você está adicionando
Você também pode abrir um nova issue a respeito de algum problema, dúvida ou sugestão para o projeto. Ficarei feliz em poder ajudar, assim como melhorar este projeto
O design do projeto, assim como a ideia geral é inpirado no RocketHelp, aplicativo desenvolvido no evento Ignite Lab 03 - React Native da Rocketseat.
Esta aplicação está sob licença do MIT. Consulte o Arquivo de licença para obter mais detalhes sobre.
Feito 💜 by John Petros 👋🏻