Skip to content

Latest commit

 

History

History
253 lines (188 loc) · 6.26 KB

File metadata and controls

253 lines (188 loc) · 6.26 KB

🚂 Cocktail Manager - Backend API

Sistema backend para gestão de pedidos de coquetéis em tempo real

🎯 Visão Geral

Backend Node.js + Express + Socket.io que fornece APIs REST e comunicação em tempo real para o sistema de pedidos de coquetéis. Desenvolvido para trabalhar com o frontend Next.js.

🌐 Demo Online

🛠️ Tecnologias

  • Node.js - Runtime JavaScript
  • Express.js - Framework web
  • Socket.io - WebSocket em tempo real
  • CORS - Cross-Origin Resource Sharing
  • Helmet - Segurança HTTP
  • Compression - Compressão de respostas

Quick Start

Instalação local:

# Clone o repositório
git clone https://github.com/Hanksx/Cocktail-Backend.git
cd Cocktail-Backend

# Instale as dependências
npm install

# Configure as variáveis de ambiente
cp .env.example .env

# Execute em modo desenvolvimento
npm run dev

# Execute em produção
npm start

Variáveis de ambiente:

# .env
PORT=3002
NODE_ENV=development
FRONTEND_URL=http://localhost:3000

# Para produção
NODE_ENV=production
PORT=3002
FRONTEND_URL=https://monkeybeer.pedetech.com.br
RAILWAY_STATIC_URL=https://cocktail-backend-production.up.railway.app

🔗 APIs Disponíveis

🏥 Health Check

GET /health

Retorna status do servidor e tempo de funcionamento.

🧪 Test Endpoint

GET /api/test

Endpoint de teste para verificar conectividade.

📋 Pedidos (Orders)

GET    /api/orders          # Listar todos os pedidos
POST   /api/orders          # Criar novo pedido
PUT    /api/orders/:id      # Atualizar pedido
DELETE /api/orders/:id      # Excluir pedido

🪑 Mesas (Tables)

GET    /api/tables          # Listar status das mesas
POST   /api/tables/:id      # Atualizar status da mesa

🔌 WebSocket (Socket.io)

Eventos disponíveis:

// Cliente conecta
io.on('connection', (socket) => {
  console.log('Cliente conectado:', socket.id);
});

// Novo pedido criado
socket.emit('newOrder', orderData);

// Pedido atualizado
socket.emit('orderUpdated', orderData);

// Status da mesa alterado
socket.emit('tableStatusChanged', tableData);

// Cliente desconecta
socket.on('disconnect', () => {
  console.log('Cliente desconectado');
});

Como usar no frontend:

import io from 'socket.io-client';

const socket = io('https://cocktail-backend-production.up.railway.app');

// Escutar novos pedidos
socket.on('newOrder', (order) => {
  console.log('Novo pedido:', order);
});

// Emitir pedido
socket.emit('createOrder', {
  mesa: 1,
  items: [{ name: 'Caipirinha', quantity: 2 }]
});

📁 Estrutura do Projeto

Cocktail-Backend/
├── 📄 server.js              # Servidor principal
├── 📄 package.json           # Dependências
├── 📁 controllers/           # Controladores das rotas
│   ├── orderController.js    # Lógica dos pedidos
│   └── tableController.js    # Lógica das mesas
├── 📁 models/               # Modelos de dados
│   ├── Order.js             # Modelo de pedido
│   └── OrderRepository.js   # Repositório de pedidos
├── 📄 railway.json          # Configuração Railway
├── 📄 Procfile              # Comando de start
└── 📄 README.md             # Documentação

🚂 Deploy no Railway

1. Configuração automática:

# O projeto já inclui:
# - railway.json (configuração)
# - Procfile (comando de start)
# - package.json (scripts)

2. Variáveis de ambiente no Railway:

NODE_ENV=production
PORT=3002
FRONTEND_URL=https://monkeybeer.pedetech.com.br

3. Deploy:

  1. Conecte repositório ao Railway
  2. Configure variáveis de ambiente
  3. Deploy automático a cada push

Documentação completa: RAILWAY-DEPLOY.md

🔧 Scripts Disponíveis

# Desenvolvimento
npm run dev        # Executa com nodemon
npm run start      # Executa em produção
npm test           # Executa testes (se houver)

# Instalação
npm install        # Instala dependências
./install.sh       # Script de instalação automatizada

🔒 Segurança e CORS

CORS configurado para:

  • https://monkeybeer.pedetech.com.br (Produção)
  • https://www.pedetech.com.br (Site principal)
  • http://localhost:3000 (Desenvolvimento)

Headers de segurança:

  • Helmet.js para security headers
  • CORS restritivo
  • Rate limiting (se implementado)

🐛 Troubleshooting

Problema: CORS error

Solução: Verificar se URL do frontend está na lista de origens permitidas em server.js.

Problema: Socket.io não conecta

Solução: Verificar se URL do backend está correta no frontend e se WebSocket está habilitado.

Problema: 500 Internal Server Error

Solução: Verificar logs do Railway ou console local para detalhes do erro.

Logs no Railway:

railway logs     # Ver logs em tempo real

📊 Monitoramento

Health Check:

  • URL: /health
  • Resposta: Status do servidor, uptime, timestamp

Métricas básicas:

  • Número de conexões WebSocket ativas
  • Total de pedidos processados
  • Status das mesas

🤝 Repositórios Relacionados

📄 Licença

Este projeto é uma adaptação do Cocktail-Manager original por Jo Gross.

  • Projeto original: GNU AGPL v3 com Common Clause
  • Esta adaptação: Mantém a mesma licença

📈 Status

Versão: 1.0.0
Status: ✅ Funcional em produção
Demo: https://cocktail-backend-production.up.railway.app
Uptime: Monitorado via Railway


🚀 Para começar rapidamente:

  1. npm install
  2. npm run dev
  3. Testar: http://localhost:3002/health
  4. Conectar frontend: Socket.io na porta 3002

Desenvolvido com ❤️ para sistema de pedidos em tempo real