sierratecnologia / siravel
Recursos para Desenvolvimento Complexo
Fund package maintenance!
ricasolucoes
ricasolucoes.com.br/open-source/support-us
Installs: 1
Dependents: 0
Suggesters: 0
Security: 0
Stars: 0
Watchers: 1
Forks: 0
pkg:composer/sierratecnologia/siravel
Requires
- php: >=7.4
- laravel/framework: ^7.0 || ^8.0
- sierratecnologia/bancario: dev-master
- sierratecnologia/casa: dev-master
- sierratecnologia/facilitador: dev-master
- sierratecnologia/integrations: dev-master
- sierratecnologia/locaravel: dev-master
- sierratecnologia/stalker: dev-master
- sierratecnologia/telefonica: dev-master
- sierratecnologia/transmissor: dev-master
- dev-master
- v10.0.x-dev
- v1.0.x-dev
- 0.5.x-dev
- 0.4.x-dev
- 0.4.4
- 0.4.3
- 0.4.1
- 0.4.0
- 0.3.3
- 0.3.2
- 0.3.1
- 0.3.0.x-dev
- 0.3.0
- 0.2.2.x-dev
- 0.2.2
- 0.2.1
- 0.2.0
- 0.1.0
- 0.0.1
- dev-claude/siravel-docs-quality-tools-011CUqcDwawLCcs2Uk31Qfmu
- dev-stable
- dev-release/4.4
- dev-dev
- dev-temp
- dev-quebrado
- dev-dev-0.4
- dev-v0.1.X-dev
This package is auto-updated.
Last update: 2025-11-06 01:23:58 UTC
README
Sobre o Siravel
Siravel é um pacote Laravel robusto e completo para desenvolvimento de aplicações complexas multi-tenant, e-commerce e CMS. Desenvolvido pela SierraTecnologia, o Siravel fornece uma arquitetura modular baseada em features, permitindo construir sistemas SaaS corporativos com isolamento de tenants, gerenciamento de negócios e uma ampla gama de funcionalidades prontas para uso.
Principais Características
- 🏢 Arquitetura Multi-tenant: Isolamento completo por tenant com suporte a database-per-tenant
- 🎯 Sistema Modular de Features: 13+ módulos plugáveis (Blog, Commerce, Travels, etc.)
- 🛒 E-commerce Completo: Produtos, pedidos, assinaturas, pagamentos e cupons
- 📝 CMS Robusto: Páginas, menus, widgets, FAQs com suporte a traduções
- 🔐 Autenticação Avançada: Suporte a LDAP e autenticação social
- 🎨 Sistema de Temas: Temas customizáveis com white-label
- 📊 Business Intelligence: Analytics, relatórios e métricas
- 🌍 Multi-idioma: Sistema completo de traduções
- 🔌 Extensível: Arquitetura baseada em providers e features
Índice
- Requisitos
- Instalação
- Configuração
- Funcionalidades
- Estrutura do Projeto
- Uso
- Features Disponíveis
- Helpers e Utilidades
- Testes
- API
- Contribuindo
- Licença
Requisitos
- PHP:
^7.2 | ^8.0 - Laravel:
^7.0 | ^8.0 - MySQL 5.7+ ou MariaDB 10.2+
- Composer 2.0+
- Extensões PHP:
mbstring,openssl,PDO,tokenizer,xml,ctype,json,bcmath,gdouimagick
Instalação
Via Composer
composer require sierratecnologia/siravel
Publicar Assets e Configurações
# Publicar tudo php artisan vendor:publish --provider="Siravel\SiravelProvider" # Ou publicar seletivamente php artisan vendor:publish --tag=siravel-config php artisan vendor:publish --tag=siravel-migrations php artisan vendor:publish --tag=siravel-assets
Executar Migrações
php artisan migrate
Instalar o Siravel
php artisan sitec:siravel:install
Este comando irá:
- Configurar o ambiente multi-tenant
- Criar estruturas de banco de dados
- Publicar configurações padrão
- Configurar o primeiro negócio/organização
Configuração
Arquivo de Configuração Principal
Após a publicação, o arquivo config/siravel.php estará disponível:
return [ // Negócio/organização padrão 'default' => env('SIRAVEL_DEFAULT_BUSINESS', 'ricasolucoes'), // Prefixo de tabelas do banco de dados 'db-prefix' => env('SIRAVEL_DB_PREFIX', ''), // Paginação padrão 'pagination' => env('SIRAVEL_PAGINATION', 25), // Tema frontend padrão 'frontend-theme' => env('SIRAVEL_THEME', 'default'), // Habilitar multi-tenancy 'multi-tenant' => env('SIRAVEL_MULTI_TENANT', true), // Configurações de features 'features' => [ 'blog' => true, 'commerce' => true, 'travels' => false, // ... outras features ], ];
Variáveis de Ambiente
Adicione ao seu arquivo .env:
# Configurações do Siravel SIRAVEL_DEFAULT_BUSINESS=sua-empresa SIRAVEL_DB_PREFIX= SIRAVEL_PAGINATION=25 SIRAVEL_THEME=default SIRAVEL_MULTI_TENANT=true # Configurações de Tenancy TENANCY_CONNECTION=mysql TENANCY_HOST=localhost TENANCY_DATABASE=sistema TENANCY_USERNAME=root TENANCY_PASSWORD=
Funcionalidades
Sistema Multi-tenant
O Siravel utiliza o pacote Tenancy for Laravel para fornecer isolamento completo entre tenants:
use Siravel\Services\BusinessService; // Obter o negócio atual baseado no domínio $business = app(BusinessService::class)->getCurrentBusiness(); // Alternar contexto de tenant Business::set($business); // Verificar features ativas para o tenant if (Features::isActive('commerce')) { // Lógica de e-commerce }
Sistema de Features
Features podem ser ativadas/desativadas globalmente ou por tenant:
use Siravel\Facades\Features; // Verificar se uma feature está ativa if (Features::isActive('blog')) { // Código do blog } // Ativar feature para um negócio $business->features()->attach('commerce'); // Desativar feature $business->features()->detach('travels');
Blade Directives
O Siravel adiciona diretivas Blade úteis:
{{-- Verificar feature ativa --}} @feature('blog') <a href="{{ route('blog.index') }}">Blog</a> @endfeature {{-- Renderizar menu --}} @menu('main-menu') {{-- Renderizar widget --}} @widget('sidebar-widget') {{-- Verificar permissões --}} @userCan('edit-posts') <button>Editar</button> @enduserCan
Estrutura do Projeto
siravel/
├── bin/
│ └── code-analyser # Script de análise de código
├── config/ # Arquivos de configuração
├── database/
│ └── migrations/ # Migrações do banco de dados
├── helpers/ # Funções helper globais
│ ├── functions.php
│ ├── helpers.php
│ ├── types.php
│ ├── general.php
│ ├── blade.php
│ └── commerce_helpers.php
├── publishes/ # Arquivos para publicação
│ ├── config/
│ ├── resources/
│ ├── routes/
│ └── migrations/
├── routes/ # Definições de rotas
│ ├── web/
│ │ ├── admin.php
│ │ ├── features.php
│ │ └── public.php
│ └── api/
│ ├── siravel.php
│ └── v1.php
├── src/
│ ├── Builders/ # Query Builders customizados
│ ├── Console/
│ │ └── Commands/ # Comandos Artisan
│ ├── Contracts/ # Interfaces e Traits
│ ├── Entities/ # DTOs e Entities
│ ├── Events/ # Eventos do sistema
│ ├── Exceptions/ # Handlers de exceção
│ ├── Facades/ # Facades do Laravel
│ ├── Features/ # Módulos de features
│ │ ├── Blog/
│ │ ├── Commerce/
│ │ ├── Travels/
│ │ ├── Midias/
│ │ ├── Marketing/
│ │ ├── Gamification/
│ │ └── ...
│ ├── Http/
│ │ ├── Controllers/
│ │ │ ├── Admin/ # Controllers administrativos
│ │ │ ├── Api/ # Controllers de API
│ │ │ └── Features/ # Controllers de features
│ │ ├── Middleware/ # Middlewares customizados
│ │ └── Resources/ # API Resources
│ ├── Jobs/ # Jobs assíncronos
│ ├── Listeners/ # Event Listeners
│ ├── Models/ # Eloquent Models
│ │ ├── Access/ # Autenticação
│ │ ├── Blog/ # Blog
│ │ ├── Commerce/ # E-commerce
│ │ └── Negocios/ # Business/Organizações
│ ├── Observers/ # Model Observers
│ ├── Policies/ # Authorization Policies
│ ├── Providers/ # Service Providers
│ ├── Repositories/ # Repository Pattern
│ ├── Services/ # Business Logic Services
│ └── SiravelProvider.php # Provider principal
└── tests/
├── Feature/ # Testes de feature
├── Unit/ # Testes unitários
└── Services/ # Testes de serviços
Uso
Criando um Negócio (Business)
use Siravel\Models\Negocios\Business; $business = Business::create([ 'name' => 'Minha Empresa', 'slug' => 'minha-empresa', 'domain' => 'empresa.com.br', 'settings' => [ 'theme' => 'corporate', 'timezone' => 'America/Sao_Paulo', ], ]); // Ativar features $business->features()->attach(['blog', 'commerce']);
Trabalhando com o Blog
use Siravel\Models\Blog\Post; use Siravel\Models\Blog\Category; // Criar categoria $category = Category::create([ 'name' => 'Tecnologia', 'slug' => 'tecnologia', ]); // Criar post $post = Post::create([ 'title' => 'Título do Post', 'slug' => 'titulo-do-post', 'content' => 'Conteúdo do post...', 'category_id' => $category->id, 'published_at' => now(), 'is_published' => true, ]); // Buscar posts publicados $posts = Post::published()->latest()->paginate(15);
E-commerce
use Siravel\Models\Commerce\Product; use Siravel\Models\Commerce\Order; use Siravel\Models\Commerce\Cart; // Criar produto $product = Product::create([ 'name' => 'Produto Exemplo', 'slug' => 'produto-exemplo', 'description' => 'Descrição do produto', 'price' => 99.90, 'stock' => 100, ]); // Adicionar ao carrinho $cart = Cart::addItem($product, $quantity = 2); // Criar pedido $order = Order::createFromCart($cart, $user);
Sistema de Páginas CMS
use Siravel\Models\Negocios\Page; use Siravel\Models\Negocios\Menu; // Criar página $page = Page::create([ 'title' => 'Sobre Nós', 'slug' => 'sobre', 'content' => 'Conteúdo da página...', 'template' => 'default', 'is_published' => true, ]); // Criar menu $menu = Menu::create([ 'name' => 'Menu Principal', 'slug' => 'main-menu', 'items' => [ ['label' => 'Home', 'url' => '/'], ['label' => 'Sobre', 'url' => '/sobre'], ['label' => 'Blog', 'url' => '/blog'], ], ]);
Features Disponíveis
1. Blog (blog)
Sistema completo de blog com posts, categorias, tags e comentários.
Models: Post, Article, Category, Comment
Controllers: BlogController, PostController, ArticleController
2. Commerce (commerce)
Plataforma e-commerce com produtos, pedidos, assinaturas e pagamentos.
Models: Product, Order, Cart, Transaction, Coupon, Subscription
Controllers: ProductController, OrderController, TransactionController
3. Travels (travels)
Sistema de reservas de viagens com integração HotelBeds.
Models: Travels, Bookings
Integração: HotelBeds API
Controllers: TravelsController, HotelsController, RoomsController
4. Midias (midias)
Gerenciamento de mídia, imagens e arquivos.
Controllers: ImagesController, FilesController
Recursos: Upload, thumbnails, otimização de imagens
5. Marketing (marketing)
Ferramentas de marketing, promoções e campanhas.
Models: Promotion, Campaign
Controllers: PromotionsController
6. Gamification (gamification)
Sistema de gamificação com pontos, badges e rankings.
7. Writelabel (writelabel)
CMS white-label customizável.
Models: Page, Menu, Widget, Faq, Member
Controllers: PagesController, MenuController, FaqController
8. Productions (productions)
Gerenciamento de produção de mídia e conteúdo.
9. Casa (casa)
Gerenciamento de propriedades e imóveis.
10. Finder (finder)
Sistema de busca e descoberta.
11. Escritor (escritor)
Gerenciamento de documentos e escrita.
12. Bancario (bancario)
Funcionalidades bancárias e financeiras.
13. Fa (fa)
Análise financeira.
Helpers e Utilidades
Helpers de URL
// URL do storage url_storage('images/logo.png'); // URL do frontend url_frontend('/blog/post-slug'); // URL de login url_frontend_sign_in(); // Asset versionado versioned_asset('css/app.css');
Helpers de Usuário
// Usuário atual $user = user(); // Verificar se está autenticado if (signedInUser()) { // ... } // Verificar permissão if (userCan('edit', $post)) { // ... }
Helpers de Conteúdo
// Renderizar menu menu('main-menu', 'components.menu'); // Renderizar widget widget('sidebar-ads'); // Converter markdown para HTML $html = markup($markdown); // Ícone SVG icon('user', ['class' => 'w-6 h-6']);
Helpers de Tipo
// Conversões seguras de tipo $bool = to_bool($value); $int = to_int($value); $float = to_float($value); $string = to_string($value); $array = to_array($value); $object = to_object($data, ClassName::class);
API
O Siravel fornece APIs RESTful para todas as features:
Autenticação
# Login POST /api/v1/auth/login { "email": "user@example.com", "password": "password" } # Registro POST /api/v1/auth/register { "name": "John Doe", "email": "john@example.com", "password": "password" }
Blog API
# Listar posts GET /api/v1/posts?page=1&per_page=15 # Obter post GET /api/v1/posts/{id} # Criar post (autenticado) POST /api/v1/posts { "title": "Título", "content": "Conteúdo", "category_id": 1 }
Commerce API
# Listar produtos GET /api/v1/products # Adicionar ao carrinho POST /api/v1/cart/items { "product_id": 1, "quantity": 2 } # Criar pedido POST /api/v1/orders { "cart_id": 1, "payment_method": "credit_card" }
Testes
Executar Testes
# Todos os testes composer test # Ou via PHPUnit vendor/bin/phpunit # Com cobertura composer test-coverage
Estrutura de Testes
tests/
├── Feature/ # Testes de integração
│ ├── BlogTest.php
│ ├── CommerceTest.php
│ └── AuthTest.php
├── Unit/ # Testes unitários
│ ├── Models/
│ └── Services/
└── Services/ # Testes de serviços
├── BusinessServiceTest.php
└── FeatureServiceTest.php
Exemplo de Teste
namespace Tests\Feature; use Tests\TestCase; use Siravel\Models\Blog\Post; class BlogTest extends TestCase { public function test_can_create_post() { $post = Post::create([ 'title' => 'Test Post', 'content' => 'Test Content', ]); $this->assertDatabaseHas('posts', [ 'title' => 'Test Post', ]); } }
Análise de Código
PHP CS Fixer
# Verificar estilo de código
composer format
Psalm
# Análise estática
composer psalm
PHPStan
# Análise de código
vendor/bin/phpstan analyse
Comandos Artisan
# Instalar Siravel php artisan sitec:siravel:install # Backup do banco de dados php artisan siravel:database:backup # Criar negócio php artisan siravel:business:create {name} # Ativar feature php artisan siravel:feature:enable {feature} {business?} # Desativar feature php artisan siravel:feature:disable {feature} {business?}
Arquitetura e Padrões
Service Layer
namespace App\Services; use Siravel\Services\BaseService; class CustomService extends BaseService { public function processData($data) { // Lógica de negócio } }
Repository Pattern
namespace App\Repositories; use Siravel\Repositories\SiravelRepository; class CustomRepository extends SiravelRepository { protected $model = CustomModel::class; public function findByCustomCriteria($criteria) { return $this->model->where('field', $criteria)->get(); } }
Events & Listeners
// Event namespace Siravel\Events; class BusinessNewRegister { public $business; public function __construct($business) { $this->business = $business; } } // Listener Event::listen(BusinessNewRegister::class, function($event) { // Processar novo negócio });
Dependências
Pacotes da SierraTecnologia
- telefonica: Sistema de telefonia e comunicação
- porteiro: Autenticação e controle de acesso
- transmissor: Sistema de transmissão e notificações
- bancario: Funcionalidades bancárias
- locaravel: Localização e traduções
Pacotes Sugeridos
- integrations: Integrações com serviços externos
- stalker: Rastreamento e analytics
- facilitador: Features base da plataforma
- casa: Gerenciamento de propriedades
Contribuindo
Contribuições são bem-vindas! Por favor:
- Fork o projeto
- Crie uma branch para sua feature (
git checkout -b feature/AmazingFeature) - Commit suas mudanças (
git commit -m 'Add some AmazingFeature') - Push para a branch (
git push origin feature/AmazingFeature) - Abra um Pull Request
Guia de Contribuição
- Siga os padrões PSR-12 de código
- Adicione testes para novas funcionalidades
- Atualize a documentação quando necessário
- Mantenha o código limpo e bem documentado
Segurança
Se você descobrir algum problema de segurança, por favor envie um e-mail para help@sierratecnologia.com.br ao invés de usar o issue tracker.
Changelog
Consulte CHANGELOG.md para mais informações sobre as mudanças recentes.
Licença
Este pacote é um software de código aberto licenciado sob a Licença MIT.
Suporte
- Email: help@sierratecnologia.com.br
- Issues: GitHub Issues
- Documentação: GitHub Wiki
About SierraTecnologia
SierraTecnologia é uma empresa de tecnologia especializada em soluções empresariais complexas, desenvolvendo ferramentas e plataformas robustas para transformação digital. Nossa missão é fornecer tecnologia de ponta que permita às empresas crescerem e inovarem.
Desenvolvido com ❤️ pela SierraTecnologia