workspace/projects/gamilit/start-dev.sh
rckrdmrd ea1879f4ad feat: Initial workspace structure with multi-level Git configuration
- 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>
2025-12-08 10:44:23 -06:00

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 ""