- Configure workspace Git repository with comprehensive .gitignore - Add Odoo as submodule for ERP reference code - Include documentation: SETUP.md, GIT-STRUCTURE.md - Add gitignore templates for projects (backend, frontend, database) - Structure supports independent repos per project/subproject level Workspace includes: - core/ - Reusable patterns, modules, orchestration system - projects/ - Active projects (erp-suite, gamilit, trading-platform, etc.) - knowledge-base/ - Reference code and patterns (includes Odoo submodule) - devtools/ - Development tools and templates - customers/ - Client implementations template 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
171 lines
5.5 KiB
Bash
Executable File
171 lines
5.5 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
# ============================================================================
|
|
# GAMILIT - Script de Inicio de Servidores de Desarrollo
|
|
# ============================================================================
|
|
# Este script inicia el Frontend (puerto 3005) y Backend (puerto 3006)
|
|
# en modo desarrollo.
|
|
#
|
|
# Uso:
|
|
# ./start-dev.sh # Inicia ambos servidores
|
|
# ./start-dev.sh frontend # Solo Frontend
|
|
# ./start-dev.sh backend # Solo Backend
|
|
# ============================================================================
|
|
|
|
set -e
|
|
|
|
# Colores para output
|
|
RED='\033[0;31m'
|
|
GREEN='\033[0;32m'
|
|
YELLOW='\033[1;33m'
|
|
BLUE='\033[0;34m'
|
|
NC='\033[0m' # No Color
|
|
|
|
# Directorio base del proyecto
|
|
PROJECT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
FRONTEND_DIR="$PROJECT_DIR/apps/frontend"
|
|
BACKEND_DIR="$PROJECT_DIR/apps/backend"
|
|
|
|
# Archivos PID
|
|
FRONTEND_PID_FILE="/tmp/gamilit-frontend.pid"
|
|
BACKEND_PID_FILE="/tmp/gamilit-backend.pid"
|
|
|
|
# Archivos de log
|
|
FRONTEND_LOG="/tmp/gamilit-frontend.log"
|
|
BACKEND_LOG="/tmp/gamilit-backend.log"
|
|
|
|
# Función para imprimir header
|
|
print_header() {
|
|
echo ""
|
|
echo -e "${BLUE}╔═══════════════════════════════════════════════════════════════╗${NC}"
|
|
echo -e "${BLUE}║${NC} ${BLUE}║${NC}"
|
|
echo -e "${BLUE}║${NC} ${GREEN}🚀 GAMILIT - Inicio de Servidores de Desarrollo${NC} ${BLUE}║${NC}"
|
|
echo -e "${BLUE}║${NC} ${BLUE}║${NC}"
|
|
echo -e "${BLUE}╚═══════════════════════════════════════════════════════════════╝${NC}"
|
|
echo ""
|
|
}
|
|
|
|
# Función para verificar si un puerto está en uso
|
|
check_port() {
|
|
local port=$1
|
|
if lsof -i:$port > /dev/null 2>&1; then
|
|
return 0 # Puerto en uso
|
|
else
|
|
return 1 # Puerto libre
|
|
fi
|
|
}
|
|
|
|
# Función para detener servidor existente
|
|
stop_existing_server() {
|
|
local name=$1
|
|
local pid_file=$2
|
|
local port=$3
|
|
|
|
if [ -f "$pid_file" ]; then
|
|
local pid=$(cat "$pid_file")
|
|
if ps -p $pid > /dev/null 2>&1; then
|
|
echo -e "${YELLOW}⚠️ Deteniendo $name existente (PID: $pid)...${NC}"
|
|
kill -9 $pid 2>/dev/null || true
|
|
rm -f "$pid_file"
|
|
fi
|
|
fi
|
|
|
|
# Verificar si hay proceso en el puerto
|
|
if check_port $port; then
|
|
echo -e "${YELLOW}⚠️ Puerto $port en uso, liberando...${NC}"
|
|
lsof -ti:$port | xargs kill -9 2>/dev/null || true
|
|
sleep 1
|
|
fi
|
|
}
|
|
|
|
# Función para iniciar Frontend
|
|
start_frontend() {
|
|
echo -e "${BLUE}📦 Iniciando Frontend (puerto 3005)...${NC}"
|
|
|
|
# Detener servidor existente
|
|
stop_existing_server "Frontend" "$FRONTEND_PID_FILE" 3005
|
|
|
|
# Iniciar servidor
|
|
cd "$FRONTEND_DIR"
|
|
npm run dev > "$FRONTEND_LOG" 2>&1 &
|
|
local pid=$!
|
|
echo $pid > "$FRONTEND_PID_FILE"
|
|
|
|
# Esperar a que inicie
|
|
sleep 5
|
|
|
|
# Verificar que esté corriendo
|
|
if ps -p $pid > /dev/null 2>&1; then
|
|
echo -e "${GREEN}✅ Frontend iniciado exitosamente${NC}"
|
|
echo -e " ${BLUE}➜${NC} Local: http://localhost:3005/"
|
|
echo -e " ${BLUE}➜${NC} PID: $pid"
|
|
echo -e " ${BLUE}➜${NC} Log: $FRONTEND_LOG"
|
|
return 0
|
|
else
|
|
echo -e "${RED}❌ Error al iniciar Frontend${NC}"
|
|
echo -e "${YELLOW}Ver logs en: $FRONTEND_LOG${NC}"
|
|
return 1
|
|
fi
|
|
}
|
|
|
|
# Función para iniciar Backend
|
|
start_backend() {
|
|
echo -e "${BLUE}📦 Iniciando Backend (puerto 3006)...${NC}"
|
|
|
|
# Detener servidor existente
|
|
stop_existing_server "Backend" "$BACKEND_PID_FILE" 3006
|
|
|
|
# Iniciar servidor
|
|
cd "$BACKEND_DIR"
|
|
npm run dev > "$BACKEND_LOG" 2>&1 &
|
|
local pid=$!
|
|
echo $pid > "$BACKEND_PID_FILE"
|
|
|
|
# Esperar a que inicie
|
|
sleep 8
|
|
|
|
# Verificar que esté corriendo
|
|
if ps -p $pid > /dev/null 2>&1; then
|
|
echo -e "${GREEN}✅ Backend iniciado exitosamente${NC}"
|
|
echo -e " ${BLUE}➜${NC} Server: http://localhost:3006"
|
|
echo -e " ${BLUE}➜${NC} Docs: http://localhost:3006/api/docs"
|
|
echo -e " ${BLUE}➜${NC} PID: $pid"
|
|
echo -e " ${BLUE}➜${NC} Log: $BACKEND_LOG"
|
|
return 0
|
|
else
|
|
echo -e "${RED}❌ Error al iniciar Backend${NC}"
|
|
echo -e "${YELLOW}Ver logs en: $BACKEND_LOG${NC}"
|
|
return 1
|
|
fi
|
|
}
|
|
|
|
# Main
|
|
print_header
|
|
|
|
case "${1:-all}" in
|
|
frontend)
|
|
start_frontend
|
|
;;
|
|
backend)
|
|
start_backend
|
|
;;
|
|
all|*)
|
|
start_backend
|
|
echo ""
|
|
start_frontend
|
|
;;
|
|
esac
|
|
|
|
echo ""
|
|
echo -e "${GREEN}═══════════════════════════════════════════════════════════════${NC}"
|
|
echo -e "${GREEN}✅ Servidores iniciados${NC}"
|
|
echo ""
|
|
echo -e "${YELLOW}Para detener los servidores:${NC}"
|
|
echo -e " ./stop-dev.sh"
|
|
echo ""
|
|
echo -e "${YELLOW}Para ver logs en tiempo real:${NC}"
|
|
echo -e " tail -f $FRONTEND_LOG # Frontend"
|
|
echo -e " tail -f $BACKEND_LOG # Backend"
|
|
echo -e "${GREEN}═══════════════════════════════════════════════════════════════${NC}"
|
|
echo ""
|