A JTech busca desenvolvedores frontend experientes capazes de construir aplicações robustas e escaláveis com arquitetura bem definida. Este desafio avalia sua competência em gerenciamento de estado complexo, arquitetura modular e implementação de sistemas multi-usuário.
Objetivo: Desenvolver uma aplicação frontend sofisticada que simule um sistema TODO List multi-usuário, demonstrando expertise em arquitetura de componentes, gerenciamento de estado avançado e boas práticas de desenvolvimento.
- Interface de Login: Tela de autenticação com validação de campos não vazios
- Autenticação Mock: Qualquer combinação válida de usuário/senha redireciona para a aplicação
- Persistência de Sessão: Manter dados do usuário logado no estado global da aplicação
- Múltiplas Listas de Tarefas: Usuário pode criar listas categorizadas (ex: "Trabalho", "Estudos", "Pessoal")
- CRUD Completo de Listas:
- Criar novas listas com nomes personalizados
- Renomear listas existentes com validação
- Excluir listas com confirmação e verificação de dependências
- Navegação entre Listas: Interface intuitiva para alternar entre diferentes listas
- Gerenciamento por Lista: Cada lista mantém suas próprias tarefas independentemente
- CRUD de Tarefas: Adicionar, editar, remover e marcar tarefas como concluídas dentro de cada lista
- Validações Avançadas: Prevenção de duplicatas, validação de campos obrigatórios
- Estado Persistente: Todo o estado (usuário, listas, tarefas) gerenciado pelo Pinia e persistido
- Roteamento: Vue Router para separar autenticação da aplicação principal
- Guards de Rota: Proteção de rotas para usuários não autenticados
- Framework: Vue 3 (Composition API)
- Roteamento: Vue Router 4
- Gerenciamento de Estado: Pinia
- UI Framework: Material Design (Vuetify ou biblioteca equivalente)
- Testes: Vitest para testes unitários abrangentes
- TypeScript: Fortemente recomendado para tipagem robusta
- Registro de Usuários:
- Endpoint
POST /auth/registerpara cadastro com nome, email e senha - Implementação de hash seguro de senhas utilizando bcrypt
- Validação de unicidade de email
- Endpoint
- Autenticação JWT:
- Endpoint
POST /auth/loginpara autenticação e geração de token JWT - Implementação de refresh token para segurança aprimorada
- Endpoint
- CRUD Completo de Tarefas:
POST /tasks: Criar tarefa associada ao usuário autenticadoGET /tasks: Listar exclusivamente tarefas do usuário logadoGET /tasks/{id}: Buscar tarefa específica com validação de propriedadePUT /tasks/{id}: Atualizar tarefa com controle de acessoDELETE /tasks/{id}: Remover tarefa com validação de proprietário
- Autorização Robusta: Todas as rotas protegidas por JWT com validação de propriedade dos recursos
- Princípios SOLID: Implementação rigorosa dos cinco princípios em todas as camadas
- Arquitetura em Camadas: Estrutura bem definida (Controller → Service → Repository → Domain)
- Injeção de Dependência: Utilização adequada do Spring Framework para IoC
- Exception Handling: Sistema robusto de tratamento centralizado de exceções
- Testes Unitários: Cobertura completa da camada de serviço com cenários de sucesso e falha
- Testes de Integração: Validação end-to-end dos endpoints com Spring Test
- Mocks e Stubs: Utilização adequada de Mockito para isolamento de dependências
- Linguagem: Java 17+
- Framework: Spring Boot, Spring Security, Spring Validation
- Persistência: Spring Data JPA com Hibernate
- Banco de Dados: PostgreSQL
- Segurança: JWT, BCrypt
- Testes: JUnit 5, Mockito, Spring Boot Test
- Aplicação de SOLID: Demonstração clara e justificada dos princípios SOLID (critério principal)
- Qualidade Arquitetural: Design limpo, modular com separação clara de responsabilidades
- Cobertura de Testes: Suite robusta e significativa de testes unitários e de integração
- Implementação de Segurança: Autenticação e autorização corretamente implementadas
- Domínio da Stack: Utilização avançada e adequada do ecossistema Spring
- Domínio da Stack: Utilização avançada das ferramentas do ecossistema Vue.js
- Modelagem de Dados: Relacionamento bem definido entre entidades User e Task
- Documentação Técnica: README detalhado com justificativas arquiteturais
- Prazo: Até 3 dias corridos a partir do recebimento.
- Formato: Repositório Git com código-fonte completo e documentação detalhada.
- Visão Geral da Arquitetura: Descrição detalhada da estrutura e decisões arquiteturais
- Stack Tecnológica: Lista completa com justificativas para cada escolha
- Como Rodar Localmente: Instruções passo a passo para setup e execução
- Como Rodar os Testes: Comandos para executar suite completa de testes
- Estrutura de Pastas Detalhada: Mapeamento completo da organização modular do código
- Decisões Técnicas Aprofundadas: Justificativas detalhadas sobre escolhas arquiteturais, padrões e bibliotecas
- Melhorias e Roadmap: Propostas técnicas para evolução e escalabilidade da aplicação
Boa sorte! A JTech espera uma solução que demonstre maturidade em desenvolvimento frontend e visão arquitetural.