Giter Club home page Giter Club logo

interview-backend-case's Introduction

Case para Desenvolvedor Backend: API de Gerenciamento de Documentos Jurídicos

Olá, Caro Desenvolvedor!

Neste teste, vamos avaliar seus conhecimentos gerais e a rapidez no desenvolvimento. Abaixo, explicamos tudo o que você precisa saber para prosseguir. Não se preocupe se parecer desafiador à primeira vista! Não esperamos que todos completem todas as tarefas. Este teste é aplicado a candidatos de todos os níveis de experiência, então faça o melhor que puder sem pressão. O foco é criar uma API RESTful eficiente e segura para um sistema de gerenciamento de documentos jurídicos, demonstrando sua habilidade em organizar e desenvolver um software moderno e robusto.


Instruções para Uso do GitHub

Fork do Repositório

  • Por favor, faça um fork deste repositório.
  • Todo o seu código para este case deve ser desenvolvido e armazenado neste fork.

Submissão do Case

  • Após completar o desafio, certifique-se de que todo o seu código está devidamente commitado no seu fork.
  • Envie o link do seu repositório forkado para a equipe de recrutamento da Jurisoft.

Declaração de Uso do Código

Importante: O código desenvolvido para este case não será utilizado em produção pela Jurisoft. Este desafio é exclusivamente para fins de avaliação das habilidades do candidato.


Objetivo

Desenvolver uma API RESTful usando Node.js e Express.js para gerenciar documentos jurídicos, incluindo funcionalidades como criação, atualização, recuperação e exclusão de documentos, e integrar com serviços externos.


Requisitos Específicos

Linguagem e Paradigma

  • Utilizar JavaScript (não TypeScript ou variantes similares).
  • Seguir o padrão de programação procedural ou funcional.

API RESTful e Frameworks

  • Desenvolver endpoints para CRUD de documentos.
  • Utilizar Express.js para estruturar a aplicação.

Gestão de Banco de Dados

  • Implementar MongoDB para armazenar dados de documentos e usuários.
  • Criar esquemas de banco de dados eficientes.

Otimização de Desempenho e Segurança

  • Implementar autenticação e autorização.
  • Otimizar consultas ao banco de dados e implementar cache.

Integração de Sistemas e Serviços de Terceiros

  • Integrar com uma API de reconhecimento de texto.
  • Integrar com um serviço de notificações.

Controle de Versão com Git

  • Usar Git para gerenciamento de código, incluindo branches e pull requests.

Atualização de Sistemas Legados

  • Desenvolver estratégia para migração de dados de sistemas antigos.

Funcionalidades Essenciais

1. Upload de Documentos

  • Suporte para upload de documentos em diversos formatos, como PDF, DOCX e imagens.
  • Verificação de integridade e validação de formato de arquivo.

2. Extração e Análise de Texto

  • Capacidade de extrair texto de documentos, especialmente de formatos não-textuais.
  • Análise do conteúdo textual para identificação de informações chave. (Opcional)

3. Classificação de Documentos (Opcional)

  • Implementação de um sistema para classificar documentos em categorias jurídicas.
  • Uso de palavras-chave ou técnicas de Processamento de Linguagem Natural (PLN).
  • Obs.: A classificação automática é opcional, leia mais aqui

4. Busca e Recuperação de Documentos

  • Funcionalidades robustas de busca para localizar documentos rapidamente.
  • Filtros de busca por categoria, data, palavras-chave, entre outros.

5. Edição e Atualização de Documentos

  • Permissão para editar e atualizar documentos e seus metadados.
  • Rastreamento de versões e histórico de mudanças para cada documento.

6. Exclusão Segura de Documentos

  • Funcionalidade para excluir documentos de forma segura e conforme regulamentações.
  • Implementação de políticas de retenção e exclusão de documentos.

7. Integrações com Sistemas e Serviços Externos

  • Integração com APIs de terceiros para enriquecimento de dados e notificações.
  • Conectividade com outros sistemas jurídicos ou de gerenciamento de dados.

8. Autenticação e Controle de Acesso

  • Sistema robusto de autenticação e autorização para garantir a segurança dos dados.
  • Controles de acesso baseados em funções e permissões de usuário.

9. Interface de Usuário (Opcional)

  • Desenvolvimento de uma interface de usuário intuitiva para interagir com a API.
  • Facilitação da visualização, edição e gerenciamento dos documentos.

10. Documentação Completa da API

  • Documentação detalhada da API, incluindo guias de uso e exemplos.
  • Especificações claras sobre endpoints, parâmetros e formatos de resposta.

11. Testes Automatizados (Opcional)

  • Implementação de testes automatizados para validar a funcionalidade e confiabilidade do sistema.
  • Cobertura de testes para todos os aspectos críticos da aplicação.

Desafios de Organização e Código

Estrutura de Código e Handlers

  • Organizar o código em módulos e serviços definidos.
  • Implementar middlewares e handlers para diferentes aspectos da aplicação.

Documentação e Testes

  • Produzir documentação clara da API.
  • Implementar testes automatizados.

Classificação e Categorização (Flexível)

  • Seu desafio é desenvolver um método para categorizar documentos jurídicos dentro da API. A tarefa é intencionalmente aberta para permitir que você explore diferentes abordagens com base em suas habilidades e recursos disponíveis.
  • Sugerimos abordagens como um sistema baseado em palavras-chave, exploração de PLN, ou classificação assistida. Incentivamos a criatividade na escolha da sua abordagem de classificação.
  • Documente claramente o método escolhido para classificação, incluindo as razões por trás das suas escolhas e como você vê a evolução futura do sistema.

Fluxo de Desenvolvimento

Este projeto segue um fluxo de desenvolvimento específico para garantir a eficiência e a qualidade na criação da API de Gerenciamento de Documentos Jurídicos. Abaixo está um diagrama de sequência que ilustra todas as etapas envolvidas neste processo.

Diagrama de Sequência do Processo de Desenvolvimento

Para uma visão detalhada do fluxo de desenvolvimento, clique no link abaixo para acessar o diagrama de sequência:

Visualizar Diagrama de Sequência

Este diagrama inclui as etapas desde o fork do repositório no GitHub até a submissão final do projeto, abrangendo o desenvolvimento de endpoints CRUD, conexão com MongoDB, implementação de autenticação e autorização, integração com APIs externas, e mais.

Siga este fluxo para garantir que todos os aspectos importantes do desenvolvimento sejam abordados de forma sistemática e organizada.

interview-backend-case's People

Contributors

leonardo-jurisoft avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.