Skip to content

API para controle financeiro, com opção de criação de categorias e transações, listagem e filtragem

Notifications You must be signed in to change notification settings

AlineGuiseline/devbills-api

Repository files navigation

DevBills API

Este repositório contém o back-end de uma aplicação construída com Node.js, TypeScript, Express, MongoDB via Mongoose, e Docker.Esta API fornece funcionalidades para:

  • criar categorias por nome e cor
  • criar transações financeiras por id, nome, valor, data e tipo
  • listar as categorias e as transações
  • filtrar as transações (por nome, por período início-fim e por categoria)
  • filtrar as categorias (por período)

🛠️ Tecnologias Utilizadas

  • Node.js: Ambiente de execução JavaScript.
  • TypeScript: Suporte a tipagem estática para maior segurança e escalabilidade.
  • Express: Framework minimalista para desenvolvimento de aplicações web.
  • MongoDB: Banco de dados NoSQL orientado a documentos.
  • Mongoose: Biblioteca de modelagem de dados para MongoDB.
  • Docker: Gerenciamento de contêineres para empacotar e executar o aplicativo de forma consistente.
  • Thunder Client: Extensão do VSCode para testar as rotas da API.

❗ Pré-requisitos

Antes de começar, você precisa ter instalado:

🚀 Instalação e Configuração

  1. Clone o repositório
git clone https://github.com/AlineGuiseline/devbills-api.git cd devbills-api 
  1. Instale as dependências
npm install 
  1. Configuração do Ambiente

Crie um arquivo .env na raiz do projeto, com as seguintes variáveis de ambiente:

PORT=3000 MONGO_URI=mongodb://localhost:27017/ 

PORT: Porta onde a API será executada. MONGO_URI: URL de conexão ao MongoDB.

  1. Compilação do TypeScript

Compile o TypeScript para JavaScript (necessário para rodar o projeto fora do ambiente Docker):

npm run build 

Executando o Projeto

Com Docker (Recomendado)

  1. Certifique-se de que o Docker esteja em execução.

  2. Execute o seguinte comando para construir e iniciar os contêineres Docker:

docker-compose up --build 
  1. A API estará disponível em http://localhost:3000.

Localmente (Sem Docker)

  1. Inicie o MongoDB: Se não estiver usando Docker, você precisará ter uma instância do MongoDB em execução. Você pode iniciar o MongoDB localmente ou configurar o MONGO_URI para apontar para uma instância remota.

  2. Inicie o Servidor:

npm run dev 
  1. A API estará disponível em http://localhost:3000.

📦 Estrutura do Projeto

project-root/ ├── build/ # Código transpilado para JavaScript ├── src/ ├── controllers # Lógica dos controladores das categorias e das transações └── categories.controller.ts └── transactions.controller.ts └── types.ts ├── database/ # Configuração do banco de dados └── repositories/ └── categories.repository.ts └── transactions.repository.ts └── schemas/ └── category.schema.ts └── transactions.schema.ts ├── dtos/ # Modelos de transferência de dados └── categories.dtos.ts └── transactions.dto.ts ├── entities/ # Entidades da aplicação └── balance.entity.ts └── category.entities.ts └── expense.entity.ts └── transactions.entity.ts ├── errors/ # Tratamento de erros └── categories.factory.ts └── transactions.factory.ts ├── factories/ # Modelos das instâncias ├── app.error.ts ├── middlewares/ # Middlewares para validação e erros └── error-handler.middleware.ts └── validator.middleware.ts ├── routes/ # Rotas das categorias e das transações └── base.route.ts └── categories.route.ts └── index.ts └── transactions.route.ts ├── services/ # Modelos de criação das categorias e das transações └── categories.service └── transactions.service ├── server.ts # Inicialização do servidor ├── .prettierrc # Configuração do Prettier ├── docker-compose.yml # Configuração Docker Compose ├── Dockerfile # Configuração Docker ├── eslint.config # Configuração do ESLint └── tsconfig.json # Configuração TypeScript 

🧪 Testando as Rotas com Thunder Client

Para testar as rotas no Thunder Client, siga os passos abaixo:

  1. Criar uma categoria:

Método: POST
URL: http://localhost:3000/categories
Body (JSON):

{ "title": "Salário", "color": "#008000" } 
  1. Criar uma transação:

Método: POST
URL: http://localhost:3000/transactions
Body (JSON):

{ "title": "Freelance", "amount": 200000, "date": "2024-03-02", "type": "income", "categoryId": "id da categoria criada no banco de dados" } 

Obs.: o valor tem que ser inserido em centavos, ou seja, *10 (no nosso caso, colocamos o valor hipotético usando a Lei da Atração de R$20.000)

  1. Listar as categorias:

Método: GET
URL: http://localhost:3000/categories

4. Listar as transações:

Método: GET
URL: http://localhost:3000/transactions

📌 Conclusão

Esta API fornece uma solução para controle financeiro, com suporte para criação de categorias e transações, listagem e filtragem, armazenamento no MongoDB e fácil setup utilizando Docker. Você pode testar a API via extensão Thunder Client ou com qualquer programa de testagem de rotas, como Insomnia ou Postman.

Se houver qualquer problema ou dúvida, fique à vontade para entrar em contato comigo, seja a partir de uma issue no repositório ou me contactando pelo LinkedIn!

About

API para controle financeiro, com opção de criação de categorias e transações, listagem e filtragem

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages