Rocketseat

Gerenciador de Contatos

Gerenciador de Contatos

Conheça o projeto

Neste desafio, você vai desenvolver um Gerenciador de Contatos com autenticação de usuários e proteção de dados sensíveis. As informações mais importantes, como telefone e e-mail, deverão ser criptografadas e só poderão ser visualizadas após o desbloqueio com senha, garantindo privacidade e segurança dentro da aplicação.

Recursos

Materiais para você usar como base para o desenvolvimento

Instruções

Estrutura, regras e requisitos do projeto

1. Estrutura inicial

  • Crie um projeto com a estrutura base do PHP;
  • Organize pastas e os arquivos criados.

2. Requisitos

Tela de login

  • Crie o formulário com os campos:
    • Nome;
    • E-mail;
    • Senha;
    • Confirmação de senha
  • Adicione os requisitos de senha: mínimo 8 caracteres, número ou símbolo e senhas iguais;
  • Valide os campos em tempo real, mostrando erros e acertos visualmente;
  • Crie o botão "Criar conta";
  • Habilite o botão apenas quando todos os requisitos forem atendidos;
  • Mostre mensagens de erro claras quando algo estiver incorreto.

Lista de contatos

  • Renderize a tabela com colunas:
    • Nome;
    • Telefone,
    • E-mail;
    • Ícones de ações;
  • Os contatos devem ser exibidos em ordem alfabética pelo nome automaticamente;
  • Agrupe por letra inicial e destaque a letra ativa no momento.
  • Implemente a lógica para editar um contato;
  • Implemente a lógica para excluir um contato.

Adicionar contato

  • Crie um botão para adicionar contato;
  • Crie o formulário com os campos:
    • Foto de contato;
    • Nome;
    • Telefone;
    • E-mail.
  • Valide campos obrigatórios e formatos;
  • Ao salvar, insira o contato na letra correta sem recarregar a página.

Criptografia de dados

  • Ao clicar no ícone de cadeado, criptografe/mascare telefone e e-mail do contato;
  • Exiba dados protegidos como “********” até serem descriptografados;
  • O estado deve persistir enquanto a sessão estiver ativa;
  • Mostre feedback de sucesso/erro nas operações de criptografar/descriptografar.
  • Implementar modal para solicitar senha antes de exibir dados quando estiverem criptografados;
  • Senha incorreta não revela dados.

Pesquisa

  • Implemente busca por nome;
  • Se não houver resultados, mostre estado vazio.

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

Projetos relacionados