Backend Node.js para sincronização de pedidos entre dispositivos diferentes.
- 📡 Tempo Real: WebSocket com Socket.io
- 🔄 Sincronização: Entre dispositivos diferentes
- 💾 Persistência: Armazenamento em memória (pronto para database)
- 🛡️ Segurança: CORS, Helmet, Compression
- 📋 API REST: Endpoints completos para pedidos e mesas
# Entrar na pasta do backend
cd backend
# Instalar dependências
npm install
# Rodar em desenvolvimento
npm run dev
# Ou rodar em produção
npm start| Método | Endpoint | Descrição |
|---|---|---|
GET |
/api/orders |
Listar todos os pedidos |
GET |
/api/orders/:id |
Buscar pedido específico |
POST |
/api/orders |
Criar novo pedido |
PATCH |
/api/orders/:id/status |
Atualizar status |
DELETE |
/api/orders/:id |
Cancelar pedido |
GET |
/api/orders/stats/today |
Estatísticas do dia |
| Método | Endpoint | Descrição |
|---|---|---|
GET |
/api/tables/:tableNumber/orders |
Pedidos da mesa |
GET |
/api/tables/:tableNumber/status |
Status da mesa |
POST |
/api/tables/:tableNumber/orders |
Criar pedido para mesa |
GET |
/api/tables/summary |
Resumo de todas as mesas |
// Novo pedido criado
socket.on('order-created', (data) => {
console.log('Novo pedido:', data.order);
});
// Status de pedido atualizado
socket.on('order-status-updated', (data) => {
console.log('Status alterado:', data.status);
});
// Pedido cancelado
socket.on('order-cancelled', (data) => {
console.log('Pedido cancelado:', data.orderId);
});
// Status de mesa atualizado
socket.on('table-status-updated', (data) => {
console.log('Mesa alterada:', data.tableNumber);
});// Entrar em sala específica
socket.emit('join-room', 'admin'); // ou 'table-01'
// Teste de conectividade
socket.emit('ping');curl http://localhost:3002/healthcurl -X POST http://localhost:3002/api/orders \
-H "Content-Type: application/json" \
-d '{
"items": [
{"id": "mojito", "name": "Mojito", "quantity": 2, "price": 15.90}
],
"tableNumber": "01",
"customerName": "João"
}'curl http://localhost:3002/api/ordersCrie um arquivo .env:
PORT=3002
NODE_ENV=development- Porta: Altere
PORTno.env - CORS: Edite
cors.originemserver.js - Database: Substitua
OrderRepository.jspor integração real
backend/
├── controllers/ # Controladores da API
│ ├── orderController.js # Endpoints de pedidos
│ └── tableController.js # Endpoints de mesas
├── models/ # Modelos de dados
│ ├── Order.js # Classe Order
│ └── OrderRepository.js # Repositório em memória
├── server.js # Servidor principal
├── package.json # Dependências
└── README.md # Este arquivo
npm install socket.io-clientimport io from 'socket.io-client';
const socket = io('http://localhost:3002');
// Escutar eventos
socket.on('order-created', (data) => {
// Atualizar UI com novo pedido
});// Criar pedido
const response = await fetch('http://localhost:3002/api/orders', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify(orderData)
});- Conecte seu repositório GitHub
- Configure:
- Build Command:
npm install - Start Command:
npm start - Environment: Node.js
- Build Command:
- Deploy automático! 🎉
FROM node:18-alpine
WORKDIR /app
COPY package*.json ./
RUN npm install --production
COPY . .
EXPOSE 3002
CMD ["npm", "start"]O servidor gera logs detalhados:
🚀 ===================================
🍹 Cocktail Manager Backend iniciado!
🌐 Servidor rodando na porta: 3002
📡 Socket.io configurado para tempo real
🔗 Health check: http://localhost:3002/health
🧪 Teste: http://localhost:3002/api/test
🚀 ===================================
- Database Real: PostgreSQL, MongoDB, MySQL
- Autenticação: JWT, OAuth2
- Rate Limiting: Prevenir spam
- Logs Estruturados: Winston, Morgan
- Testes: Jest, Supertest
- CI/CD: GitHub Actions
# Verificar processo na porta 3002
lsof -ti:3002
# Matar processo
kill -9 $(lsof -ti:3002)Adicione sua URL no cors.origin em server.js:
cors: {
origin: ["http://localhost:3001", "https://meudominio.com"]
}- ✅ API REST: Completa
- ✅ WebSocket: Funcionando
- ✅ Modelos: Compatíveis
- ⏳ Database: Em memória (pronto para migração)
- ⏳ Autenticação: Básica
Pronto para produção com database real! 🚀