承接 sh4rck3/laravel_combo_stack 相关项目开发

从需求分析到上线部署,全程专人跟进,保证项目质量与交付效率

邮箱:yvsm@zunyunkeji.com | QQ:316430983 | 微信:yvsm316

sh4rck3/laravel_combo_stack

最新稳定版本:1.3.1

Composer 安装命令:

composer require sh4rck3/laravel_combo_stack

包简介

Pacote que instala Jetstream, Spatie e outras ferramentas uteis do laravel, pacote bem indicado para iniciar um projeto com padrao monolito com api, com frontend em vuejs 3 padrao scritp setup

README 文档

README

Laravel Combo Stack

Latest Version on Packagist Total Downloads

Um pacote completo para iniciar projetos Laravel rapidamente, combinando ferramentas essenciais como Jetstream, Inertia.js, Vue 3, e Spatie Permission, além de diversas bibliotecas frontend úteis - tudo pré-configurado e pronto para uso.

📋 Recursos

  • Laravel Jetstream com Inertia.js & Vue 3
  • Sistema de autenticação completo (login, registro, verificação de email, etc)
  • Spatie Laravel Permission para gerenciamento de papéis e permissões
  • Dashboard personalizado pronto para uso
  • Estrutura organizada com separação clara entre controladores web e API
  • Tema Dark integrado
  • 10+ bibliotecas frontend pré-configuradas
  • Helpers de permissão para Vue (verificação fácil de papéis/permissões)
  • Usuários padrão com papéis pré-configurados

🚀 Instalação

# Instalar via Composer
composer require sh4rck3/laravel_combo_stack

# Executar o comando de instalação
php artisan combo-stack:install

O processo de instalação configurará automaticamente:

  1. Jetstream com Inertia e Vue 3
  2. Sistema de papéis e permissões
  3. Middleware e helpers para gerenciamento de permissões
  4. Bibliotecas frontend essenciais
  5. Usuários demo para cada papel configurado

✨ Bibliotecas Frontend Incluídas

Biblioteca Descrição Uso
Vue Select Componente de dropdown avançado <v-select :options="options"></v-select>
SweetAlert2 Caixas de diálogo elegantes $swal('Hello World!')
Vue Toast Sistema de notificações toast $toast.success('Concluído!')
Laravel Vue Pagination Paginação para Laravel <Pagination :data="users" />
Vuex Gerenciamento de estado this.$store.commit('setUser', user)
AOS Animações on-scroll <div data-aos="fade-up">...</div>
Vue Print Impressão de componentes v-print="'#printMe'"
Vue Mask Máscaras de input v-mask="'##.###-###'"
FullCalendar Calendário interativo completo <FullCalendar :options="calendarOptions" />
ApexCharts Gráficos interativos <apexchart type="bar" :options="options" :series="series"></apexchart>
VCalendar Seletor de data e calendário <v-date-picker v-model="date" />

🔐 Gerenciamento de Papéis e Permissões

Papéis Padrão

O sistema vem com os seguintes papéis pré-configurados:

  • Administrador: Acesso total ao sistema
  • Gerente: Gerencia conteúdos e acessa relatórios
  • Usuário: Acesso básico ao conteúdo

Verificando Papéis e Permissões no Frontend

<!-- Verificando um papel específico -->
<div v-if="$hasRole('Administrador')" class="p-2 bg-green-100 dark:bg-green-800 rounded text-gray-900 dark:text-gray-100">
              Você tem o papel de Administrador
          </div>

<!-- Verificando uma permissão específica -->
<div v-if="$can('gerenciar-usuarios')" class="p-2 bg-green-100 dark:bg-green-800 rounded text-gray-900 dark:text-gray-100">
              Você pode gerenciar usuários
          </div>

<!-- Verificando vários papéis -->
 <div v-if="$hasAnyRole(['Administrador', 'Gerente'])" class="p-2 bg-green-100 dark:bg-green-800 rounded text-gray-900 dark:text-gray-100">
              Você é um Administrador ou Gerente
          </div>

<!-- Verificando várias permissões -->
<div v-if="$canAny(['gerenciar-usuarios', 'visualizar-usuarios'])" class="p-2 bg-green-100 dark:bg-green-800 rounded text-gray-900 dark:text-gray-100">
              Você pode gerenciar ou visualizar usuários
          </div>

Verificando no Backend (Controllers)

// Verificando um papel
if ($user->hasRole('Administrador')) {
    // Lógica para administradores
}

// Verificando uma permissão
if ($user->can('gerenciar-usuarios')) {
    // Lógica para quem pode gerenciar usuários
}

// Protegendo rotas com middleware
Route::middleware(['role:Administrador'])->group(function () {
    // Rotas acessíveis apenas para administradores
});

Route::middleware(['permission:gerenciar-conteudo'])->group(function () {
    // Rotas acessíveis apenas para quem tem permissão
});

📁 Estrutura Organizada

O pacote configura uma estrutura de diretórios organizada:

