{"id":16432699,"url":"https://github.com/teles/caju-front-teste-1","last_synced_at":"2026-07-21T08:30:17.812Z","repository":{"id":251686565,"uuid":"835858166","full_name":"teles/caju-front-teste-1","owner":"teles","description":"Projeto para vaga de frontend Sênior na Caju","archived":false,"fork":false,"pushed_at":"2024-08-05T01:48:25.000Z","size":2153,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-02-17T21:06:38.407Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/teles.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-07-30T17:07:35.000Z","updated_at":"2024-08-05T13:55:00.000Z","dependencies_parsed_at":"2024-08-05T04:20:37.861Z","dependency_job_id":null,"html_url":"https://github.com/teles/caju-front-teste-1","commit_stats":null,"previous_names":["teles/caju-front-teste-1"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/teles%2Fcaju-front-teste-1","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/teles%2Fcaju-front-teste-1/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/teles%2Fcaju-front-teste-1/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/teles%2Fcaju-front-teste-1/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/teles","download_url":"https://codeload.github.com/teles/caju-front-teste-1/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":240690019,"owners_count":19841947,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-10-11T08:44:09.346Z","updated_at":"2026-07-21T08:30:17.748Z","avatar_url":"https://github.com/teles.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Caju Front End Teste\n\nEste é o repositório do projeto Caju Front Test. Aqui estão as instruções para configurar e executar o projeto, incluindo como rodar o banco de dados, o Storybook, os testes unitários e os testes E2E.\n\n\u003e [!NOTE]\n\u003e As instruções originais para esse teste ainda [estão presentes logo abaixo](#instruções-originais)\n\n## Pré-requisitos\n\n- Node.js 20.x\n- Yarn\n- NVM (Node Version Manager)\n\n## Configuração do Projeto\n\n### 1. Clonar o repositório\n\n```bash\ngit clone https://github.com/teles/caju-front-test.git\ncd caju-front-test\n```\n\n### 2. Instale dependências\n\n```bash\nnvm use # certifique-se de possuir o nvm instalado\nyarn install\n```\n\n### 3. Rode o banco de dados\n\nPara iniciar o banco de dados com JSON Server:\n\n```bash\nyarn init:db\n```\n\n### 4. Rode o projeto\n\n```bash\nyarn dev\n```\n\nO projeto estará disponível em http://localhost:3001.\n\n### 5. Rodar o Storybook\n\nPara rodar o Storybook, utilize o comando:\n\n```bash\nyarn storybook\n```\n\n### 6. Rode os testes unitários/integração\n\n```bash\nyarn test\n```\n\nMantenha os testes rodando e observando alterações com o comando:\n\n```bash\nyarn test:dev\n```\n\n### 7. Rode os testes e2e cypress\n\nCertifique-se de que o servidor de desenvolvimento está rodando em http://localhost:3001.\n\nPara rodar os testes com interface do navegador:\n\n```bash\nyarn cypress open\n```\n\nPara rodar os testes na linha de comando (headless):\n\n```bash\nyarn cypress:run\n```\n\n## Instruções originais\n\nEsse é um teste para você demonstrar suas experiencia como front end, a aplicação basicamente se divide em duas telas, o `Dashboard` e um `Formulário`.\nVoce deverá criar uma plataforma de admissão que permita o usuario adicionar uma admissão com as opções de aprovar, reprovar ou excluir.\n\nO `Dashboard` mostra todas as admissões criadas, com as opções de Aprovar, reprovar, e excluir.\n\n![Screenshot 2024-06-11 at 11 48 24 AM](https://github.com/caju-beneficios/caju-front-teste-1/assets/31169925/fedeff5c-a0d3-4df1-aebd-1f2d25c56a48)\n\nDashboard com os cards. (Utilize o componente `RegistrationCard`)\n\n![Screenshot 2024-06-11 at 1 52 35 PM](https://github.com/caju-beneficios/caju-front-teste-1/assets/31169925/3b002341-454b-4b24-82cb-6390656b56cc)\n\nO `Formulario` exibe um formulário simples que será utilizado para preencher o dashboard com os dados.\n\n![Screenshot 2024-06-11 at 11 48 47 AM](https://github.com/caju-beneficios/caju-front-teste-1/assets/31169925/bbbb211c-165f-40e5-b2af-61adafd61398)\n\n## Apresentanção do problema\n\nO desafio é melhorar a organização do projeto, refatorar o código e implementar algumas regras e novas funcionalidades(logo abaixo).\nSinta-se a vontade para criar novas pastas, novos utils, contextos, custom hooks, o que achar melhor para deixar o projeto mais organizado e atigir as especificações abaixo.\n\n## Especificações\n\n### Dashboard\n\n- Implementar `GET` ao carregar a pagina e ao fazer pequisa por `CPF`\n- Filtrar os cards por coluna, usando o status.\n- Implementar `PUT` ao clicar em Reprovar e alterar o status para `REPROVED`\n- Implementar `PUT` ao clicar em Aprovar e alterar o status para `APPROVED`\n- Implementar `PUT` ao clicar em Revisar novamente e alterar o status para `REVIEW`\n- Implementar `DELETE` ao clicar no lixeira no card.\n- Implementar um loading na tela ao realizar requisições.\n- Realizar a requisição automaticamente ao preencher um CPF válido completo\n- Atualizar os dados (refetch) ao clicar no icone de atualizar\n- Adicionar máscara de CPF no campo de pesquisa.\n\n### Pesquisa por CPF\n\nPara realizar a pesquisa por CPF, utilize essa funcionalidade do json-web-server:\n\u003cbr/\u003e\nhttps://github.com/typicode/json-server/tree/v0?tab=readme-ov-file#filter\n\n### Formulário\n\n- Implementar validação no campo de `email` para que aceite apenas emails válidos\n- Implementar validação no campo `nome completo` para que aceite pelo menos um espaço, no mínimo duas letras, e que a primeira letra não seja um número.\n- Implementar validação no campo CPF para aceitar apenas CPFs válidos e adicionar uma máscara de CPF ao campo.\n- Implementar `POST` ao preencher todos os campos corretamentes.\n- Redirecionar ao `/dashboard` ao criar uma nova registration.\n\n## Regras de negócio\n\n- Implementar tipagem correta e enums em TypeScript.\n- Todas as requisições devem ter modal de confirmação da ação\n- Todas as requisições devem aparecer uma notificação de sucesso ou erro\n- O botão de `Reprovar` e `Aprovar` só deve aparecer em registrations com status `REVIEW`\n- O botão `Revisar novamente` só deve aparecer em registration com status `REPROVED` ou `APPROVED`\n\n## API\n\nVocê consumirá uma API mockada localmente, que será executada utilizando o json-server. Para mais informações consulte a [documentação](https://github.com/typicode/json-server/).\n\nExemplo de Requisição:\n\n```\nPOST http://localhost:3000/registrations\nContent-Type: application/json\n{\n  \"admissionDate\": \"23/10/2023\",\n  \"email\": \"maria@caju.com.br\",\n  \"employeeName\": \"Maria Silva\",\n  \"status\": \"REVIEW\",\n  \"cpf\": \"12345678901\"\n}\n```\n\n## Extras (opcional)\n\n- Testes Unitários e de Integração `(Obrigátorio para Senior e Tech Lead)`\n- End-to-End (E2E)\n- Documentação detalhada utilizando Storybook e Docusaurus\n- Configuração de CI/CD com deploy automatizado\n\n## Dicas e sugestões\n\n- Crie custom hooks para separar a lógica da camada de UI.\n- Utilize alguma lib de validação para o formulário\n- Crie testes que simulem o comportamento esperado do usuario.\n\n## Desenvolvimento\n\n```shell\ngit clone https://github.com/caju-beneficios/caju-front-teste-1.git\ncd caju-front-test-1\nyarn\nyarn dev\n```\n\nAbra outro terminal e execute:\n\n```shell\nyarn init:db\n```\n\nPara os testes\n\n```shell\nyarn test:dev\n```\n\nSe tude tiver dado certo as seguintes portas estarão disponiveis:\n\u003cbr/\u003e\n\nAplicação http://localhost:3001/\n\u003cbr/\u003e\nJson Web Server http://localhost:3000/\n\n`Para concluir o desenvolvimento, clone o repositório, faça as edições necessárias e depois envie a URL do novo repositório com suas alterações para o RH.`\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fteles%2Fcaju-front-teste-1","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fteles%2Fcaju-front-teste-1","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fteles%2Fcaju-front-teste-1/lists"}