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.
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-siteou/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
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
Abra o terminal na pasta do projeto e rode o comando abaixo:
php install.php
- 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 de controle responsivo com gestão de 4 papéis de acesso (Admin, Gerente, Editor, Usuário) alteráveis dinamicamente pela tela /admin/permissoes.
Consultas seguras contra SQL Injection (QB::tabela('users')->buscar()), paginação automática e suporte nativo a Lixeira / Soft-Deletes.
Upload centralizado com pipeline de thumbnails, otimização automatizada WebP e organização relacional polimórfica.
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>