Este é o repositório central do sistema Despesa Simples. Ele é responsável por orquestrar e executar todos os serviços em um ambiente de desenvolvimento local usando Docker Compose.
Este repositório utiliza Git Submodules para referenciar o código-fonte de cada microsserviço individual, permitindo que todo o sistema seja construído e executado com um único comando.
Atualmente, os microsserviços disponíveis são: Account, Analytics, API-Gateway, Budgets, Categories, Expenses, Incomes e Notification.
- Orquestração de Múltiplos Serviços: Define e gerencia o ciclo de vida de todos os microsserviços e seus backing services (bancos de dados, mensageria).
- Ambiente de Desenvolvimento Unificado: Permite que toda a pilha de tecnologia (API Gateway, microsserviços e bancos de dados/serviços de infra) seja iniciada com
docker-compose up. - Gerenciamento de Submódulos: Centraliza as referências para todos os repositórios de microsserviços.
- Infraestrutura como Código: O arquivo
docker-compose.ymldefine toda a infraestrutura necessária, incluindo Kong, PostgreSQL (para o Kong), MongoDB (para os serviços) e RabbitMQ. - Segurança Local: Inclui um script para gerar certificados autoassinados, permitindo que os serviços se comuniquem via HTTPS localmente.
- Orquestração: Docker, Docker Compose
- API Gateway: Kong
- Bancos de Dados: PostgreSQL (para Kong), MongoDB (para microsserviços)
- Mensageria: RabbitMQ
- Gerenciamento de Código: Git Submodules
- Scripting: Shell Script
Para executar este projeto localmente, você precisará ter os seguintes serviços instalados:
- Git
- Docker (v20.x ou superior)
- Docker Compose (v2.x ou superior)
openssl(necessário para executar o script de geração de certificados)
Este repositório utiliza Git Submodules. Siga atentamente as instruções de clone.
-
Clone o repositório (Recursive): Use o comando
--recursivepara clonar o repositório e inicializar todos os submódulos de uma só vez.git clone --recursive https://github.com/ViniciusAlves03/Despesa-Simples-System.git Despesa-Simples-System cd Despesa-Simples-SystemSe você já clonou sem o
--recursive, rodegit submodule initseguido degit submodule update. -
Gere os Certificados Locais: Este passo é obrigatório para a comunicação entre os serviços e o Kong.
./create-self-signed-certs.sh
-
Configure as variáveis de ambiente: Crie um arquivo
.envna raiz do projeto, baseado no.env.example.cp .env.example .env
Revise o arquivo
.enve ajuste as senhas conforme necessário. -
Construa e Inicie os Contêineres: Este comando irá construir as imagens de todos os microsserviços e iniciar toda a pilha.
docker-compose up --build
-
Acessando os Serviços: Após a inicialização, os seguintes pontos estarão disponíveis:
- API Gateway (Kong):
http://localhost:8000 - RabbitMQ:
http://localhost:15672 - Serviços (via Gateway): Conforme definido em
api-gateway/config/declarative/kong.yaml, geralmente emhttp://api.ds.localhost:8000.
- API Gateway (Kong):
Despesa-Simples-System/
├── .gitmodules # Define os repositórios dos microsserviços
├── create-self-signed-certs.sh # Script para gerar certs SSL locais
├── docker-compose.yml # Arquivo principal de orquestração
├── .env.example # Exemplo de variáveis de ambiente
├── .env # Variáveis de ambiente (local)
│
├── account/ # Submódulo: Serviço de Contas (account-service)
├── analytics/ # Submódulo: Serviço de Relatórios (reports-service)
├── api-gateway/ # Submódulo: Kong API Gateway
├── budgets/ # Submódulo: Serviço de Orçamentos (budgets-service)
├── categories/ # Submódulo: Serviço de Categorias (categories-service)
├── expenses/ # Submódulo: Serviço de Despesas (expenses-service)
├── incomes/ # Submódulo: Serviço de Receitas (incomes-service)
└── notification/ # Submódulo: Serviço de Notificações (notification-service)Este repositório gerencia os seguintes serviços conforme definido no docker-compose.yml:
| Serviço | Repositório (Submódulo) | Descrição |
|---|---|---|
api-gateway |
api-gateway |
API Gateway central que gerencia autenticação, autorização (ACL) e roteamento. |
account |
account |
Microsserviço de identidade (usuários, autenticação, JWT). |
budgets |
budgets |
Microsserviço para gerenciar orçamentos (Budgets). |
categories |
categories |
Microsserviço para gerenciar categorias de despesa/receita. |
expenses |
expenses |
Microsserviço para registrar transações de despesa. |
incomes |
incomes |
Microsserviço para registrar transações de receita. |
analytics |
analytics |
Microsserviço que consome outros serviços para gerar relatórios. |
notification |
notification |
Worker de background para envio de e-mails e notificações push. |
postgres-api-gateway |
postgres-api-gateway |
Banco de dados PostgreSQL para o Kong. |
mongo |
mongo |
Banco de dados MongoDB para os microsserviços. |
rabbitmq |
rabbitmq |
Barramento de eventos (Message Broker) para comunicação assíncrona e RPC. |
Desenvolvido por Vinícius Alves (eu).