sierratecnologia/fabrica
Composer 安装命令:
composer require sierratecnologia/fabrica
包简介
Fabrica de Projetos
README 文档
README
SierraTecnologia Fabrica fabrica is all of freelancer developer need. Validator functionality, and basic controller included out-of-the-box.
📚 Índice
- Introdução
- Instalação
- Arquitetura e Estrutura Interna
- Principais Funcionalidades
- Uso Prático
- Integração com o Ecossistema SierraTecnologia
- Extensão e Customização
- Exemplos Reais
- Ferramentas de Qualidade
- Guia de Contribuição
🎯 Introdução
O Fábrica é o núcleo de automação e scaffolding da SierraTecnologia / Rica Soluções, projetado para acelerar e padronizar a criação de módulos, serviços, entidades e recursos Laravel dentro do ecossistema da empresa.
O que é o Fábrica?
Fábrica é uma CLI inteligente e framework interno que atua como uma fábrica de código, automatizando tarefas repetitivas de desenvolvimento e garantindo consistência arquitetural entre todos os projetos da organização.
Objetivo e Motivação
- Acelerar o desenvolvimento: Reduzir drasticamente o tempo gasto em scaffolding manual
- Padronizar arquitetura: Garantir que todos os projetos sigam os mesmos padrões e melhores práticas
- Reduzir erros: Eliminar inconsistências causadas por criação manual de código
- Facilitar manutenção: Código gerado seguindo padrões facilita a manutenção por diferentes desenvolvedores
Importância no Ecossistema
O Fábrica é fundamental para o ecossistema SierraTecnologia pois:
- Serve como base para geração de recursos em todos os projetos internos
- Integra-se nativamente com outros pacotes do ecossistema (Facilitador, Finder, Market, CMS)
- Mantém a coesão arquitetural entre diferentes times e projetos
- Acelera a entrega de novos módulos e funcionalidades
📦 Instalação
Requisitos Mínimos
- PHP: ^8.1 ou superior
- Laravel: ^8.0, ^9.0, ^10.0 ou ^11.0
- Composer: ^2.0
Instalação via Composer
composer require sierratecnologia/fabrica
Publicação de Arquivos de Configuração
Após a instalação, publique os arquivos de configuração:
# Publicar configurações php artisan vendor:publish --provider="Fabrica\FabricaProvider" --tag="config" # Publicar views (opcional) php artisan vendor:publish --provider="Fabrica\FabricaProvider" --tag="views" # Publicar traduções (opcional) php artisan vendor:publish --provider="Fabrica\FabricaProvider" --tag="translations" # Publicar todos os recursos php artisan vendor:publish --provider="Fabrica\FabricaProvider"
Registro Automático de Service Providers
O Fábrica utiliza auto-discovery do Laravel. O FabricaProvider é registrado automaticamente.
Caso necessário, registre manualmente em config/app.php:
'providers' => [ // ... Fabrica\FabricaProvider::class, ],
Configuração
O arquivo de configuração é publicado em config/sitec/fabrica.php. Customize conforme necessário:
<?php return [ // Configurações personalizadas do Fábrica // (expandir conforme necessidades do projeto) ];
🏗️ Arquitetura e Estrutura Interna
Estrutura de Diretórios
fabrica/
├── src/
│ ├── Acl/ # Sistema de ACL (Access Control List)
│ ├── ActiveDirectory/ # Integração com LDAP/Active Directory
│ ├── Bundle/ # Bundles do sistema
│ │ ├── CoreBundle/ # Bundle principal
│ │ ├── DistributionBundle/# Bundle de distribuição
│ │ ├── JobBundle/ # Sistema de jobs
│ │ └── WebsiteBundle/ # Bundle web
│ ├── Component/ # Componentes reutilizáveis
│ │ ├── Config/ # Gerenciamento de configuração
│ │ ├── Pagination/ # Sistema de paginação
│ │ └── Requirements/ # Verificação de requisitos
│ ├── Console/ # Comandos Artisan
│ │ └── Commands/ # Comandos customizados
│ ├── Contracts/ # Interfaces e contratos
│ ├── Events/ # Eventos do sistema
│ ├── Exceptions/ # Exceções customizadas
│ ├── Facades/ # Facades do Laravel
│ ├── Http/ # Camada HTTP
│ │ ├── Api/ # Controllers API
│ │ └── Controllers/ # Controllers web
│ ├── Listeners/ # Event Listeners
│ ├── Models/ # Modelos Eloquent
│ │ ├── Planning/ # Modelos de planejamento (Sprint, etc)
│ │ └── Workflow/ # Modelos de workflow
│ ├── Observers/ # Model Observers
│ ├── Project/ # Gerenciamento de projetos
│ ├── QA/ # Quality Assurance
│ ├── Services/ # Camada de serviços
│ ├── Traits/ # Traits reutilizáveis
│ ├── Utils/ # Utilitários
│ ├── Workflow/ # Sistema de workflow
│ └── FabricaProvider.php # Service Provider principal
├── database/
│ └── migrations/ # Migrations do banco de dados
├── publishes/
│ ├── assets/ # Assets publicáveis
│ └── config/ # Configurações publicáveis
├── resources/
│ ├── lang/ # Traduções
│ └── views/ # Views Blade
├── routes/ # Arquivos de rotas
├── tests/ # Testes automatizados
│ ├── Feature/ # Testes de features
│ └── Unit/ # Testes unitários
└── composer.json
Padrões de Design
O Fábrica implementa diversos padrões de design para garantir código limpo e manutenível:
1. Service Provider Pattern
Utiliza o sistema de Service Providers do Laravel para registro de serviços, rotas e recursos.
class FabricaProvider extends ServiceProvider { public function register() { // Registro de serviços $this->app->singleton(FabricaService::class, function ($app) { return new FabricaService(config('sitec.fabrica')); }); } public function boot() { // Bootstrap de recursos $this->registerDirectories(); $this->routes(); $this->loadLogger(); } }
2. Repository Pattern
Abstração da camada de dados para facilitar testes e manutenção.
3. Service Layer Pattern
Lógica de negócio encapsulada em classes de serviço.
4. Observer Pattern
Utilização de Observers para reação a eventos de modelos.
5. Facade Pattern
Facades para acesso simplificado a serviços complexos.
Relação entre Componentes
┌─────────────────────────────────────────────────────┐
│ Laravel App │
└─────────────────────┬───────────────────────────────┘
│
┌─────────────────────▼───────────────────────────────┐
│ FabricaProvider │
│ ┌──────────────────────────────────────────────┐ │
│ │ - Registro de Serviços │ │
│ │ - Carregamento de Rotas │ │
│ │ - Publicação de Assets │ │
│ │ - Registro de Comandos Artisan │ │
│ └──────────────────────────────────────────────┘ │
└─────────┬────────────────────────────────┬──────────┘
│ │
┌─────────▼─────────┐ ┌──────────▼──────────┐
│ Services │ │ Commands │
│ ┌──────────────┐ │ │ ┌───────────────┐ │
│ │FabricaService│ │ │ │ Sync Commands │ │
│ └──────────────┘ │ │ └───────────────┘ │
└───────────────────┘ └─────────────────────┘
│ │
┌─────────▼─────────────────────────────────▼─────────┐
│ Models & Repositories │
│ ┌──────────┐ ┌──────────┐ ┌──────────┐ │
│ │ Sprint │ │ Workflow │ │ Project │ ... │
│ └──────────┘ └──────────┘ └──────────┘ │
└──────────────────────────────────────────────────────┘
Boas Práticas de Modularização
- Separação de responsabilidades: Cada namespace tem uma responsabilidade clara
- Injeção de dependências: Utilização extensiva de DI para facilitar testes
- Contratos (Interfaces): Definição de contratos para componentes críticos
- Eventos: Comunicação entre componentes via eventos
- Traits: Reutilização de código através de traits
🚀 Principais Funcionalidades
1. Geração Automática de Código
O Fábrica fornece comandos para geração automática de:
- Models: Modelos Eloquent com configurações pré-definidas
- Controllers: Controllers RESTful ou personalizados
- Requests: Form Requests com validação
- Services: Classes de serviço para lógica de negócio
- Repositories: Implementação do padrão Repository
- Tests: Testes unitários e de integração
2. Sistema de Workflow
Gerenciamento completo de workflows:
use Fabrica\Models\Workflow\Workflow; use Fabrica\Models\Workflow\WorkflowItemType; use Fabrica\Models\Workflow\Transaction; // Criar um novo workflow $workflow = Workflow::create([ 'name' => 'Desenvolvimento de Features', 'description' => 'Workflow padrão para desenvolvimento' ]); // Adicionar estágios $workflow->stages()->create([ 'name' => 'Backlog', 'order' => 1 ]);
3. Sistema de Planejamento
Gerenciamento de sprints e planejamento ágil:
use Fabrica\Models\Planning\Sprint; $sprint = Sprint::create([ 'name' => 'Sprint 23', 'init' => now(), 'end' => now()->addWeeks(2), 'order' => 23 ]);
4. Sistema de ACL
Controle de acesso baseado em papéis e permissões:
use Fabrica\Acl\Acl; use Fabrica\Acl\Eloquent\Role; // Verificar permissões if (Acl::check($user, 'fabrica.projects.create')) { // Usuário tem permissão }
5. Integração com Active Directory
Suporte para autenticação e sincronização com LDAP/AD.
6. Sistema de Jobs
Gerenciamento de tarefas assíncronas e background jobs.
7. API RESTful
Controllers e rotas pré-configuradas para APIs RESTful.
💻 Uso Prático
Exemplo 1: Gerando um Novo Módulo "Pedidos"
# Sincronizar pacotes (se disponível) php artisan fabrica:sync:packages # Estrutura manual (exemplo de organização) # 1. Criar Model # app/Models/Pedido.php # 2. Criar Migration php artisan make:migration create_pedidos_table # 3. Criar Controller # app/Http/Controllers/PedidoController.php # 4. Criar Service # app/Services/PedidoService.php # 5. Criar Requests # app/Http/Requests/PedidoStoreRequest.php # app/Http/Requests/PedidoUpdateRequest.php
Exemplo 2: Usando o Sistema de Workflow
use Fabrica\Models\Workflow\Workflow; use Fabrica\Models\Workflow\WorkflowItemType; // 1. Criar tipo de item de workflow $itemType = WorkflowItemType::create([ 'name' => 'Feature', 'description' => 'Nova funcionalidade' ]); // 2. Criar workflow $workflow = Workflow::create([ 'name' => 'Desenvolvimento Ágil', 'item_type_id' => $itemType->id ]); // 3. Adicionar estágios $stages = [ ['name' => 'Backlog', 'order' => 1], ['name' => 'Em Desenvolvimento', 'order' => 2], ['name' => 'Em Revisão', 'order' => 3], ['name' => 'Concluído', 'order' => 4], ]; foreach ($stages as $stageData) { $workflow->stages()->create($stageData); }
Exemplo 3: Personalização de Templates
// publishes/config/sitec/fabrica.php return [ 'templates' => [ 'model' => base_path('stubs/fabrica/model.stub'), 'controller' => base_path('stubs/fabrica/controller.stub'), ], 'namespace' => [ 'models' => 'App\\Models', 'controllers' => 'App\\Http\\Controllers', ], ];
Exemplo 4: Integração com CI/CD
# .github/workflows/ci.yml name: CI on: [push, pull_request] jobs: test: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - name: Setup PHP uses: shivammathur/setup-php@v2 with: php-version: 8.2 - run: composer install - run: vendor/bin/phpunit - run: vendor/bin/phpstan analyse - run: vendor/bin/phpcs
🔗 Integração com o Ecossistema SierraTecnologia
O Fábrica integra-se nativamente com outros pacotes do ecossistema:
Integração com Facilitador
// O Fábrica utiliza traits do Facilitador use Muleta\Traits\Providers\ConsoleTools; class FabricaProvider extends ServiceProvider { use ConsoleTools; // Métodos fornecidos pelo ConsoleTools }
Integração com Operador
// Dependência no composer.json "sierratecnologia/operador": "^0.4"
Integração com Integrations
// Sistema de integrações externas "sierratecnologia/integrations": "^0.4"
Integração com Muleta
// Biblioteca de utilitários compartilhados "sierratecnologia/muleta": "^0.4.0"
Práticas Compartilhadas
- Padronização de Namespaces: Todos os pacotes seguem
SierraTecnologia\{Package} - Service Providers: Padrão consistente de registro de serviços
- Configurações: Estrutura
config/sitec/{package}.php - Views: Namespace de views
{package}::{view} - Rotas: Prefixo e nomenclatura padronizados
Pipelines de Build
# Script comum para todos os pacotes composer install composer test # PHPUnit composer psalm # Psalm vendor/bin/phpstan analyse vendor/bin/phpcs --standard=PSR12
🔧 Extensão e Customização
Como Criar Novos Templates (Stubs)
- Criar diretório de stubs:
mkdir -p stubs/fabrica
- Criar template de modelo:
// stubs/fabrica/model.stub <?php namespace {{ namespace }}; use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\SoftDeletes; class {{ class }} extends Model { use SoftDeletes; protected $fillable = [ {{ fillable }} ]; protected $casts = [ {{ casts }} ]; }
- Configurar no arquivo de config:
// config/sitec/fabrica.php return [ 'stubs' => [ 'model' => base_path('stubs/fabrica/model.stub'), ], ];
Como Adicionar Comandos Artisan Personalizados
- Criar comando:
// app/Console/Commands/FabricaCustomCommand.php namespace App\Console\Commands; use Illuminate\Console\Command; class FabricaCustomCommand extends Command { protected $signature = 'fabrica:custom {name}'; protected $description = 'Comando customizado do Fábrica'; public function handle() { $name = $this->argument('name'); $this->info("Processando: {$name}"); // Sua lógica aqui } }
- Registrar no Provider:
// app/Providers/AppServiceProvider.php public function boot() { if ($this->app->runningInConsole()) { $this->commands([ \App\Console\Commands\FabricaCustomCommand::class, ]); } }
Como Sobrescrever Classes Base
// app/Services/CustomFabricaService.php namespace App\Services; use Fabrica\Services\FabricaService; class CustomFabricaService extends FabricaService { public function customMethod() { // Nova funcionalidade } public function generate($type, $name) { // Sobrescrever método base parent::generate($type, $name); // Adicionar lógica customizada $this->customMethod(); } }
// app/Providers/AppServiceProvider.php public function register() { $this->app->singleton(FabricaService::class, function ($app) { return new CustomFabricaService(config('sitec.fabrica')); }); }
📊 Exemplos Reais
Caso de Uso 1: Criação de Sistema de Tickets
Antes do Fábrica (tempo estimado: 2-3 horas):
- Criar manualmente Model, Migration, Controller
- Configurar validações
- Criar testes
- Implementar Repository
- Configurar rotas
Depois do Fábrica (tempo estimado: 15 minutos):
# Comandos automáticos gerariam toda estrutura # (exemplo conceitual - adaptar conforme comandos disponíveis) php artisan fabrica:module Ticket --with-tests --with-api
Caso de Uso 2: Padronização de Projetos
Benefício: Todos os 15 projetos internos da SierraTecnologia seguem a mesma estrutura:
project/
├── app/
│ ├── Models/ # Gerados pelo Fábrica
│ ├── Services/ # Gerados pelo Fábrica
│ └── Http/
│ └── Controllers/ # Gerados pelo Fábrica
├── tests/ # Gerados pelo Fábrica
└── config/
└── sitec/ # Padrão SierraTecnologia
Caso de Uso 3: Onboarding de Novos Desenvolvedores
Antes: 2-3 semanas para entender padrões de código
Depois: 3-5 dias com código gerado padronizado e documentação integrada
Métricas de Impacto
- Redução de tempo: 70% menos tempo em scaffolding
- Consistência: 100% dos projetos seguem os mesmos padrões
- Qualidade: Redução de 60% em bugs relacionados a estrutura
- Produtividade: Desenvolvedores focam em lógica de negócio, não em boilerplate
🛠️ Ferramentas de Qualidade
PHPUnit - Testes Automatizados
# Executar todos os testes vendor/bin/phpunit # Executar testes com cobertura vendor/bin/phpunit --coverage-html coverage # Executar apenas testes unitários vendor/bin/phpunit --testsuite "Fabrica Unit Tests" # Executar apenas testes de feature vendor/bin/phpunit --testsuite "Fabrica Feature Tests"
Configuração: phpunit.xml
PHPStan - Análise Estática (Nível 8)
# Analisar código vendor/bin/phpstan analyse # Analisar com relatório detalhado vendor/bin/phpstan analyse --error-format=table # Gerar baseline (para projetos legados) vendor/bin/phpstan analyse --generate-baseline
Configuração: phpstan.neon
PHP_CodeSniffer - Padrão PSR-12
# Verificar código vendor/bin/phpcs # Verificar arquivos específicos vendor/bin/phpcs src/ # Corrigir automaticamente vendor/bin/phpcbf # Relatório detalhado vendor/bin/phpcs --report=summary
Configuração: phpcs.xml
Psalm - Análise de Tipos
# Executar Psalm vendor/bin/psalm # Com relatório de progresso vendor/bin/psalm --show-info=true # Modo rigoroso vendor/bin/psalm --show-info=true --no-cache
Configuração: psalm.xml
PHPMD - PHP Mess Detector
# Analisar código vendor/bin/phpmd src/ text phpmd.xml # Formato HTML vendor/bin/phpmd src/ html phpmd.xml --reportfile phpmd-report.html # Apenas regras específicas vendor/bin/phpmd src/ text cleancode,codesize
Configuração: phpmd.xml
GrumPHP - Git Hooks
GrumPHP executa automaticamente verificações antes de commits:
# Instalado via composer # Hooks configurados automaticamente # Executar manualmente vendor/bin/grumphp run # Pular verificações (não recomendado) git commit --no-verify
Configuração: grumphp.yml
GitHub Actions - CI/CD
Workflows configurados em .github/workflows/:
- ci.yml: Pipeline completo (testes, qualidade, segurança)
- run-tests.yml: Testes em múltiplas versões PHP/Laravel
- php-cs-fixer.yml: Verificação e correção de estilo
- psalm.yml: Análise estática
🤝 Guia de Contribuição
Como Contribuir
-
Fork o repositório
-
Clone seu fork:
git clone https://github.com/seu-usuario/fabrica.git cd fabrica -
Crie uma branch:
git checkout -b feature/nova-funcionalidade
-
Faça suas alterações
-
Execute as ferramentas de qualidade:
composer test vendor/bin/phpstan analyse vendor/bin/phpcs vendor/bin/psalm -
Commit suas mudanças:
git add . git commit -m "feat: adiciona nova funcionalidade X"
-
Push para seu fork:
git push origin feature/nova-funcionalidade
-
Abra um Pull Request
Padrões de Commits
Seguimos Conventional Commits:
<tipo>(<escopo>): <descrição>
[corpo opcional]
[rodapé opcional]
Tipos:
feat: Nova funcionalidadefix: Correção de bugdocs: Documentaçãostyle: Formatação (sem mudança de código)refactor: Refatoraçãotest: Testeschore: Tarefas de build, configs, etc
Exemplos:
feat(workflow): adiciona sistema de aprovação em workflows
fix(models): corrige relacionamento em Sprint model
docs(readme): atualiza documentação de instalação
test(unit): adiciona testes para FabricaService
Padrões de Branches
main/master: Produçãodevelop: Desenvolvimentofeature/*: Novas funcionalidadesfix/*: Correções de bugshotfix/*: Correções urgentesrelease/*: Preparação de releases
Execução Local das Ferramentas
# Instalar dependências composer install # Executar testes composer test # Verificar estilo de código vendor/bin/phpcs # Corrigir estilo vendor/bin/phpcbf # Análise estática PHPStan vendor/bin/phpstan analyse # Análise estática Psalm vendor/bin/psalm # PHP Mess Detector vendor/bin/phpmd src/ text phpmd.xml # Executar todas as verificações (via GrumPHP) vendor/bin/grumphp run
Processo de Code Review
- Automated checks: GitHub Actions executa automaticamente
- Code review: Pelo menos 1 aprovação necessária
- Tests: Todos os testes devem passar
- Quality gates: PHPStan nível 8, PHPCS PSR-12, cobertura mínima
Reportando Issues
Ao reportar um bug, inclua:
- Versão do PHP
- Versão do Laravel
- Versão do Fábrica
- Passos para reproduzir
- Comportamento esperado vs atual
- Stacktrace (se aplicável)
Changelog
Refer to the Changelog for a full history of the project.
Support
The following support channels are available at your fingertips:
Contributing & Protocols
Thank you for considering contributing to this project! The contribution guide can be found in CONTRIBUTING.md.
Bug reports, feature requests, and pull requests are very welcome.
Security Vulnerabilities
If you discover a security vulnerability within this project, please send an e-mail to help@sierratecnologia.com.br. All security vulnerabilities will be promptly addressed.
About SierraTecnologia
SierraTecnologia is a software solutions startup, specialized in integrated enterprise solutions for SMEs established in Rio de Janeiro, Brazil since June 2008. We believe that our drive The Value, The Reach, and The Impact is what differentiates us and unleash the endless possibilities of our philosophy through the power of software. We like to call it Innovation At The Speed Of Life. That’s how we do our share of advancing humanity.
License
This software is released under The MIT License (MIT).
(c) 2008-2020 SierraTecnologia, Some rights reserved.
sierratecnologia/fabrica 适用场景与选型建议
sierratecnologia/fabrica 是一款 基于 PHP 开发的 Composer 扩展包,目前已累计 30 次下载、GitHub Stars 达 0, 最近一次更新时间为 2020 年 07 月 20 日, 在 PHP 生态内属于活跃度较高的组件。
它主要适用于以下技术方向: 「SierraTecnologia」 「fabrica」 等业务场景。在实际项目中,围绕这些方向常见需要落地的问题包括:接口对接、性能调优、并发安全、与既有框架(Laravel / ThinkPHP / Yii / Webman 等)的兼容适配,以及生产环境的日志埋点与稳定性保障。
我们在过去多个企业项目中使用过 sierratecnologia/fabrica 或与其功能相近的方案,如果你在选型或落地过程中遇到问题,例如 版本兼容、二次改造、私有化封装、与内部系统对接、生产 BUG 排查,欢迎联系我们协助评估。
基于 sierratecnologia/fabrica 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。
线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。
承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。
与 sierratecnologia/fabrica 相关的其它包
同方向 / 同关键字的高下载量 PHP Composer 包推荐,方便对比选型:
SierraTecnologia common support helpers, contracts, and traits required by various SierraTecnologia packages. Validator functionality, and basic controller included out-of-the-box.
:package_description
Recursos para GeoLocalização
Sierratecnologia Cashier provides an expressive, fluent interface to SierraTecnologia's subscription billing services.
Integrations de Serviços
MediaManager de Arquivos
统计信息
- 总下载量: 30
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 0
- 点击次数: 7
- 依赖项目数: 0
- 推荐数: 1
其他信息
- 授权协议: MIT
- 更新时间: 2020-07-20