A organização eficiente da estrutura de pastas em um projeto de desenvolvimento de software é essencial para a manutenção, escalabilidade e colaboração entre equipes.

Neste artigo, vamos explorar as boas práticas para a organização de pastas em projetos de back-end e front-end, além de discutir o setup inicial que pode acelerar o desenvolvimento e seguir as melhores práticas de organização de código.

Organização de pastas e setup inicial de projeto

Nesta seção, abordaremos a importância da organização de pastas em um projeto de desenvolvimento de software e como configurar o ambiente inicial para um projeto back-end e front-end.

  • A organização de pastas em um projeto é essencial para manter a estrutura e o fluxo de trabalho organizados e eficientes.
  • A configuração inicial de um projeto backend e frontend envolve a criação de uma estrutura de pastas e a configuração de terminais separados para cada parte do projeto.
  • A correta organização de pastas e arquivos facilita a manutenção e o desenvolvimento contínuo do projeto, além de melhorar a colaboração entre os membros da equipe.

Organização inicial

Ao iniciar um projeto de desenvolvimento de software, é crucial estabelecer uma organização inicial eficiente. Isso inclui a criação de uma estrutura de pastas e arquivos bem definida, que facilite a compreensão e a manutenção do código.

  • A criação de uma pasta ‘src’ para o backend é uma prática comum e ajuda a centralizar toda a lógica do servidor em um local específico.
  • A separação de arquivos e pastas para o backend e frontend permite uma gestão mais clara e eficiente das diferentes partes do projeto.
  • A configuração do arquivo ‘package.json‘ para apontar o arquivo inicial para ‘src/server.js’ é uma etapa importante no processo de organização inicial do projeto.

Estrutura de pastas

A estrutura de pastas em um projeto de desenvolvimento web desempenha um papel fundamental na organização e na acessibilidade do código-fonte. A seguir, abordaremos as subpastas criadas para organizar o código do projeto.

  • As subpastas ‘services’, ‘models’ e ‘modules’ são comumente utilizadas para organizar diferentes aspectos do código em um projeto backend.
  • A criação de subpastas específicas, como ‘services’, ‘models’ e ‘modules’, ajuda a separar e gerenciar diferentes tipos de funcionalidades e lógicas do projeto.
  • A definição de uma estrutura de pastas clara e intuitiva facilita a localização e a manutenção de arquivos e módulos específicos do projeto.

Estrutura de arquivos e separação de responsabilidades

A estrutura de arquivos do módulo de usuários segue um padrão que facilita a separação de responsabilidades no código e permite escalar o projeto mais facilmente.

  • O arquivo modules/user/index.js centraliza as exportações do módulo, o que ajuda na organização do código.
  • A ausência de um padrão específico demonstra flexibilidade e adaptabilidade do modelo às necessidades específicas do projeto
  • A utilização de palavras em inglês segue a tendência do mercado de desenvolvimento de software.
  • O uso do Singleton pattern no serviço de conexão com o banco de dados garante apenas uma instância, o que pode contribuir para a performance do sistema.

Configurações iniciais padronizadas

O projeto conta com configurações padrões nos arquivos de serviços e rotas, o que proporciona uma estrutura que pode ser reaproveitada entre projetos.

  • O arquivo services/knex.js estabelece a conexão com o banco de dados usando Knex.js e implementa o Singleton pattern.
  • O módulo de usuários possui um arquivo user.router.js que configura as rotas do módulo, utilizando o router do Express.
  • O arquivo modules/user/index.js centraliza as exportações do módulo, o que ajuda na organização do código.
  • Essas configurações padronizadas oferecem uma base estruturada que pode ser reaproveitada em diferentes projetos, economizando tempo e esforço de desenvolvimento.

Endpoints e base estruturada

Com a base estruturada, o projeto está pronto para a implementação dos endpoints e funcionalidades específicas do módulo de usuários.

  • A estrutura prévia facilita o desenvolvimento dos endpoints e a implementação das funcionalidades do módulo de usuários.
  • A padronização das configurações iniciais contribui para a consistência e qualidade do código ao longo do projeto.
  • A base estruturada proporciona uma sólida fundação para a expansão e manutenção do sistema.

Quais são os tipos de endpoints da API?

Os endpoints da API fornecem funcionalidades específicas para lidar com operações relacionadas aos usuários.

  • O endpoint GET /users retorna todos os usuários cadastrados no sistema.
  • O endpoint GET /users/:id retorna um usuário com base no ID fornecido como parâmetro.
  • O endpoint POST /users cria um novo usuário utilizando os dados enviados no corpo da requisição.
  • O endpoint DELETE /users/:id remove um usuário com base no ID fornecido como parâmetro.
  • O endpoint PUT /users/:id atualiza as informações de um usuário com base no ID fornecido como parâmetro e nos dados enviados no corpo da requisição.

Utilização do Knex.js

Os métodos dos endpoints chamam os serviços do Knex.js, utilizando os parâmetros recebidos nas requisições.

  • O Knex.js é uma biblioteca SQL para Node.js que permite interagir com o banco de dados de forma simplificada.
  • A utilização do Knex.js facilita a escrita de consultas SQL e a interação com o banco de dados de forma mais eficiente.
  • O uso do Knex.js ajuda a manter a consistência e a segurança das operações de banco de dados.

Importações no Arquivo src/server.js

As importações das rotas são configuradas no arquivo principal da aplicação, centralizando o uso das rotas.

  • A centralização das importações no arquivo src/server.js ajuda a manter a organização e a clareza do projeto.
  • Essa abordagem facilita a identificação e a manutenção das rotas da aplicação.
  • Centralizar as importações no arquivo principal simplifica a adição e remoção de novas rotas.

Conclusão

Ao adotar a estrutura de pastas e o setup inicial apresentados neste artigo, os desenvolvedores podem beneficiar-se de uma abordagem escalável e reutilizável, que promove a clareza nas responsabilidades das camadas e módulos do projeto. Essas práticas, além de acelerar o desenvolvimento, contribuem para a manutenção e colaboração eficaz entre equipes, seguindo as melhores práticas de organização de código.