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)
- 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.
Antes de começar, você precisa ter instalado:
- Node.js (versão 20 ou superior)
- Docker e Docker Compose
- MongoDBCompass
- Clone o repositório
git clone https://github.com/AlineGuiseline/devbills-api.git
cd devbills-api
- Instale as dependências
npm install
- 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.
- Compilação do TypeScript
Compile o TypeScript para JavaScript (necessário para rodar o projeto fora do ambiente Docker):
npm run build
-
Certifique-se de que o Docker esteja em execução.
-
Execute o seguinte comando para construir e iniciar os contêineres Docker:
docker-compose up --build
- A API estará disponível em http://localhost:3000.
-
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.
-
Inicie o Servidor:
npm run dev
- A API estará disponível em http://localhost:3000.
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
Para testar as rotas no Thunder Client, siga os passos abaixo:
- Criar uma categoria:
Método: POST
URL: http://localhost:3000/categories
Body (JSON):
{
"title": "Salário",
"color": "#008000"
}
- 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)
- Listar as categorias:
Método: GET
URL: http://localhost:3000/categories
4. Listar as transações:
Método: GET
URL: http://localhost:3000/transactions
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!