0% acharam este documento útil (0 voto)
12 visualizações3 páginas

Desafio de Desenvolvimento: SPA de Tarefas

Este documento descreve um processo seletivo para desenvolvedores de diferentes níveis de experiência (júnior, pleno e sênior). Os candidatos devem implementar um calendário de tarefas do dia com funcionalidades básicas e avançadas dependendo do nível, considerando princípios de desempenho, segurança e escalabilidade.
Direitos autorais
© All Rights Reserved
Levamos muito a sério os direitos de conteúdo. Se você suspeita que este conteúdo é seu, reivindique-o aqui.
Formatos disponíveis
Baixe no formato PDF, TXT ou leia on-line no Scribd
0% acharam este documento útil (0 voto)
12 visualizações3 páginas

Desafio de Desenvolvimento: SPA de Tarefas

Este documento descreve um processo seletivo para desenvolvedores de diferentes níveis de experiência (júnior, pleno e sênior). Os candidatos devem implementar um calendário de tarefas do dia com funcionalidades básicas e avançadas dependendo do nível, considerando princípios de desempenho, segurança e escalabilidade.
Direitos autorais
© All Rights Reserved
Levamos muito a sério os direitos de conteúdo. Se você suspeita que este conteúdo é seu, reivindique-o aqui.
Formatos disponíveis
Baixe no formato PDF, TXT ou leia on-line no Scribd

Processo Seletivo

Desafio

Construir uma SPA de calendário de tarefas do dia utilizando uma


stack que você sinta confortável, pensando sempre em
performance, segurança e escalabilidade.

Importante:
Pontos que serão levados em consideração (quanto maior o grau de senioridade
aplicado, maior será a cobrança em relação aos seguintes pontos):

Reutilização de código fonte

Padrões de projetos

Backend e frontend totalmente isolados

Serviços REST

Escalabilidade

Segurança

Não é obrigatório seguir à risca as sugestões propostas, use sua imaginação!

Funcionalidades:
Cadastro de uma nova tarefa

Sugestão de atributos de uma Tarefa:

Titulo

Descrição

Data e hora que a tarefa acontecerá

Tempo de duração

Edição de tarefa

Processo Seletivo 1
Remoção de tarefa

Permitir que o usuário escolha a forma de visualização das tarefas por dia,
semana ou mês

Campo de busca de tarefas pelo titulo

Nível Júnior
Implemente o maior número de itens possíveis descritos no setor de
funcionalidades

Mantenha seu código limpo seguindo conceitos de padrões de projetos sempre que
possível

Nível Pleno

➡ Além das funcionalidade anteriores, acrescente as seguintes


funcionalidades:

Tags

Adicione o atributo Tags no cadastro e edição de tarefas

Permitir que o usuário cadastre, edite e remova Tags

Campo de busca de tarefas por Tags (permitir múltipla seleção)

Feriados

Consultar uma API REST com os feriados nacionais e destacar na lista de


tarefas os dias que contém feriado exibindo o nome do feriado

Exemplo de uma API REST publica com os feriados de vários países


[Link]

Processo Seletivo 2
Nível Sênior

➡ Implemente as funcionalidades do nível júnior, pleno e acrescente as


funcionalidades seguintes:

Login

Permitir o cadastro de usuários

Exigir autenticação para acesso ao sistema

Dashboard

Gráfico de resolução de tarefas

Gráfico de tags com maior número de tarefas resolvidas

Entrega do fonte
O código fonte deve ser disponibilizado no github pessoal e o link do repositório
deve ser enviado como resposta ao email da Diel dentro do prazo determinado no
corpo da mensagem.

Processo Seletivo 3

Common questions

Com tecnologia de IA

To ensure security, particularly with user authentication, the SPA application should implement secure authentication methods such as OAuth or JWT (JSON Web Tokens) for managing sessions. This helps protect against common vulnerabilities like MIM (Man-in-the-Middle) attacks and CSRF (Cross-Site Request Forgery). Passwords should be encrypted and follow a strong policy. The application should also be equipped to handle secure data transmission using HTTPS and employ security headers to safeguard against XSS (Cross-Site Scripting) attacks. The implementation of roles and permissions adds another layer of security for data access .

