9 de abril de 2026 • 1 minutos de leitura
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.
O backend foi dividido por domínio:
modules/
auth/
users/
transactions/
categories/
bank-accounts/
Cada módulo possui:
controllers/
services/
repositories/
dto/
entities/
Quando uma requisição chega:
Request -> Controller -> Service -> Repository -> Prisma -> Database
@Post()
create(@Body() dto: CreateTransactionDto) {
return this.transactionsService.create(dto);
}
async create(dto: CreateTransactionDto) {
await this.validateCategory(dto.categoryId);
return this.transactionsRepository.create(dto);
}create(data: CreateTransactionDto) {
return this.prisma.transaction.create({
data,
});
}Exemplo de model no Prisma:
model Transaction {
id String @id @default(uuid())
name String
amount Float
type String
createdAt DateTime @default(now())
categoryId String
}Essa arquitetura separa responsabilidades e facilita manutenção, testes e escalabilidade.