Conheça o projeto
Neste desafio, vamos desenvolver um Sistema de Gerenciamento de Chamados. Você deverá construir uma aplicação de ponta a ponta com front-end e back-end, utilizando as tecnologias aprendidas na formação Full-Stack, simulando um aplicativo de gerenciamento de chamados com painel de Administrador, Técnico e Cliente.
Recursos
Materiais para você usar como base para o desenvolvimento
Instruções
Estrutura, regras e requisitos do projeto
1. Requisitos
Tecnologias e Recursos
- Backend Node.js:
- Framework: Express.js;
- Banco de dados: PostgreSQL;
- ORM: Prisma ou Query Builder: Knex;
- Testes:
- Framework de testes: Jest.
- Deploy:
- Deploy do backend em Render;
- Deploy do front-end: Vercel ou Netlify.
- Outros:
- Vite;
- Docker;
- TypeScript;
- Validação com Zod;
- JWT;
- TailwindCSS.
👉 O Sistema terá três personas: o admin, o técnico e o cliente;
O Admin: É a pessoa responsável pela gestão do Sistema
- O
Admindeve criar, listar e editar contas deTécnicos.
💡Ao criar uma conta de Técnico uma senha provisória será criada pelo Admin e posteriormente repassada ao Técnico que poderá alterar essa senha após o primeiro acesso à sua conta.
💡Ao criar um Técnico seu horário de disponibilidade padrão será o horário comercial: 08:00 às 12:00 e 14:00 às 18:00
Exemplo de Array de horários: ['08:00', '09:00', '10:00', '11:00', '14:00', '15:00', '16:00', '17:00']
🚩Nessa versão do Sistema não haverá exclusão de contas de Técnicos, mas você pode incluir como uma funcionalidade adicional ao seu projeto. Se desafie!
[OPCIONAL]
- O
Admindeve criar, listar, editar e desativar osServiçosque serão executados pelosTécnicos.
💡Ao desativar um Serviço, esse Serviço não deve ser listado na criação de um novo Chamado mas deve deve permanecer nos Chamados já criados.Você pode utilizar a estratégia de Soft Delete para essa funcionalidade.
- O
Admindeve listar, editar e excluir contas deClientes.
💡️Ao excluir uma conta de Cliente todos os Chamados criados por esse Cliente serão excluídos também.
- O
Admindeve conseguir listar todos osChamadose suas informações; - O sistema deve permitir ao
Admineditar o status dosChamados.
O Técnico: É a pessoa responsável por executar os Serviços que foram cadastrados pelo Admin e foram solicitados pelos Clientes através de um Chamado
- O sistema deve permitir ao
Técnicoeditar o seu próprio perfil.
🚩Nessa versão do Sistema não haverá exclusão de contas de Técnicos, mas você pode incluir como uma funcionalidade adicional ao seu projeto. Se desafie!
[OPCIONAL]
- O sistema deve permitir o envio de imagem para ser usada no perfil do
Técnico; - O sistema deve permitir ao
Técnicolistar todos osChamadosatribuídos a ele; - O sistema deve permitir ao
Técnicoadicionar novos Serviços aoChamadose for necessário; - O sistema deve permitir ao
Técnicoeditar o status doChamado.
💡️Quando o Técnico iniciar um atendimento o status do Chamado deve mudar para
'Em atendimento'.
💡️Quando o Técnico encerrar um atendimento o status do Chamado deve mudar para
'Encerrado'
🚫 Não é permitido ao Técnico:
- Criar, alterar ou excluir contas de
Clientes. - Criar
Chamados.
O Cliente: É a pessoa responsável por criar um Chamado
- O
Clientedeve conseguir criar, editar e excluir sua conta deCliente.
💡️Ao excluir uma conta de Cliente todos os Chamados criados por esse Cliente serão excluídos também.
- O sistema deve permitir o envio de imagem para ser usada no perfil do
Cliente. - O sistema deve permitir ao
Clienteescolher umTécnicodisponível durante a criação doChamado. - O sistema deve permitir ao
Clientevisualizar um histórico com todos osChamadosjá criados por ele.
🚫 Não é permitido ao Cliente:
- Alterar ou excluir outras contas que não lhe pertençam.
- Alterar qualquer informação de um
Chamadoapós ser criado.
O Chamado: É a relação entre um Cliente e um Técnico
- O sistema deve permitir que vários
Chamadossejam criados por umCliente; - O Cliente deve criar um Chamado selecionando a categoria do Serviço;
- Todo
Chamadodeve ter pelo menos umServiçoselecionando, podendo ser adicionado novosServiçospeloTécnicoresponsável pelo atendimento; - O
Chamadodeve exibir o valor doServiçosolicitado e o valor de cadaServiçoadicional incluído peloTécnicoassim como o somatório do valor total de todos osServiços; - Durante a criação de um
ChamadooClientedeve atribuir umTécnicoresponsável; - O
Chamadopode ter seu status alterado peloTécnicoresponsável ou peloAdmin; - O
Chamadosó pode ter status de:Aberto,Em atendimentoouEncerrado.
O Serviço: Categoria de atividades que serão executadas pelo Técnico e solicitadas pelos Clientes
- Somente o
Admindeve criar, editar e desativar as informações dos Serviços; - Os
Serviçosserão parte das informações de umChamado; - Cada
Serviçoterá um valor a ser cobrado doCliente.
2. Pontos de atenção
- O projeto deve atender a todas as especificações listadas acima.
- Deve existir uma conta de administrador.
- Devem existir pelo menos 3 contas de técnicos:
- Técnico 1: atende das 08h às 12h e das 14h às 18h.
- Técnico 2: atende das 10h às 14h e das 16h às 20h.
- Técnico 3: atende das 12h às 16h e das 18h às 22h.
- Devem existir pelo menos 5 serviços a serem oferecidos:
- Exemplos de serviços:
- Instalação e atualização de softwares
- Instalação e atualização de hardwares
- Diagnóstico e remoção de vírus
- Suporte a impressoras
- Suporte a periféricos
- Solução de problemas de conectividade de internet
- Backup e recuperação de dados
- Otimização de desempenho do sistema operacional
- Configuração de VPN e Acesso Remoto
- Exemplos de serviços:
- Os usuários deverão se autenticar para ter acesso a aplicação através da tela de login. Deve ser utilizado JWT no processo de autenticação.
- A aplicação deve ser responsiva de acordo com o conceito de Mobile First seguindo o layout do Figma.
- A sua aplicação deverá consumir a sua própria API.
- Os repositórios devem conter um README bem detalhado tanto no back-end quanto no front-end com link de deploy e instruções para a execução da aplicação localmente.
- Deve ser feito o deploy tanto do front-end quanto do back-end.
3. Desenvolvendo o projeto
Para desenvolver esse projeto, recomendamos utilizar as principais tecnologias que utilizamos durante o desenvolvimento do primeiro módulo da formação.
Caso você tenha alguma dificuldade você pode ir no nosso fórum e deixar sua dúvida por lá!
Após terminar o desafio, caso você queira, você pode tentar dar o próximo passo e deixar a aplicação com a sua cara. Tente mudar o layout, cores, ou até adicionar novas funcionalidades para ir além! 🚀
4. Entrega
Após concluir o desafio, você deve enviar a URL do seu código no Github.
Além disso, que tal fazer um post no LinkedIn compartilhando o seu aprendizado e contando como foi a experiência? É uma excelente forma de demonstrar seus conhecimentos e atrair novas oportunidades!
Obs: Se você se sentir à vontade, pode postar um print do resultado final e nos marcar! Vai ser incrível acompanhar a sua evolução! 💜
5. Considerações finais
Lembre-se que o intuito de um desafio é te impulsionar, por isso, dependendo do desafio, pode ser que você precise ir além do que foi discutido em sala de aula. Mas isso não é algo ruim: ter autonomia para buscar informações extras é uma habilidade muito valiosa e vai ser ótimo pra você treinar ela aqui com a gente!
E lembre-se: tenha calma! Enfrentar desafios faz parte do seu processo de aprendizado!
Se precisar de alguma orientação ou suporte, estamos aqui com você! Bons estudos e boa prática! 💜
Feito com 💜 por Rocketseat 👋
1. Requisitos
Tecnologias e Recursos
- Backend Node.js:
- Framework: Express.js;
- Banco de dados: PostgreSQL;
- ORM: Prisma ou Query Builder: Knex;
- Testes:
- Framework de testes: Jest.
- Deploy:
- Deploy do backend em Render;
- Deploy do front-end: Vercel ou Netlify.
- Outros:
- Vite;
- Docker;
- TypeScript;
- Validação com Zod;
- JWT;
- TailwindCSS.
👉 O Sistema terá três personas: o admin, o técnico e o cliente;
O Admin: É a pessoa responsável pela gestão do Sistema
- O
Admindeve criar, listar e editar contas deTécnicos.
💡Ao criar uma conta de Técnico uma senha provisória será criada pelo Admin e posteriormente repassada ao Técnico que poderá alterar essa senha após o primeiro acesso à sua conta.
💡Ao criar um Técnico seu horário de disponibilidade padrão será o horário comercial: 08:00 às 12:00 e 14:00 às 18:00
Exemplo de Array de horários: ['08:00', '09:00', '10:00', '11:00', '14:00', '15:00', '16:00', '17:00']
🚩Nessa versão do Sistema não haverá exclusão de contas de Técnicos, mas você pode incluir como uma funcionalidade adicional ao seu projeto. Se desafie!
[OPCIONAL]
- O
Admindeve criar, listar, editar e desativar osServiçosque serão executados pelosTécnicos.
💡Ao desativar um Serviço, esse Serviço não deve ser listado na criação de um novo Chamado mas deve deve permanecer nos Chamados já criados.Você pode utilizar a estratégia de Soft Delete para essa funcionalidade.
- O
Admindeve listar, editar e excluir contas deClientes.
💡️Ao excluir uma conta de Cliente todos os Chamados criados por esse Cliente serão excluídos também.
- O
Admindeve conseguir listar todos osChamadose suas informações; - O sistema deve permitir ao
Admineditar o status dosChamados.
O Técnico: É a pessoa responsável por executar os Serviços que foram cadastrados pelo Admin e foram solicitados pelos Clientes através de um Chamado
- O sistema deve permitir ao
Técnicoeditar o seu próprio perfil.
🚩Nessa versão do Sistema não haverá exclusão de contas de Técnicos, mas você pode incluir como uma funcionalidade adicional ao seu projeto. Se desafie!
[OPCIONAL]
- O sistema deve permitir o envio de imagem para ser usada no perfil do
Técnico; - O sistema deve permitir ao
Técnicolistar todos osChamadosatribuídos a ele; - O sistema deve permitir ao
Técnicoadicionar novos Serviços aoChamadose for necessário; - O sistema deve permitir ao
Técnicoeditar o status doChamado.
💡️Quando o Técnico iniciar um atendimento o status do Chamado deve mudar para
'Em atendimento'.
💡️Quando o Técnico encerrar um atendimento o status do Chamado deve mudar para
'Encerrado'
🚫 Não é permitido ao Técnico:
- Criar, alterar ou excluir contas de
Clientes. - Criar
Chamados.
O Cliente: É a pessoa responsável por criar um Chamado
- O
Clientedeve conseguir criar, editar e excluir sua conta deCliente.
💡️Ao excluir uma conta de Cliente todos os Chamados criados por esse Cliente serão excluídos também.
- O sistema deve permitir o envio de imagem para ser usada no perfil do
Cliente. - O sistema deve permitir ao
Clienteescolher umTécnicodisponível durante a criação doChamado. - O sistema deve permitir ao
Clientevisualizar um histórico com todos osChamadosjá criados por ele.
🚫 Não é permitido ao Cliente:
- Alterar ou excluir outras contas que não lhe pertençam.
- Alterar qualquer informação de um
Chamadoapós ser criado.
O Chamado: É a relação entre um Cliente e um Técnico
- O sistema deve permitir que vários
Chamadossejam criados por umCliente; - O Cliente deve criar um Chamado selecionando a categoria do Serviço;
- Todo
Chamadodeve ter pelo menos umServiçoselecionando, podendo ser adicionado novosServiçospeloTécnicoresponsável pelo atendimento; - O
Chamadodeve exibir o valor doServiçosolicitado e o valor de cadaServiçoadicional incluído peloTécnicoassim como o somatório do valor total de todos osServiços; - Durante a criação de um
ChamadooClientedeve atribuir umTécnicoresponsável; - O
Chamadopode ter seu status alterado peloTécnicoresponsável ou peloAdmin; - O
Chamadosó pode ter status de:Aberto,Em atendimentoouEncerrado.
O Serviço: Categoria de atividades que serão executadas pelo Técnico e solicitadas pelos Clientes
- Somente o
Admindeve criar, editar e desativar as informações dos Serviços; - Os
Serviçosserão parte das informações de umChamado; - Cada
Serviçoterá um valor a ser cobrado doCliente.
2. Pontos de atenção
- O projeto deve atender a todas as especificações listadas acima.
- Deve existir uma conta de administrador.
- Devem existir pelo menos 3 contas de técnicos:
- Técnico 1: atende das 08h às 12h e das 14h às 18h.
- Técnico 2: atende das 10h às 14h e das 16h às 20h.
- Técnico 3: atende das 12h às 16h e das 18h às 22h.
- Devem existir pelo menos 5 serviços a serem oferecidos:
- Exemplos de serviços:
- Instalação e atualização de softwares
- Instalação e atualização de hardwares
- Diagnóstico e remoção de vírus
- Suporte a impressoras
- Suporte a periféricos
- Solução de problemas de conectividade de internet
- Backup e recuperação de dados
- Otimização de desempenho do sistema operacional
- Configuração de VPN e Acesso Remoto
- Exemplos de serviços:
- Os usuários deverão se autenticar para ter acesso a aplicação através da tela de login. Deve ser utilizado JWT no processo de autenticação.
- A aplicação deve ser responsiva de acordo com o conceito de Mobile First seguindo o layout do Figma.
- A sua aplicação deverá consumir a sua própria API.
- Os repositórios devem conter um README bem detalhado tanto no back-end quanto no front-end com link de deploy e instruções para a execução da aplicação localmente.
- Deve ser feito o deploy tanto do front-end quanto do back-end.
3. Desenvolvendo o projeto
Para desenvolver esse projeto, recomendamos utilizar as principais tecnologias que utilizamos durante o desenvolvimento do primeiro módulo da formação.
Caso você tenha alguma dificuldade você pode ir no nosso fórum e deixar sua dúvida por lá!
Após terminar o desafio, caso você queira, você pode tentar dar o próximo passo e deixar a aplicação com a sua cara. Tente mudar o layout, cores, ou até adicionar novas funcionalidades para ir além! 🚀
4. Entrega
Após concluir o desafio, você deve enviar a URL do seu código no Github.
Além disso, que tal fazer um post no LinkedIn compartilhando o seu aprendizado e contando como foi a experiência? É uma excelente forma de demonstrar seus conhecimentos e atrair novas oportunidades!
Obs: Se você se sentir à vontade, pode postar um print do resultado final e nos marcar! Vai ser incrível acompanhar a sua evolução! 💜
5. Considerações finais
Lembre-se que o intuito de um desafio é te impulsionar, por isso, dependendo do desafio, pode ser que você precise ir além do que foi discutido em sala de aula. Mas isso não é algo ruim: ter autonomia para buscar informações extras é uma habilidade muito valiosa e vai ser ótimo pra você treinar ela aqui com a gente!
E lembre-se: tenha calma! Enfrentar desafios faz parte do seu processo de aprendizado!
Se precisar de alguma orientação ou suporte, estamos aqui com você! Bons estudos e boa prática! 💜
Feito com 💜 por Rocketseat 👋
Tarefas
Use este checklist para ajudar a organizar a sua entrega