Skip to content

GitLab

  • Menu
Projects Groups Snippets
    • Loading...
  • Help
    • Help
    • Support
    • Community forum
    • Submit feedback
    • Contribute to GitLab
  • Sign in
  • W wiki
  • Project information
    • Project information
    • Activity
    • Labels
    • Planning hierarchy
    • Members
  • Repository
    • Repository
    • Files
    • Commits
    • Branches
    • Tags
    • Contributors
    • Graph
    • Compare
  • Issues 0
    • Issues 0
    • List
    • Boards
    • Service Desk
    • Milestones
  • Merge requests 0
    • Merge requests 0
  • CI/CD
    • CI/CD
    • Pipelines
    • Jobs
    • Schedules
  • Deployments
    • Deployments
    • Environments
    • Releases
  • Monitor
    • Monitor
    • Incidents
  • Packages & Registries
    • Packages & Registries
    • Package Registry
    • Infrastructure Registry
  • Analytics
    • Analytics
    • Value stream
    • CI/CD
    • Repository
  • Wiki
    • Wiki
  • Snippets
    • Snippets
  • Activity
  • Graph
  • Create a new issue
  • Jobs
  • Commits
  • Issue Boards
Collapse sidebar
  • Aplicativo “Eu luto”
  • wiki
  • Wiki
  • Processos

Processos · Changes

Page history
Update Processos authored Nov 04, 2023 by Edson Costa's avatar Edson Costa
Show whitespace changes
Inline Side-by-side
Processos.md
View page @ 7e579068
......@@ -4,3 +4,157 @@
<div align="center">
<img src="uploads/984b63ef11ccd47395d75c8fc65e75db/eu-luto-logo.png">
</div>
# Guia de Práticas para Projeto Backend com Node.js e TypeScript
Este guia fornece diretrizes e boas práticas para o desenvolvimento de um projeto backend com Node.js e TypeScript, seguindo uma arquitetura composta por três camadas: Service, Repository e Controller. Essas práticas ajudarão a manter seu código organizado, escalável e de fácil manutenção.
## Índice
1. [Requisitos Prévios](#requisitos-prévios)
2. [Estrutura de Diretórios](#estrutura-de-diretórios)
3. [Camada de Controller](#camada-de-controller)
4. [Camada de Service](#camada-de-service)
5. [Camada de Repository](#camada-de-repository)
6. [Boas Práticas](#boas-práticas)
7. [Testes Unitários](#testes-unitários)
8. [Documentação](#documentação)
9. [Gerenciamento de Dependências](#gerenciamento-de-dependências)
10. [Conclusão](#conclusão)
## Requisitos Prévios
- Node.js instalado
- TypeScript configurado no projeto
- Gerenciador de pacotes (como o npm ou yarn)
- Conhecimento básico de TypeScript
## Estrutura de Diretórios
Uma organização clara da estrutura do projeto é essencial para a manutenção e escalabilidade. Aqui está uma sugestão de estrutura de diretórios:
```
/
src/
controllers/
services/
repositories/
models/
routes/
app.ts
server.ts
```
- `controllers`: Contém os controladores da aplicação.
- `services`: Armazena as lógicas de negócios da aplicação.
- `repositories`: Lida com a persistência de dados e interação com o banco de dados.
- `models`: Definição dos modelos de dados.
- `routes`: Configuração das rotas da aplicação.
- `app.ts`: Arquivo de configuração principal da aplicação.
- `server.ts`: Inicialização do servidor.
## Camada de Controller
Os controladores lidam com as requisições HTTP e a interação com a camada de serviço. Siga estas práticas:
- Mantenha os controladores finos e focados apenas em rotear as requisições para a camada de serviço.
- Não coloque lógica de negócios nos controladores.
- Valide os dados de entrada das requisições e trate erros de forma adequada.
```typescript
// Exemplo de controller
import { Request, Response } from 'express';
import UserService from '../services/userService';
class UserController {
private userService: UserService;
constructor() {
this.userService = new UserService();
}
async getUser(req: Request, res: Response) {
const userId = req.params.id;
const user = await this.userService.getUserById(userId);
res.json(user);
}
}
export default UserController;
```
## Camada de Service
A camada de serviço contém a lógica de negócios da aplicação. Siga estas práticas:
- Mantenha a camada de serviço independente de qualquer framework ou tecnologia.
- Encapsule a lógica de negócios em métodos reutilizáveis.
- Injete dependências, como os repositórios, para facilitar os testes unitários.
```typescript
// Exemplo de service
import UserRepository from '../repositories/userRepository';
import User from '../models/user';
class UserService {
private userRepository: UserRepository;
constructor() {
this.userRepository = new UserRepository();
}
async getUserById(id: string): Promise<User | null> {
return this.userRepository.findById(id);
}
}
export default UserService;
```
## Camada de Repository
A camada de repositório lida com a persistência de dados e interação com o banco de dados. Siga estas práticas:
- Separe a lógica de banco de dados em métodos de fácil leitura.
- Use uma biblioteca de acesso ao banco de dados, como o TypeORM ou Sequelize.
- Evite a complexidade de consultas diretamente na camada de serviço.
```typescript
// Exemplo de repository
import User from '../models/user';
class UserRepository {
async findById(id: string): Promise<User | null> {
// Implemente a lógica de consulta ao banco de dados aqui
}
}
export default UserRepository;
```
## Boas Práticas
- Use tipagem forte com TypeScript para evitar erros em tempo de execução.
- Utilize variáveis de ambiente para configurações sensíveis (como credenciais de banco de dados).
- Utilize os recursos assíncronos do Node.js para evitar bloqueio de thread.
- Trate erros de forma apropriada e forneça mensagens de erro informativas.
- Adote padrões de codificação consistentes e siga as convenções de estilo de código.
## Testes Unitários
Testes unitários são essenciais para garantir a qualidade do código. Use ferramentas como Jest, Mocha ou Chai para escrever testes para cada parte do seu código, incluindo controladores, serviços e repositórios.
## Documentação
Mantenha sua documentação atualizada. Use ferramentas como o Swagger para gerar documentação de API automaticamente. Documente também os modelos de dados, os endpoints da API e as instruções de configuração.
## Gerenciamento de Dependências
Use um gerenciador de dependências como npm ou yarn para manter suas bibliotecas e pacotes atualizados. Mantenha um arquivo `package.json` ou `yarn.lock` bem organizado e versionado.
## Conclusão
Este guia de práticas visa ajudar no desenvolvimento de um projeto backend com Node.js e TypeScript seguindo uma arquitetura de três camadas. Lembre-se de que boas práticas de codificação, testes e documentação são cruciais para criar uma aplicação robusta e de fácil manutenção. Aprenda continuamente e ajuste suas práticas conforme necessário para atender às necessidades específicas do seu projeto.
\ No newline at end of file
Clone repository
  • Arquitetura
  • Configuracao
  • Database
  • Home
  • Mockups
  • Processos
  • Requisitos
  • Sprints