Skip to content

Aplicação backend com NodeJS que armazena dados de transações financeiras de entrada e saída, que permite que o usuário possa registrar e fazer a listagem de suas próprias transações.

Notifications You must be signed in to change notification settings

Gusales/transactions-api

Repository files navigation

Transactions Challenger

Aplicação backend com NodeJS que armazena dados de transações financeiras de entrada e saída, que permite que o usuário possa registrar e fazer a listagem de suas próprias transações.

Sobre o Projeto

Este projeto foi proposto como desafio do Ignite, programa de especialização em programação da Rocketseat. Utilizei conceitos de Clean Architecture e DDD, Inversão de dependências e Design Patterns (Como InMemoryPattern).

Rodando o servidor

Para poder rodar o servidor, é necessário possuir o node e o docker instalados em seu sistema

Banco de Dados

A aplicação foi desenvolvida utilizando banco de dados PostgreSQL.
Utilize o comando abaixo para realizar a instalação do container Docker contendo a imagem da Bitname do PostgreSQL.

docker compose up -d

Rodando o servidor HTTP

Utilizando o pnpm (Node Package Manager), instale todas as dependências da aplicação.

pnpm install

Depois de instalar as dependências, crie as tabelas no banco de dados e realize as migrations utilizando o Prisma, digitando o seguinte comando:

pnpm prisma migrate dev

Agora, a aplicação estará pronta para uso, digitando o comando:

pnpm dev

Utilizando as credenciais e as variáveis de ambiente

O servidor utiliza de variáveis de ambiente para realizar a conexão com o banco de dados e dados sensíveis.
Você poderá utilizar suas próprias credenciais definindo as variáveis de ambiente a seguir:

# Json Web Token Secret
JWT_SECRET= ""

# DATABASE ENV
DATABASE_URL=""

Realize uma cópia do arquivo .env.example, renomeando-o para apenas .env

Rotas da Aplicação

Rotas de Autenticação

  • GET /transactions: Essa rota é para fazer todas as listagens de transações feitas pelo usuário. Essa rota só pode ser acessada caso o usuário esteja autenticado por um JWT, e ela pode receber como um query param /transactions?page=(qualquer número maior que 0), para poder realizar a paginação dos itens. Cada página possui até 20 itens (transações).

Rotas de Transações

  • GET /transactions: Essa rota é para fazer todas as listagens de transações feitas pelo usuário. Essa rota só pode ser acessada caso o usuário esteja autenticado por um JWT, e ela pode receber como um query param /transactions?page=(qualquer número maior que 0), para poder realizar a paginação dos itens. Cada página possui até 20 itens (transações).

  • POST /transactions: Essa rota é responsável por criar novas transações. Para criar uma nova transação, é necessário enviar como corpo da requisição:

{
  "title": "Nome da Transação",
  "value": 9999 (deve ser do tipo inteiro),
  "type": "income(Para entradas) ou outcome (para saidas)"
}

Após a criação da transação, a rota retornará ao usuário o id da transação, que é um random unique universal id (uuid).

Stack Utilizada

  • NodeJs
  • Typescript
  • Prisma ORM
  • PostgreSQL
  • Zod

About

Aplicação backend com NodeJS que armazena dados de transações financeiras de entrada e saída, que permite que o usuário possa registrar e fazer a listagem de suas próprias transações.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published