Um sistema web completo para gestão de estoque, desenvolvido passo a passo com foco em boas práticas, arquitetura MVC e tecnologias modernas, incluindo configuração segura com variáveis de ambiente.
- Dashboard Gerencial:
- Visualização rápida de estatísticas chave (total de produtos, itens em estoque).
- Histórico das últimas movimentações.
- Gestão de Produtos (CRUD Completo):
- Cadastro, listagem, edição e exclusão de produtos.
- Associação de produtos a categorias.
- Gestão de Categorias (CRUD Completo):
- Cadastro, listagem, edição e exclusão de categorias.
- Movimentação de Estoque:
- Registro de entradas e saídas de produtos.
- Atualização automática da quantidade em estoque de forma transacional, garantindo a integridade dos dados.
- Sistema de Autenticação:
- Registro de novos usuários com armazenamento seguro de senhas (hash).
- Login e Logout com gerenciamento de sessão.
- Proteção de rotas, permitindo acesso apenas a usuários autenticados.
vlucas/phpdotenv: Para gerenciamento de variáveis de ambiente.
O projeto foi construído seguindo o padrão arquitetural MVC (Model-View-Controller) para garantir a separação de responsabilidades, facilitar a manutenção e a escalabilidade do código.
A estrutura de diretórios principal é:
/
├── config/ # Arquivos de configuração (lêem as variáveis de ambiente)
├── public/ # Ponto de entrada da aplicação (index.php)
├── src/ # Coração da aplicação (código PHP)
│ ├── Controller/
│ ├── Core/
│ └── Model/
├── views/ # Arquivos de template (HTML com PHP)
├── vendor/ # Dependências gerenciadas pelo Composer
├── .env # (Local, não versionado) Credenciais e senhas
├── .env.example # (Versionado) Template para o arquivo .env
├── .gitignore # Arquivos e pastas a serem ignorados pelo Git
└── composer.json # Definição do projeto e dependências
Siga os passos abaixo para configurar e executar o projeto em seu ambiente local.
- PHP 8.1 ou superior
- Composer
- PostgreSQL
- Git
-
Clone o repositório:
git clone [https://github.com/seu-usuario/sistema-controle-estoque.git](https://github.com/seu-usuario/sistema-controle-estoque.git) cd sistema-controle-estoque -
Instale as dependências do PHP:
composer install
-
Configure o Banco de Dados:
- No seu cliente de banco de dados (DBeaver), crie um novo banco de dados chamado
controle_estoque. - Execute o script SQL abaixo para criar todas as tabelas necessárias:
-- Tabela de Usuários CREATE TABLE usuarios ( id SERIAL PRIMARY KEY, nome VARCHAR(255) NOT NULL, email VARCHAR(255) NOT NULL UNIQUE, senha VARCHAR(255) NOT NULL, data_criacao TIMESTAMP WITH TIME ZONE DEFAULT CURRENT_TIMESTAMP ); -- Tabela de Categorias CREATE TABLE categorias ( id SERIAL PRIMARY KEY, nome VARCHAR(100) NOT NULL UNIQUE, descricao TEXT ); -- Tabela de Produtos CREATE TABLE produtos ( id SERIAL PRIMARY KEY, categoria_id INTEGER, nome VARCHAR(255) NOT NULL, sku VARCHAR(50) UNIQUE, preco NUMERIC(10, 2) DEFAULT 0.00, quantidade INTEGER NOT NULL DEFAULT 0, FOREIGN KEY (categoria_id) REFERENCES categorias(id) ON DELETE SET NULL ); -- Tabela de Movimentações de Estoque CREATE TABLE movimentos_estoque ( id SERIAL PRIMARY KEY, produto_id INTEGER NOT NULL, tipo VARCHAR(10) NOT NULL CHECK (tipo IN ('entrada', 'saida')), quantidade INTEGER NOT NULL, data_movimento TIMESTAMP WITH TIME ZONE NOT NULL DEFAULT CURRENT_TIMESTAMP, FOREIGN KEY (produto_id) REFERENCES produtos(id) ON DELETE CASCADE ); -- Inserir uma categoria padrão INSERT INTO categorias (nome, descricao) VALUES ('Geral', 'Categoria padrão para produtos não classificados.');
- No seu cliente de banco de dados (DBeaver), crie um novo banco de dados chamado
-
Configure o Ambiente (
.env):- Este projeto usa um arquivo
.envpara gerenciar as variáveis de ambiente e credenciais. - Na raiz do projeto, copie o arquivo de exemplo:
cp .env.example .env
- Abra o arquivo
.envque você acabou de criar e preencha a sua senha do banco de dados na variávelDB_PASSWORD.
- Este projeto usa um arquivo
-
Inicie o Servidor:
- Abra o terminal na raiz do projeto.
- Execute o comando para iniciar o servidor embutido do PHP:
php -S localhost:8000 -t public/
-
Acesse a Aplicação:
- Abra seu navegador e acesse:
http://localhost:8000 - A primeira página que você verá é a de registro. Crie um usuário para começar a usar o sistema!
- Abra seu navegador e acesse:
Contribuições são muito bem-vindas! Sinta-se à vontade para abrir uma issue para relatar um bug ou sugerir uma melhoria, ou enviar um pull request com suas alterações.
Desenvolvido com 💛 por Angel Luz.
Se quiser conversar, colaborar ou oferecer uma oportunidade:
📬 E-mail: [email protected]
🐙 GitHub: @angelluzk
💼 LinkedIn: linkedin.com/in/angelitaluz
🗂️Website / Portfólio: meu_portfolio/