Integrating an API for national holidays in a calendar task management system is significant because it enhances the user's ability to plan and manage tasks effectively around public holidays. By highlighting these holidays, users can better understand and anticipate periods of reduced availability, which is crucial for setting realistic deadlines and scheduling meetings or events. It also adds a layer of automation and accuracy by ensuring the calendar reflects official dates without requiring manual updates, thereby reducing the potential for human errors .

An efficient search function should be implemented using indexing techniques like full-text search to quickly match user queries with task titles or tags. The system could utilize NoSQL databases such as Elasticsearch or Solr that provide powerful querying capabilities specializing in text-based data. Additionally, the interface should facilitate user-friendly input, support fuzzy search capabilities, and allow for simultaneous querying across multiple fields such as title and tags. This functionality could be further enhanced by incorporating a suggestion or autocomplete feature .

The rationale behind maintaining code cleanliness and adherence to project patterns is primarily to ensure the maintainability and scalability of the application over time. Clean code that follows established patterns is generally easier to understand, modify, and extend. It allows new team members to quickly understand the codebase and contribute effectively, which is essential in a collaborative environment. Project patterns also bring best practices into the development process, thereby reducing the risk of errors and improving the overall quality of the software produced .

The separation of backend and frontend in SPA development is crucial as it leads to more efficient system architecture by allowing independent development, testing, and deployment of services. This separation enhances scalability because each side can be scaled independently based on resource needs and traffic patterns. It fosters a clear separation of concerns, allowing teams to specialize in either frontend or backend technologies and thus optimize each for performance. As interfaces are often RESTful, this can lead to a more organized codebase and facilitate easier integration with third-party services or APIs .

Performance and scalability can be ensured by employing strategies such as optimizing frontend rendering through techniques like lazy loading, image compression, and minimizing the use of heavy libraries or frameworks. The backend can employ efficient algorithms and data structures, leverage caching layers, and optimize database queries. Implementing distributed services can handle increased loads, and using a cloud service with autoscaling capabilities can dynamically adjust resources based on traffic. Minimizing API calls and batch processing operations where possible are additional strategies to improve performance and scalability of the system .

The system should accommodate code reuse and project patterns by implementing modular design principles, such as the use of design patterns like MVC (Model-View-Controller) or MVVM (Model-View-ViewModel) where applicable. This leads to more manageable, scalable, and maintainable code. Implementing reusable components or services, ensuring separation of concerns, and adhering to SOLID principles can also enhance code quality. These tactics facilitate continuous enhancement and scalability, as different parts of the application can be improved or replaced independently without affecting the whole system .

The primary considerations for building a SPA calendar task management tool include performance, security, and scalability. The process emphasizes code reuse, project patterns, and isolated backend and frontend services using REST services. Different levels of detail and functionality must be implemented depending on the developer's seniority, such as task registration, editing, and removal; various viewing options (by day, week, month); and a search function for tasks by title. Intermediate and senior levels also require additional features like tags, API integration for holidays, user authentication, and dashboard functionality .

UI/UX design plays a critical role in improving user interactions with a task management SPA by providing an intuitive, user-friendly interface that makes the application easy to navigate. Good design helps in reducing cognitive load by ensuring clear visibility of tasks, logical organization of controls, and consistent responsiveness across devices. It fosters user engagement through interactive elements and feedback mechanisms such as visual or auditory responses to user actions. With thoughtful UI/UX, users are more likely to have a positive experience, resulting in increased productivity and satisfaction when interacting with the app .

A mid-level developer is expected to implement functionalities beyond what a junior developer would, which includes the addition of tags for tasks, enabling users to add, edit, and remove tags, and providing search capabilities for tasks by tags with support for multiple selection. The system must also consult a REST API to fetch national holidays, and these holidays should be highlighted in the task list with their names displayed .

Você também pode gostar