A aplicação se trata de uma página para cadastro de currículo, o usuário pode criar uma conta, efetuar login, cadastrar e editar um currículo.
A pagina conta com uma área para administradores, onde é listado todos os currículos cadastrados e faz um relatório visual da pretensão salarial dos usuários, alterando a cor do valor indicado pelo usuário conforme a média salarial entre todos os usuários.
As seguintes regras de negocio foram utilizadas para a construção dessa aplicação
*Quando entrar no sistema o usuário precisa ser direcionado para a página de cadastro de seu currículo. As informações a serem preenchidas são: Nome, E-mail, Login, Senha, CPF, Data de Nascimento, Sexo, Estado Civil, Escolaridade, Cursos/ Especializações, Experiência Profissional e pretensão salarial. Você precisa salvar na base de dados a data e hora que o currículo foi registrado no sistema.
*O usuário pode querer alterar seu próprio currículo outro dia. Para isso, desenvolva também uma página de login
*Após estar logado, ou ter completado o cadastro, o usuário poderá registrar ( ou alterar ) seu currículo no sistema.
*O cliente também precisa de um acesso a uma página que liste todos os currículos cadastrados. Esta página deve exibir na lista a "pretensão salarial”. Ao final da lista, em formato de relatório exibir a soma total de "pretensão salarial” de todos os candidatos e a média de pretensão salarial. O sistema deve pintar na lista os salários em verde que estão abaixo da média salarial e em Azul os que estão acima da média salarial.
*Após o envio do form do currículo mostrar uma mensagem de inserção ou alteração.
*Se o usuário já tiver um currículo registrado, permitir a alteração do mesmo ( mostrando os campos já cadastrados pelo usuário )
*Os campos de formato Data devem ser tratados na inserção/alteração. Lembrando que o usuário deve digitar “dia/mês/ano” e na base deve ficar salvo como “ano-mês-dia”.
A aplicação foi construida utilizando React.js juntamente com Node.js e Typescript.
Logo abaixo segue todas as stack que foram utilizadas na construção da aplicação.
Stacks Compartilhadas
-
Lint - Mantém um padrão de código na aplicação.
-
Axios - Foi utilizado para fazer as requisições das API's.
-
TypeScript - Mantém um código legível e evitando erros comuns.
Stacks Front-End
-
React-Router-dom - Gerenciamento de rotas no React.
-
Vite.js - Ferramenta de configuração para uma aplicação React.
-
Zustand - Ferramenta para gerenciamento de estados globais.
-
Vitest - Ferramenta de construção de testes automatizados.
-
Tailwind-css - Ferramenta para estilização de componentes.
-
uuid-react - Ferramenta para geração de ID's únicos.
Stacks Back-End
-
Jest - Ferramenta de construção de testes automatizados.
-
Prisma ORM - ORM de bancos relacionais e não relacionais para Node.js.
-
SQLite - Banco de dados relacional.
-
Cors - Ferramenta de exibição de domínios.
-
Express - Ferramenta para Node.js para construção de servidores web.
-
Express-async-errors - Ferramenta para captura de erros da aplicação.
-
HTTP-status-codes - Padroniza códigos de status HTTP.
-
JOI - Ferramenta para validação de dados.
-
JWT - Ferramenta de criptografia de dados.
Para rodar a aplicação localmente sera necessário ter o Node.js instalado em sua máquina. Voce pode conferir como instalar pela Documentação oficial do Node.
Vamos começar clonado o repositório, para isso utilize o comando a seguir:
git clone git@github.com:KleversonEller/test-amais.git
Após ter clonado o repositório entre na pasta raiz do projeto `./teste-amais` :
cd teste-amais/
Em seguida execute o seguinte comando para fazer a instalação de todas as dependências:
npm run pre:start
Esse comando ira instalar as dependências de todos os servers
e da aplicação web
, isso pode demorar um pouco.
Caso queira pode executar separadamente navegando até a raiz de cada aplicação e utilizar o comando:
npm install
Para inicializar cada aplicação execute os seguintes comando em terminais diferentes:
API de Usuários
npm run dev:users
Ela ira utilizar a porta 3010
da sua máquina.
Ja existem quatro usuários cadastrados para testar a aplicação, sendo eles:
User 1
Email: user1@test.com
Password: test321
User 2
Email: user2@test.com
Password: test321
User 3
Email: user3@test.com
Password: test321
Admin
Email: admin@admin.com
Password: admin321
Caso queira conferir as informações no banco de dados utilize o seguinte comando para visualizar o banco de dados.
Caso esteja na raiz do projeto navegue ate a aplicação back-end:
cd packages/server/users/
Estando na aplicação back-end utilize o comando abaixo:
npx prisma studio
Esse comando ira abrir uma interface do banco de dados no navegador.
Para saber mais sobre a API veja sua Documentação.
Pagina Web
npm run dev:web
A pagina web ira rodar na porta 5173
da sua máquina (http://localhost:5173/).
Para rodar todos os testes da aplicação, na raiz do projeto ./teste-amais
execute o seguinte comando:
npm test
Isso ira executar os testes de cada aplicação de uma única vez.
Caso queira executar os teste separadamente pode utilizar o mesmo comando na raiz de cada aplicação.