Back-End PHP 8.3 + MySQL 8.0

SWMVC Starter Kit

Baixe o código-fonte completo pronto para uso em ZIP ou clone o repositório. O SWMVC já vem com Painel Admin, Matriz de Permissões (RBAC), Galeria de Mídias, Blog, E-Commerce e Instalador Automatizado.

Instalação Modo Rápido (3Passos)

Como instalar o SWMVC do zero em qualquer servidor ou computador local em menos de 2 minutos.

1 Baixar o Código-Fonte (ZIP ou GitHub)

Escolha uma das duas formas de baixar o projeto:

  • Opção A (Download Direto .ZIP): Baixe o arquivo swmvc-starter-kit.zip e extraia na pasta do seu projeto web (ex: htdocs/meu-site ou /var/www/html/meu-site).
  • Opção B (Via GitHub / Git Clone): Execute o comando git clone no seu terminal:
# Clonar o repositório oficial do SWMVC
git clone https://github.com/sanweb-dev/swmvc.git meu-projeto

# Acessar a pasta do projeto
cd meu-projeto
2 Configurar o Banco de Dados no .env

Renomeie o arquivo .env.example para .env e insira os dados do seu MySQL:

DB_HOST=127.0.0.1
DB_NAME=nome_do_seu_banco
DB_USER=root
DB_PASS=sua_senha_mysql
3 Executar o Instalador CLI Automatizado

Abra o terminal na pasta do projeto e rode o comando abaixo:

php install.php
✅ O instalador realiza tudo automaticamente:
  • Cria o Banco de Dados no MySQL
  • Cria todas as tabelas (Usuários, Mídias, Blog, Loja, Logs e RBAC)
  • Cria a conta Admin inicial: admin@admin.com / Senha: Admin2026!
  • Prepara as pastas de upload e permissões de escrita

O Que Vem Incluído no SWMVC

Módulos nativos totalmente configurados e prontos no Starter Kit.

Painel Admin & Matriz RBAC

Painel de controle responsivo com gestão de 4 papéis de acesso (Admin, Gerente, Editor, Usuário) alteráveis dinamicamente pela tela /admin/permissoes.

QueryBuilder Fluente & Models

Consultas seguras contra SQL Injection (QB::tabela('users')->buscar()), paginação automática e suporte nativo a Lixeira / Soft-Deletes.

Galeria de Mídias & Upload WebP

Upload centralizado com pipeline de thumbnails, otimização automatizada WebP e organização relacional polimórfica.

Blog & E-Commerce Prontos

Gestão de produtos, categorias, pedidos, artigos do blog, moderação de comentários e relatório de faturamento.

Guia de Expansão (Para Humanos e IAs)

Como criar novas áreas tanto no Admin quanto no Front-end público.

1. Criar um Novo Módulo no ADMIN (Exemplo: Banners)

// 1. Tabela SQL no Banco (app/Database/schema_completo.sql)
CREATE TABLE IF NOT EXISTS banners (
    id INT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
    titulo VARCHAR(150) NOT NULL,
    img VARCHAR(255) NOT NULL,
    status CHAR(1) DEFAULT 'A',
    created_at DATETIME DEFAULT CURRENT_TIMESTAMP
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

// 2. Model (app/Models/Banner.php)
namespace App\Models;
use SW\Core\QueryBuilder as QB;
class Banner {
    public static function todos() {
        return QB::tabela('banners')->where('status', 'A')->buscar();
    }
}

// 3. Controller (app/Controllers/Admin/BannerController.php)
namespace App\Controllers\Admin;
use SW\Core\Controller;
use SW\Auth\RBAC;
use SW\Core\View;

class BannerController extends Controller {
    public function index() {
        RBAC::requerPermissao('banners.ver');
        View::renderizar('admin/banners/index');
    }
}

// 4. Rota Admin (app/Routes/admin.php)
Router::get('/banners', 'Admin\BannerController@index', ['auth']);

// 5. View Admin (app/Views/admin/banners/index.php)
<?php use SW\Core\View; View::layout('admin/layouts/app', ['titulo' => 'Banners']); ?>
<div class="flx alc j-sb mb-m page-header-admin">
    <div>
        <h1 class="page-title">Banners</h1>
        <p class="page-subtitle">Gerencie os destaques visuais do site</p>
    </div>
</div>

2. Criar uma Nova Página no SITE PÚBLICO (Exemplo: /sobre)

// 1. Controller (app/Controllers/Site/SobreController.php)
namespace App\Controllers\Site;
use SW\Core\Controller;
use SW\Core\View;

class SobreController extends Controller {
    public function index() {
        View::renderizar('site/sobre/index', ['titulo' => 'Sobre Nós']);
    }
}

// 2. Rota Pública (app/Routes/web.php)
Router::get('/sobre', 'Site\SobreController@index');

// 3. View Pública (app/Views/site/sobre/index.php)
<?php use SW\Core\View; View::layout('site/layouts/app', ['titulo' => $titulo]); ?>
<section class="container py-g">
    <h1>Sobre a Empresa</h1>
</section>