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.
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).
Para poder rodar o servidor, é necessário possuir o node e o docker instalados em seu sistema
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
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
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
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).
-
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).
- NodeJs
- Typescript
- Prisma ORM
- PostgreSQL
- Zod