Sistema completo de controle de estoque desenvolvido com Node.js + Express (backend), React + Material-UI (frontend) e MongoDB (banco de dados).
- 🚀 Início Rápido
- 🏗️ Arquitetura
- ✨ Funcionalidades
- 🛠️ Tecnologias
- 📦 Instalação
- 🔧 Configuração
- 🏃♂️ Como Executar
- 📖 Uso do Sistema
- 🔒 Autenticação
- 🌐 API Endpoints
- 🧪 Testes
- 📁 Estrutura do Projeto
- 🤝 Contribuição
- 📜 Licença
O sistema segue uma arquitetura client-server com os seguintes componentes:
# Clone o repositório
git clone https://github.com/HeitorLouzeiro/imperio_agua_estoque.git
cd imperio_agua_estoque
# Dê permissão de execução e execute o script
chmod +x start.sh
./start.sh
# Inicie os serviços
docker compose up -d
# Popule o banco com dados de exemplo
./start.sh seed
# Instale as dependências
./start.sh setup
# Execute em modo desenvolvimento
./start.sh start dev
┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐
│ Frontend │ │ Backend │ │ MongoDB │
│ (React) │◄──►│ (Node.js) │◄──►│ (Database) │
│ Port: 8080 │ │ Port: 5000 │ │ Port: 27017 │
└─────────────────┘ └─────────────────┘ └─────────────────┘
┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐
│ Frontend │ │ Backend │ │ MongoDB │
│ (React) │◄──►│ (Node.js) │◄──►│ (Database) │
│ Port: 3000 │ │ Port: 5000 │ │ Port: 27017 │
└─────────────────┘ └─────────────────┘ └─────────────────┘
- ✅ Cadastro e autenticação de usuários
- ✅ Níveis de acesso (Administrador/Funcionário)
- ✅ Perfil de usuário editável
- ✅ Controle de sessão com JWT
- ✅ CRUD completo de produtos
- ✅ Controle de estoque (quantidade disponível)
- ✅ Categorização por marca
- ✅ Preços e códigos únicos
- ✅ Sistema de busca e filtros
- ✅ Alertas de estoque baixo
- ✅ Registro de vendas
- ✅ Controle de quantidade vendida
- ✅ Histórico de vendas
- ✅ Relatórios e estatísticas
- ✅ Status de vendas (Concluída/Cancelada)
- ✅ Visão geral do sistema
- ✅ Gráficos de vendas
- ✅ Produtos mais vendidos
- ✅ Alertas de estoque
- ✅ Métricas em tempo real
- Node.js 18+ - Runtime JavaScript
- Express.js - Framework web
- MongoDB - Banco de dados NoSQL
- Mongoose - ODM para MongoDB
- JWT - Autenticação
- Bcrypt - Criptografia de senhas
- Swagger - Documentação da API
- Cors - Cross-Origin Resource Sharing
- React 18+ - Biblioteca para UI
- Material-UI (MUI) - Componentes visuais
- React Router - Roteamento
- React Hook Form - Gerenciamento de formulários
- Recharts - Gráficos e visualizações
- Axios - Cliente HTTP
- Docker - Containerização
- Docker Compose - Orquestração
- Nginx - Servidor web (produção)
- Docker e Docker Compose OU
- Node.js 18+ e MongoDB
# Verificar Node.js
node --version
# Verificar Docker
docker --version
docker compose version
# Verificar MongoDB (se local)
mongod --version
Serviço | Desenvolvimento | Docker | Descrição |
---|---|---|---|
Frontend | 3000 | 8080 | Interface do usuário |
Backend | 5000 | 5000 | API REST |
MongoDB | 27017 | 27017 | Banco de dados |
Swagger | 5000/api-docs | 5000/api-docs | Documentação da API |
# Banco de dados
MONGO_URI=mongodb://mongo:27017/imperio_agua
# Autenticação
JWT_SECRET=sua_chave_secreta_jwt_super_segura_aqui_123456789
# Servidor
PORT=5000
NODE_ENV=development
# API
REACT_APP_API_URL=http://localhost:5000/api
# Aplicação
REACT_APP_NAME=Império Água
REACT_APP_VERSION=1.0.0
O sistema inclui um script inteligente que detecta automaticamente o melhor modo de execução:
# Ajuda
./start.sh help
# Inicialização automática
./start.sh
# Força modo Docker
./start.sh start docker
# Força modo desenvolvimento
./start.sh start dev
# Build e inicialização
./start.sh start docker --build
# Status dos serviços
./start.sh status
# Parar serviços
./start.sh stop
# Reiniciar
./start.sh restart
# Popular banco de dados
./start.sh seed
# Ver logs
./start.sh logs [serviço]
# Construir imagens
docker compose build
# Iniciar serviços
docker compose up -d
# Ver logs
docker compose logs -f
# Parar serviços
docker compose down
# Backend
cd backend
npm install
npm start
# Frontend (em outro terminal)
cd frontend
npm install
npm start
- Frontend: http://localhost:3000
- API Backend: http://localhost:5000
- Documentação Swagger: http://localhost:5000/api-docs
- MongoDB: mongodb://localhost:27017/imperio_agua
- Frontend: http://localhost:8080
- API Backend: http://localhost:5000
- Documentação Swagger: http://localhost:5000/api-docs
- MongoDB: mongodb://localhost:27017/imperio_agua (interno do container)
Após executar ./start.sh seed
:
👤 Administrador
Email: [email protected]
Senha: admin123
👤 Funcionário
Email: [email protected]
Senha: func123
O sistema utiliza JWT (JSON Web Tokens) para autenticação:
Tipo | Permissões |
---|---|
Administrador | Acesso total ao sistema |
Funcionário | Visualização e vendas apenas |
- Públicas: Login, documentação
- Protegidas: Dashboard, produtos, vendas, usuários
- Admin: Gestão de usuários, configurações
POST /api/auth/login # Login
POST /api/auth/register # Registro
GET /api/auth/profile # Perfil do usuário
GET /api/users # Listar usuários
POST /api/users # Criar usuário
GET /api/users/:id # Buscar usuário
PUT /api/users/:id # Atualizar usuário
DELETE /api/users/:id # Excluir usuário
GET /api/products # Listar produtos
POST /api/products # Criar produto
GET /api/products/:id # Buscar produto
PUT /api/products/:id # Atualizar produto
DELETE /api/products/:id # Excluir produto
GET /api/sales # Listar vendas
POST /api/sales # Criar venda
GET /api/sales/:id # Buscar venda
PUT /api/sales/:id # Atualizar venda
DELETE /api/sales/:id # Cancelar venda
Para documentação completa, acesse: http://localhost:5000/api-docs
imperio_agua_estoque/
├── 📁 backend/ # API Node.js
│ ├── 📁 controllers/ # Controladores
│ ├── 📁 models/ # Modelos do banco
│ ├── 📁 routes/ # Rotas da API
│ ├── 📁 middlewares/ # Middlewares
│ ├── 📄 index.js # Servidor principal
│ └── 📄 package.json
├── 📁 frontend/ # Interface React
│ ├── 📁 src/
│ │ ├── 📁 components/ # Componentes reutilizáveis
│ │ ├── 📁 pages/ # Páginas da aplicação
│ │ ├── 📁 hooks/ # Custom hooks
│ │ ├── 📁 services/ # Serviços (API)
│ │ ├── 📁 contexts/ # Contextos React
│ │ └── 📁 utils/ # Utilitários
│ └── 📄 package.json
├── 📄 docker-compose.yml # Orquestração Docker
├── 📄 start.sh # Script de inicialização
└── 📄 README.md # Este arquivo
![]() Heitor Louzeiro 💻 Desenvolvedor |
![]() Marcos Amaral 💻 Desenvolvedor |
- Fork o projeto
- Crie uma branch para sua feature (
git checkout -b feature/AmazingFeature
) - Commit suas mudanças (
git commit -m 'Add some AmazingFeature'
) - Push para a branch (
git push origin feature/AmazingFeature
) - Abra um Pull Request
- ✅ Siga os padrões de código existentes
- ✅ Adicione testes para novas funcionalidades
- ✅ Atualize a documentação quando necessário
- ✅ Use commits semânticos
Este projeto está licenciado sob a Licença MIT - veja o arquivo LICENSE para detalhes.