IndusOS • Commerce é uma versão para lojistas focada na venda de produtos, com integrações via API para iFood e 99 Food, construída em PHP 8.2+ seguindo uma arquitetura inspirada no CodeIgniter 3. Ele cobre módulos de clientes, produtos, produção, estoque, expedição, financeiro, relatórios e configuração, além de fornecer portal do cliente com autenticação JWT.
- PHP >= 8.2 com extensões
pdo_mysql,openssl,mbstring,json. - MySQL 8 (charset
utf8mb4). - Extensão
zipdo PHP (opcional, mas recomendada para gerar XLSX mais compactos).
Sem Composer: o projeto já inclui um autoloader próprio e bibliotecas internas para JWT, PDF e XLSX, portanto basta clonar o repositório e configurar o PHP; não é necessário executar
composer install.
- Clone o repositório e copie
.env.examplepara.env, ajustando as credenciais de banco, SMTP e JWT. Se instalar em uma subpasta (ex.:https://dominio.com/erp), definaAPP_BASE_PATH=/erpno.envpara que links e assets sejam gerados com o prefixo correto. - Crie o banco de dados e execute o script
sql/schema.sql. - Configure o servidor web apontando o DocumentRoot para
public/. Se isso não for possível (ex.: hospedagem compartilhada), mantenha o DocumentRoot na raiz do projeto e habilitemod_rewrite; o arquivo.htaccessincluído redirecionará automaticamente todas as requisições parapublic/index.php.Em ambientes Apache, certifique-se de que o diretório onde o projeto foi instalado possui
AllowOverride Allhabilitado; caso contrário, URLs como/loginretornarão 404 Not Found em vez de chegarem ao front controller. - Ao rodar em ambientes locais como XAMPP (pastas em
htdocs/), basta acessar a URL do projeto normalmente (http://localhost/pasta/). O.htaccessda raiz já encaminha as rotas parapublic/index.phpe o front controller detecta automaticamente o subdiretório para atualizar menus, formulários e chamadas da API.
O projeto foi estruturado para funcionar em hospedagem compartilhada da Hostinger com PHP 8.2/8.3 e MySQL 8. Siga este checklist:
- Crie o banco MySQL no painel (charset/collation
utf8mb4_general_ci) e atualize as variáveisDB_HOST,DB_NAME,DB_USEReDB_PASSno.env. - Em "Sites > Gerenciar > Configurações avançadas > PHP" selecione PHP 8.2 ou 8.3 e habilite as extensões
pdo_mysql,mbstring,json,opensslezip. - Mantenha o DocumentRoot apontando para
public/; se não puder alterar, deixe a raiz como está e use o.htaccessfornecido (já inclui o fallback parapublic/index.php). Caso o site fique em uma pasta, definaAPP_BASE_PATH=/sua_pastano.envpara normalizar rotas e assets. - Confirme que mod_rewrite está ativo e que a opção "AllowOverride" está liberada para o diretório do site (necessário para URLs amigáveis do painel e da API).
- Suba o conteúdo do repositório (incluindo
application/,public/esql/). Depois de enviar, importe osql/schema.sqlpelo phpMyAdmin. - Agende o cron para backups/alertas conforme abaixo e teste
/logine/portalpara validar a configuração.
application/
Core/ # Container, Router e classes base
Services/ # Regras de negócio (RBAC, estoque, produção, etc.)
Repositories/ # Acesso a dados via PDO
Modules/ # Controladores do painel separados por domínio
Controllers/ # Controladores globais (API, dashboard, CLI)
views/portal/ # Portal web para clientes (catálogo + carrinho)
public/index.php # Front controller e definição de rotas
sql/schema.sql # DDL e seeds iniciais
Após rodar o script SQL inicial, um usuário admin@indusos.local é criado com papel admin e senha Admin@123. Atualize a senha imediatamente em produção (recomenda-se re-hash com Argon2id se disponível).
O comando abaixo gera dumps de banco e compacta uploads (ideal para cron de 6/6h na Hostinger):
php public/index.php cli/backup:runAgende um cron diário para executar um endpoint que leia EstoqueService::alertasValidade e envie e-mails. Ajuste VALIDADE_ALERTA_DIAS nas configurações.
POST /api/auth/token– login (e-mail/CPF/CNPJ) para clientes.GET /api/produtos– lista produtos (token Bearer).POST /api/pedidos– cria pedido com reserva FEFO.GET /api/pedidos/{id}– detalhes do pedido.
O portal público disponível em /portal permite:
- Cadastro com validação de CPF/CNPJ (módulo 11) e criação automática de usuário/cliente.
- Login com geração de token JWT persistido no
localStorage. - Consulta ao catálogo, montagem de carrinho e envio de pedidos integrados à API.
Rotas iniciam em /clientes, /produtos, /producao/op, /estoque/posicao, /expedicao/picking/{pedido}, /financeiro/titulos, /relatorios/* e /config. Todas as rotas retornam JSON neste protótipo; adapte as views conforme necessário.
Um arquivo OpenAPI simplificado é fornecido em public/swagger.json (adicione a rota no servidor web).
Esta implementação fornece uma base funcional: regras de FEFO, geração de OP, baixa de estoque, emissão de PDF/XLSX (sem dependências externas) e auditoria via banco. Complete as views HTML, autenticação de sessão e layout responsivo conforme necessário para produção.