app/
├── Http/
│   ├── Controllers/
│   │   ├── Web/
│   │   │   └── PageController.php  // Controladores para páginas web
│   │   └── Api/                    // Controladores para API
│   └── Middleware/
│       └── HandleInertiaRequests.php  // Configurado para compartilhar papéis
resources/
└── js/
    ├── Components/
    │   └── PermissionExample.vue   // Componente demo de permissões
    ├── Pages/
    │   └── Dashboard.vue           // Dashboard personalizado
    ├── Plugins/
    │   └── Permissions.js          // Helper de permissões
    └── Store/
        └── MyStore.js              // Store Vuex pré-configurada

⚙️ Configuração

Publique o arquivo de configuração para personalizar o comportamento do pacote:

php artisan vendor:publish --tag=combo-stack-config

Opções de Configuração

// config/combo-stack.php
return [
    // Configurações gerais
    'company_name' => env('APP_NAME', 'Laravel'),
    
    // Jetstream
    'jetstream' => [
        'teams' => true,
        'api' => true,
        'dark_mode' => true,
    ],
    
    // Papéis e permissões iniciais
    'roles' => [
        'admin' => [
            'name' => 'Administrador',
            'permissions' => ['gerenciar-usuarios', 'gerenciar-conteudo', 'acessar-relatorios'],
        ],
        'manager' => [
            'name' => 'Gerente',
            'permissions' => ['gerenciar-conteudo', 'acessar-relatorios'],
        ],
        'user' => [
            'name' => 'Usuário',
            'permissions' => ['acessar-conteudo'],
        ],
    ],
    
    // Usuários padrão
    'create_default_users' => true,
    'default_users' => [
        'admin' => [
            'name' => 'Administrador',
            'email' => 'admin@example.com',
            'password' => 'admin123',
        ],
        // Outros usuários...
    ],
];

📊 Componentes e Exemplos

Gráficos com ApexCharts

<template>
  <div class="card">
    <apexchart 
      type="bar" 
      height="350" 
      :options="chartOptions" 
      :series="series">
    </apexchart>
  </div>
</template>

<script setup>
import { ref } from 'vue';

const chartOptions = ref({
  chart: {
    id: 'vuechart-example'
  },
  xaxis: {
    categories: ['Jan', 'Fev', 'Mar', 'Abr', 'Mai', 'Jun']
  }
});

const series = ref([{
  name: 'Vendas',
  data: [30, 40, 35, 50, 49, 60]
}]);
</script>

Calendário Interativo

<template>
  <FullCalendar 
    :options="calendarOptions" 
    class="my-4" 
  />
</template>

<script setup>
import { ref } from 'vue';
import dayGridPlugin from '@fullcalendar/daygrid';

const calendarOptions = ref({
  plugins: [dayGridPlugin],
  initialView: 'dayGridMonth',
  events: [
    { title: 'Reunião', date: '2023-03-12' },
    { title: 'Apresentação', date: '2023-03-15' }
  ],
  headerToolbar: {
    left: 'prev,next today',
    center: 'title',
    right: 'dayGridMonth,dayGridWeek,dayGridDay'
  }
});
</script>

Gerenciamento de Estado com Vuex

<template>
  <div>
    <p>Contador: {{ count }}</p>
    <button @click="increment">Incrementar</button>
    
    <div v-if="notifications.length > 0">
      <div v-for="(notification, index) in notifications" 
           :key="index" 
           class="notification">
        {{ notification.message }}
      </div>
    </div>
  </div>
</template>

<script setup>
import { computed } from 'vue';
import { useStore } from 'vuex';

const store = useStore();

const count = computed(() => store.state.count);
const notifications = computed(() => store.state.notifications);

const increment = () => {
  store.commit('increment');
  store.commit('addNotification', { 
    message: 'Contador incrementado!', 
    type: 'success' 
  });
};
</script>

📱 Responsividade

Todos os componentes são totalmente responsivos e funcionam em dispositivos móveis, tablets e desktops, aproveitando o Tailwind CSS fornecido pelo Jetstream.

🛠️ Requerimentos

  • PHP 8.1 ou superior
  • Laravel 10.x ou superior
  • Node.js e NPM

🔄 Atualização

Para atualizar para a versão mais recente:

composer update sh4rck3/laravel_combo_stack
php artisan combo-stack:install

📝 Licença

O Laravel Combo Stack é um software de código aberto licenciado sob a licença MIT.

🙏 Agradecimentos

Desenvolvido por Luccas Woiciechoski | sh4rck3@gmail.com

Código semelhante encontrado com 1 tipo de licença

统计信息

  • 总下载量: 50
  • 月度下载量: 0
  • 日度下载量: 0
  • 收藏数: 1
  • 点击次数: 0
  • 依赖项目数: 0
  • 推荐数: 0

GitHub 信息

  • Stars: 0
  • Watchers: 1
  • Forks: 0
  • 开发语言: Vue

其他信息

  • 授权协议: MIT
  • 更新时间: 2025-03-12