Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

4 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Case Técnico — Cadastro de Pessoas

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.

Tecnologias utilizadas

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

Como executar o projeto

Pré-requisitos

  • Node.js 18 ou superior instalado
  • npm 9 ou superior instalado

1. Clonar o repositório

git clone <url-do-repositorio>
cd case-itau

2. Iniciar o back-end

cd backend
npm install
npm run dev

O servidor vai iniciar em http://localhost:3001 Na primeira execução, o banco de dados será criado automaticamente com 20 registros existentes.

3. Iniciar o front-end

Em outro terminal:

cd frontend
npm install
npm run dev

A aplicação vai abrir em http://localhost:5173

Endpoints da API

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

Exemplo de requisição — POST /api/pessoas

{
  "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": ""
}

Exemplo de resposta — sucesso

{
  "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"
  }
}

Regras de validação

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

E-mail

  • 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

Lógica de geração do login

O login é gerado automaticamente a partir do nome da pessoa. Consulte o arquivo LOGICA_LOGIN.md para a explicação completa.

Estrutura do projeto

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

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages