diogodev_
Conteudo

9 de abril de 20261 minutos de leitura

Backend com NestJS, Prisma e Arquitetura

O backend do Fincheck foi desenvolvido com NestJS, Prisma e PostgreSQL, utilizando uma arquitetura modular separando regras de negócio, controllers e acesso ao banco.

Estrutura de módulos

O backend foi dividido por domínio:

modules/
auth/
users/
transactions/
categories/
bank-accounts/

Cada módulo possui:

controllers/
services/
repositories/
dto/
entities/

Fluxo de uma requisição

Quando uma requisição chega:

Request -> Controller -> Service -> Repository -> Prisma -> Database

Exemplo Controller

@Post()
create(@Body() dto: CreateTransactionDto) {
return this.transactionsService.create(dto);
}

Service

async create(dto: CreateTransactionDto) {
await this.validateCategory(dto.categoryId);
return this.transactionsRepository.create(dto);
}

Repository

create(data: CreateTransactionDto) {
return this.prisma.transaction.create({
data,
});
}

Prisma

Exemplo de model no Prisma:

model Transaction {
id String @id @default(uuid())
name String
amount Float
type String
createdAt DateTime @default(now())
categoryId String
}

Por que Prisma

  • Tipagem automática
  • Migrations
  • Produtividade
  • Integração com TypeScript
  • Fácil manutenção

Conclusão

Essa arquitetura separa responsabilidades e facilita manutenção, testes e escalabilidade.