Aplicação full stack para cadastro de pessoas desenvolvida como case técnico da vaga ANL ENGENHARIA TI JR - IAM CYBER SECURITY - 822692. A solução permite cadastrar pessoas com validação completa dos dados e geração automática de login único.
Back-end
- Node.js + Express — servidor e API REST
- SQLite (better-sqlite3) — banco de dados localmente
- Cors — comunicação entre front e back
Front-end
- React + Vite — interface web
- Axios — requisições HTTP
- Node.js 18 ou superior instalado
- npm 9 ou superior instalado
git clone <url-do-repositorio>
cd case-itaucd backend
npm install
npm run devO servidor vai iniciar em http://localhost:3001
Na primeira execução, o banco de dados será criado automaticamente com 20 registros existentes.
Em outro terminal:
cd frontend
npm install
npm run devA aplicação vai abrir em http://localhost:5173
| Método | Rota | Descrição |
|---|---|---|
| GET | /health | Verifica se o servidor está rodando |
| GET | /api/pessoas | Lista todas as pessoas cadastradas |
| POST | /api/pessoas | Cadastra uma nova pessoa |
| GET | /api/pessoas/verificar-email?email= | Verifica se email já existe |
{
"nome": "Michele Jesua Cassetari ",
"documento": "529.982.247-25",
"email": "michele@email.com",
"dataNascimento": "15/06/1995",
"cep": "01310-100",
"logradouro": "Avenida Paulista",
"numero": "148",
"bairro": "Bela Vista",
"cidade": "São Paulo",
"uf": "SP",
"complemento": ""
}{
"sucesso": true,
"mensagem": "Pessoa cadastrada com sucesso!",
"dados": {
"nome": "Michele Jesua Cassetari",
"documento": "529.982.247-25",
"email": "michele@email.com",
"dataNascimento": "15/06/1995",
"endereco": {
"cep": "01310-100",
"logradouro": "Avenida Paulista",
"numero": "148",
"bairro": "Bela Vista",
"cidade": "São Paulo",
"uf": "SP",
"complemento": ""
},
"login": "michele"
}
}Nome
- Obrigatório
- Apenas letras e espaços — sem acentos, números ou caracteres especiais
- Mínimo de nome e sobrenome
CPF
- Obrigatório
- Formato: 000.000.000-00
- Validação matemática dos dígitos verificadores
- Obrigatório
- Formato válido com @ e domínio
- Verificação em tempo real de duplicidade
Data de nascimento
- Obrigatória
- Formato: DD/MM/AAAA
- Não pode ser futura
- Deve ser uma data real
CEP
- Obrigatório
- Formato: 00000-000
- Endereço preenchido automaticamente via ViaCEP
O login é gerado automaticamente a partir do nome da pessoa. Consulte o arquivo LOGICA_LOGIN.md para a explicação completa.
case-itau/
├── backend/
│ ├── src/
│ │ ├── database/
│ │ │ └── database.js # conexão e inicialização do banco
│ │ ├── routes/
│ │ │ └── pessoas.js # endpoints da API
│ │ ├── services/
│ │ │ └── loginGen.js # lógica de geração do login
│ │ └── validators/
│ │ └── pessoaValidator.js # validações dos campos
│ ├── server.js # entrada da aplicação
│ └── package.json
├── frontend/
│ ├── src/
│ │ ├── components/
│ │ │ ├── CadastroForm.jsx # formulário principal
│ │ │ └── SucessoCard.jsx # tela de sucesso
│ │ ├── pages/
│ │ │ └── CadastroPage.jsx # página principal
│ │ └── services/
│ │ └── api.js # integração com o back-end
│ └── package.json
├── LOGICA_LOGIN.md
└── README.md