Files

100 lines
2.3 KiB
Bash
Raw Permalink Normal View History

#!/bin/bash
set -e
# Get script directory and project root
SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
PROJECT_ROOT="$( cd "$SCRIPT_DIR/.." && pwd )"
# Verify we're in the right directory
if [ ! -f "$PROJECT_ROOT/backend/go.mod" ] && [ ! -f "$PROJECT_ROOT/go.mod" ]; then
# Try current directory if script dir detection fails
if [ -f "backend/go.mod" ] || [ -f "go.mod" ]; then
PROJECT_ROOT="$(pwd)"
else
echo "Error: Could not find project root. Please run from explorer-monorepo directory."
exit 1
fi
fi
cd "$PROJECT_ROOT"
echo "Starting ChainID 138 Explorer Platform in development mode..."
echo "Project root: $PROJECT_ROOT"
# Check requirements first
echo "Checking requirements..."
if ! "$SCRIPT_DIR/check-requirements.sh"; then
echo "Please install missing requirements and try again."
exit 1
fi
echo ""
# Check if .env exists
if [ ! -f .env ]; then
echo "Warning: .env file not found. Creating from .env.example..."
if [ -f .env.example ]; then
cp .env.example .env
echo "Created .env from .env.example - please update with your configuration"
else
echo "Warning: .env.example not found. Using defaults."
fi
fi
# Start infrastructure
echo "Starting infrastructure services..."
docker-compose -f deployment/docker-compose.yml up -d postgres elasticsearch redis
# Wait for services
echo "Waiting for services to be ready..."
sleep 10
# Run migrations
echo "Running database migrations..."
cd backend
go run database/migrations/migrate.go || echo "Migration failed or already applied"
cd ..
# Start indexer in background
echo "Starting indexer..."
cd backend/indexer
go run main.go &
INDEXER_PID=$!
cd ../..
# Start API server in background
echo "Starting API server..."
cd backend/api/rest
go run main.go &
API_PID=$!
cd ../../..
# Start frontend
echo "Starting frontend..."
cd frontend
npm run dev &
FRONTEND_PID=$!
cd ..
echo "All services started!"
echo "Indexer PID: $INDEXER_PID"
echo "API PID: $API_PID"
echo "Frontend PID: $FRONTEND_PID"
echo ""
echo "Press Ctrl+C to stop all services"
# Wait for user interrupt
cleanup() {
echo ""
echo "Stopping services..."
kill $INDEXER_PID $API_PID $FRONTEND_PID 2>/dev/null || true
echo "Services stopped."
exit 0
}
trap cleanup INT TERM
# Wait for all background processes
wait