Vector é um sistema de gestão orçamentária desenvolvido para lidar com fluxos reais de compras, garantindo que cada ordem de compra seja validada com base nos recursos financeiros disponíveis antes de ser aprovada.
A aplicação centraliza o controle de orçamento e a autorização de compras, reduzindo o risco de gastos excessivos e trazendo consistência aos processos de tomada de decisão dentro da organização. Ao aplicar regras de negócio na camada da aplicação, o Vector fornece uma base confiável para gerenciar operações financeiras e evoluí-las ao longo do tempo.
O Vector foi desenvolvido com forte foco em arquitetura de software e qualidade de código, aplicando princípios como:
- SOLID
- Clean Architecture
- Clean Code
- Design Patterns
O projeto simula um cenário corporativo real, onde solicitações de compra precisam ser validadas com base no orçamento disponível antes de serem aprovadas.
- Backend: PHP 8.2, Laravel 12
- Frontend: Bootstrap 5.3.8, DataTables 2.3.4, jQuery 3.7.1
- Banco de Dados: MySQL
- Ambiente: Docker
git clone https://github.com/jonatasmcampos/vector.git
cd vector
composer install
sudo docker compose up -d --build
docker exec -it vector bash
cp .env.example .env
php artisan key:generate
php artisan vector:atualizarApós a configuração estar completa, a aplicação estará disponível em:
http://localhost:8000/entrar
Em alguns ambientes (especialmente ao usar Docker), pode ser necessário ajustar as permissões de pastas para permitir que o Laravel escreva logs e arquivos de cache.
Execute o seguinte comando dentro do container:
chown -R www-data:www-data storage bootstrap/cache
chmod -R 775 storage bootstrap/cache
Isso garante que a aplicação tenha as permissões corretas para funcionar adequadamente.
O principal objetivo do sistema é:
Validar e registrar ordens de compra com base na disponibilidade orçamentária.
Quando uma ordem de compra é criada:
- O sistema recebe a requisição via API
- Um orquestrador coordena o fluxo
- As regras de negócio são aplicadas
- A ordem é aprovada ou rejeitada com base na validação do orçamento
O projeto segue os princípios de Clean Architecture, separando responsabilidades em camadas bem definidas:
-
Domain
- Entidades
- Value Objects
- Regras de negócio
-
Application
- Casos de uso
- DTOs (Data Transfer Objects)
-
Infrastructure
- Implementações de repositórios
- Integrações externas
-
Interfaces
- Controllers (API / Web)
Controller → Orchestrator → UseCase → Domain → Repository
Isso garante:
- Alta manutenibilidade
- Testabilidade
- Clara separação de responsabilidades
Endpoint:
POST /api/purchase-order/store
Descrição: Cria uma ordem de compra e valida com base no orçamento disponível.
Fluxo:
- Recebe o payload
- Envia para o orquestrador
- Executa validação + criação
- Retorna sucesso ou falha
O projeto inclui um teste automatizado que não apenas valida o fluxo de criação de ordens de compra, mas também gera dados de exemplo para simular cenários reais.
Isso permite que o sistema seja inicializado com dados significativos, facilitando a exploração e o entendimento do seu comportamento sem começar do zero.
Dentro do container:
php artisan test tests/Feature/RegisterPurchaseOrderTest.php
O sistema utiliza MySQL como seu banco de dados principal.
- Implementação de Clean Architecture no Laravel
- Uso de DTOs para transporte de dados
- Value Objects para reforçar regras de domínio
- Padrão Orchestrator para coordenar casos de uso
- Repository Pattern para abstração de dados
- Ambiente baseado em Docker
- Testes automatizados
- Implementação de módulo de pagamentos
- Arquitetura orientada a eventos (Kafka / filas)
- Autenticação baseada em token (JWT / Sanctum)
- Melhorias em logs e auditoria
- Documentação da API (Swagger / OpenAPI)
Desenvolvido por Jonatas Campos
Este projeto foi desenvolvido não apenas para resolver um problema de negócio, mas também para demonstrar forte conhecimento em:
- Arquitetura de software
- Design de sistemas escaláveis
- Boas práticas de desenvolvimento backend