https://github.com/19950512/bames
Bames - Um exemplo de arquitetura e design de um sistema - Backend
https://github.com/19950512/bames
arquitetura backend design-system php php84
Last synced: 29 days ago
JSON representation
Bames - Um exemplo de arquitetura e design de um sistema - Backend
- Host: GitHub
- URL: https://github.com/19950512/bames
- Owner: 19950512
- License: mit
- Created: 2025-01-24T12:01:44.000Z (9 months ago)
- Default Branch: main
- Last Pushed: 2025-01-30T10:20:28.000Z (9 months ago)
- Last Synced: 2025-09-09T13:18:56.722Z (about 1 month ago)
- Topics: arquitetura, backend, design-system, php, php84
- Language: PHP
- Homepage:
- Size: 985 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
- Security: SECURITY.md
Awesome Lists containing this project
README
# **B A M E S**
## **Descrição**
O **BAMES** é um projeto focado em estudos de arquitetura de software, design de sistemas e testes. Atualmente, o projeto está sendo desenvolvido com um foco específico no Brasil, e, por isso, a documentação e o desenvolvimento seguem a linguagem portuguesa.
## **Arquitetura**
O projeto segue uma arquitetura baseada em sistemas distribuídos, utilizando comunicação assíncrona. A comunicação entre os serviços é realizada por meio de mensageria, com o **RabbitMQ** atuando como broker.
### **Camadas da Arquitetura**
O projeto é dividido em três camadas principais:
- **Aplicação**: Responsável pela lógica de negócio e pela interação com o usuário.
- **Domínio**: Onde residem as regras de negócio e os agregados do sistema.
- **Infraestrutura**: Onde ficam os detalhes de implementação, como comunicação entre serviços, persistência de dados e integração com outros sistemas.## **Design**
O design do projeto segue os princípios do **Domain Driven Design (DDD)**, promovendo uma separação clara de responsabilidades entre as camadas **Aplicação**, **Domínio** e **Infraestrutura**. Isso facilita a manutenção, escalabilidade e evolução do sistema.
## **Testes**
O projeto utiliza o **Pest** como framework de testes, oferecendo uma sintaxe simples e intuitiva para escrever testes automatizados.
### **Cobertura de Testes**
A cobertura de testes do projeto pode ser visualizada diretamente na página [Coverage](https://19950512.github.io/bames).## **Tecnologias Utilizadas**
O **BAMES** é construído utilizando as seguintes tecnologias:
- **PHP 8.3**: Versão atual do PHP utilizada no projeto.
- **Docker Compose**: Utilizado para orquestrar os containers e facilitar o ambiente de desenvolvimento.
- **PostgreSQL**: Banco de dados relacional utilizado para armazenamento de dados.
- **Redis**: Utilizado como cache e broker de mensagens.
- **Nginx**: Servidor web utilizado para balanceamento de carga e proxy reverso.
- **Firebase JWT**: Para autenticação e controle de acesso via tokens JWT.
- **RabbitMQ**: Broker de mensagens utilizado para comunicação assíncrona entre os serviços.
- **Flutter**: Framework utilizado para o desenvolvimento de aplicativos móveis.## **Como Rodar os Testes e Visualizar a Cobertura**
Para rodar os testes e verificar a cobertura, execute o seguinte comando:
```bash
composer coverage
```### **Problema Comum**
Caso você encontre o seguinte erro:
```
ERROR: No code coverage driver is available.
```
Isso indica que o **xdebug** não está instalado ou configurado corretamente.### **Resolução**
1. **Instalar o xdebug para PHP 8.3**:
```bash
apt install php8.3-xdebug
```2. **Configurar o xdebug no PHP**:
- No seu sistema **Linux**, edite o arquivo `php.ini` localizado em `/etc/php/8.3/cli/php.ini`.
- Adicione as seguintes linhas no final do arquivo:
```conf
[xdebug]
zend_extension=xdebug.so
xdebug.mode=coverage
xdebug.start_with_request=yes
```3. **Reiniciar o servidor PHP**:
Após a configuração, reinicie o servidor PHP para aplicar as mudanças.Agora, a cobertura de testes deve funcionar corretamente.
## **Documentação das APIs**
### **Atualizando a Documentação**
Para atualizar a documentação das APIs, execute o comando abaixo:
```bash
npx @redocly/cli build-docs src/Infraestrutura/APIs/Autenticacao/doc.yaml -o doc-api-auth.html --title API - Auth
```### **Links das Documentações**
- [API Auth](doc-api-auth.html)## **Dependências**
### **Doc2PDF**
O projeto utiliza a ferramenta **unoconv** para converter arquivos DOCX em PDF. Para instalar as dependências necessárias, execute os seguintes comandos:1. **Instalar o LibreOffice e o unoconv**:
```bash
sudo apt install libreoffice
sudo apt install unoconv
```2. **Converter arquivos DOCX para PDF**:
Após a instalação, você pode usar o comando abaixo para realizar a conversão:
```bash
sudo /usr/bin/doc2pdf --headless -o /tmp/doc2pdf.pdf /path/to/documento.docx
```---
### Considerações Finais
Esse documento tem como objetivo fornecer informações claras e diretas sobre o projeto **BAMES**, suas tecnologias, arquitetura e como colaborar com os testes e documentação. O projeto está em constante evolução, e qualquer contribuição é bem-vinda!