- 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>
166 lines
5.8 KiB
Bash
Executable File
166 lines
5.8 KiB
Bash
Executable File
#!/bin/bash
|
|
#
|
|
# OrbiQuant IA - Start All Services
|
|
# Starts all required services for the trading platform
|
|
#
|
|
|
|
set -e
|
|
|
|
# Colors
|
|
RED='\033[0;31m'
|
|
GREEN='\033[0;32m'
|
|
YELLOW='\033[1;33m'
|
|
BLUE='\033[0;34m'
|
|
NC='\033[0m' # No Color
|
|
BOLD='\033[1m'
|
|
|
|
# Project root
|
|
PROJECT_ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
|
|
|
|
echo -e "${BOLD}"
|
|
echo "╔══════════════════════════════════════════════════════════╗"
|
|
echo "║ OrbiQuant IA - Service Launcher ║"
|
|
echo "╚══════════════════════════════════════════════════════════╝"
|
|
echo -e "${NC}"
|
|
|
|
# Function to check if a port is in use
|
|
check_port() {
|
|
local port=$1
|
|
if lsof -Pi :$port -sTCP:LISTEN -t >/dev/null 2>&1; then
|
|
return 0
|
|
else
|
|
return 1
|
|
fi
|
|
}
|
|
|
|
# Function to wait for a service
|
|
wait_for_service() {
|
|
local name=$1
|
|
local url=$2
|
|
local max_attempts=30
|
|
|
|
echo -ne "${BLUE}Waiting for $name...${NC}"
|
|
|
|
for i in $(seq 1 $max_attempts); do
|
|
if curl -s "$url" >/dev/null 2>&1; then
|
|
echo -e " ${GREEN}✓${NC}"
|
|
return 0
|
|
fi
|
|
echo -n "."
|
|
sleep 1
|
|
done
|
|
|
|
echo -e " ${RED}✗ (timeout)${NC}"
|
|
return 1
|
|
}
|
|
|
|
# Parse arguments
|
|
MODE=${1:-"dev"} # dev or docker
|
|
|
|
echo -e "${YELLOW}Mode: ${MODE}${NC}\n"
|
|
|
|
if [ "$MODE" == "docker" ]; then
|
|
# Docker Compose mode
|
|
echo -e "${BLUE}Starting services with Docker Compose...${NC}\n"
|
|
|
|
cd "$PROJECT_ROOT"
|
|
|
|
# Start infrastructure first
|
|
echo -e "${YELLOW}Starting infrastructure (PostgreSQL, Redis, Ollama)...${NC}"
|
|
docker-compose -f docker-compose.services.yml up -d postgres redis ollama
|
|
|
|
sleep 5
|
|
|
|
# Start Python services
|
|
echo -e "${YELLOW}Starting Python services...${NC}"
|
|
docker-compose -f docker-compose.services.yml up -d ml-engine llm-agent trading-agents
|
|
|
|
sleep 5
|
|
|
|
# Start Node.js services
|
|
echo -e "${YELLOW}Starting Node.js services...${NC}"
|
|
docker-compose -f docker-compose.services.yml up -d backend frontend
|
|
|
|
echo -e "\n${GREEN}All services started!${NC}"
|
|
docker-compose -f docker-compose.services.yml ps
|
|
|
|
else
|
|
# Development mode - separate terminals
|
|
echo -e "${BLUE}Development mode - Starting services in background...${NC}\n"
|
|
|
|
# Check if tmux is available
|
|
if command -v tmux &> /dev/null; then
|
|
SESSION="orbiquant"
|
|
|
|
# Kill existing session if any
|
|
tmux kill-session -t $SESSION 2>/dev/null || true
|
|
|
|
# Create new session
|
|
tmux new-session -d -s $SESSION -n "services"
|
|
|
|
# Window 1: Infrastructure
|
|
tmux send-keys -t $SESSION "cd $PROJECT_ROOT && docker-compose -f docker-compose.services.yml up postgres redis ollama" C-m
|
|
|
|
# Window 2: ML Engine
|
|
tmux new-window -t $SESSION -n "ml-engine"
|
|
tmux send-keys -t $SESSION "cd $PROJECT_ROOT/apps/ml-engine && source venv/bin/activate 2>/dev/null; pip install -r requirements.txt -q && uvicorn src.api.main:app --reload --port 8001" C-m
|
|
|
|
# Window 3: LLM Agent
|
|
tmux new-window -t $SESSION -n "llm-agent"
|
|
tmux send-keys -t $SESSION "cd $PROJECT_ROOT/apps/llm-agent && source venv/bin/activate 2>/dev/null; pip install -r requirements.txt -q && uvicorn src.main:app --reload --port 8003" C-m
|
|
|
|
# Window 4: Trading Agents
|
|
tmux new-window -t $SESSION -n "trading-agents"
|
|
tmux send-keys -t $SESSION "cd $PROJECT_ROOT/apps/trading-agents && source venv/bin/activate 2>/dev/null; pip install -r requirements.txt -q && uvicorn src.api.main:app --reload --port 8004" C-m
|
|
|
|
# Window 5: Backend
|
|
tmux new-window -t $SESSION -n "backend"
|
|
tmux send-keys -t $SESSION "cd $PROJECT_ROOT/apps/backend && npm install && npm run dev" C-m
|
|
|
|
# Window 6: Frontend
|
|
tmux new-window -t $SESSION -n "frontend"
|
|
tmux send-keys -t $SESSION "cd $PROJECT_ROOT/apps/frontend && npm install && npm run dev" C-m
|
|
|
|
echo -e "${GREEN}Services started in tmux session: $SESSION${NC}"
|
|
echo -e "${YELLOW}To attach: tmux attach -t $SESSION${NC}"
|
|
echo -e "${YELLOW}To switch windows: Ctrl+B then number (0-5)${NC}"
|
|
|
|
else
|
|
# No tmux - print manual instructions
|
|
echo -e "${YELLOW}tmux not found. Please start services manually:${NC}\n"
|
|
|
|
echo -e "${BOLD}Terminal 1 - Infrastructure:${NC}"
|
|
echo " docker-compose -f docker-compose.services.yml up postgres redis ollama"
|
|
|
|
echo -e "\n${BOLD}Terminal 2 - ML Engine:${NC}"
|
|
echo " cd apps/ml-engine && uvicorn src.api.main:app --reload --port 8001"
|
|
|
|
echo -e "\n${BOLD}Terminal 3 - LLM Agent:${NC}"
|
|
echo " cd apps/llm-agent && uvicorn src.main:app --reload --port 8003"
|
|
|
|
echo -e "\n${BOLD}Terminal 4 - Trading Agents:${NC}"
|
|
echo " cd apps/trading-agents && uvicorn src.api.main:app --reload --port 8004"
|
|
|
|
echo -e "\n${BOLD}Terminal 5 - Backend:${NC}"
|
|
echo " cd apps/backend && npm run dev"
|
|
|
|
echo -e "\n${BOLD}Terminal 6 - Frontend:${NC}"
|
|
echo " cd apps/frontend && npm run dev"
|
|
fi
|
|
fi
|
|
|
|
echo -e "\n${BOLD}Service URLs:${NC}"
|
|
echo " Frontend: http://localhost:5173"
|
|
echo " Backend API: http://localhost:3000"
|
|
echo " ML Engine: http://localhost:8001"
|
|
echo " LLM Agent: http://localhost:8003"
|
|
echo " Trading Agents: http://localhost:8004"
|
|
echo " Ollama: http://localhost:11434"
|
|
|
|
echo -e "\n${BOLD}Quick Commands:${NC}"
|
|
echo " Test integration: python scripts/test_integration.py"
|
|
echo " Pull Llama 3: docker exec orbiquant-ollama ollama pull llama3:8b"
|
|
echo " View logs: docker-compose -f docker-compose.services.yml logs -f [service]"
|
|
|
|
echo -e "\n${GREEN}Ready!${NC}"
|