Some checks failed
CI / Frontend Lint & Type Check (push) Has been cancelled
CI / Frontend Build (push) Has been cancelled
CI / Backend Lint (push) Has been cancelled
CI / Backend Tests (push) Has been cancelled
CI / Docker Build (push) Has been cancelled
CI / Security Scan (push) Has been cancelled
Deploy / Build & Push Images (push) Has been cancelled
Deploy / Deploy to Server (push) Has been cancelled
Deploy / Notify (push) Has been cancelled
NEW FILES: - deploy.sh: One-command setup script (installs deps, creates venv, init db) - start.sh: Quick start script (launches both backend & frontend) - backend/scripts/init_db.py: Database initialization with schema + seed data CHANGES: - README: Added one-command setup instructions - All scripts made executable SERVER DEPLOYMENT: 1. git pull 2. chmod +x deploy.sh && ./deploy.sh 3. ./start.sh (or use PM2/Docker) The init_db.py script: - Creates all database tables - Seeds basic TLD info (com, net, org, io, etc.) - Works with both SQLite and PostgreSQL
157 lines
3.8 KiB
Bash
Executable File
157 lines
3.8 KiB
Bash
Executable File
#!/bin/bash
|
|
#
|
|
# POUNCE Deployment Script
|
|
# Usage: ./deploy.sh [dev|prod]
|
|
#
|
|
|
|
set -e
|
|
|
|
MODE=${1:-dev}
|
|
echo "================================================"
|
|
echo " POUNCE Deployment - Mode: $MODE"
|
|
echo "================================================"
|
|
echo ""
|
|
|
|
# Colors
|
|
RED='\033[0;31m'
|
|
GREEN='\033[0;32m'
|
|
YELLOW='\033[1;33m'
|
|
NC='\033[0m' # No Color
|
|
|
|
# Functions
|
|
log_info() { echo -e "${GREEN}[INFO]${NC} $1"; }
|
|
log_warn() { echo -e "${YELLOW}[WARN]${NC} $1"; }
|
|
log_error() { echo -e "${RED}[ERROR]${NC} $1"; }
|
|
|
|
# ============================================
|
|
# 1. Check prerequisites
|
|
# ============================================
|
|
log_info "Checking prerequisites..."
|
|
|
|
if ! command -v python3 &> /dev/null; then
|
|
log_error "Python3 not found. Please install Python 3.10+"
|
|
exit 1
|
|
fi
|
|
|
|
if ! command -v node &> /dev/null; then
|
|
log_error "Node.js not found. Please install Node.js 18+"
|
|
exit 1
|
|
fi
|
|
|
|
if ! command -v npm &> /dev/null; then
|
|
log_error "npm not found. Please install npm"
|
|
exit 1
|
|
fi
|
|
|
|
log_info "Prerequisites OK!"
|
|
echo ""
|
|
|
|
# ============================================
|
|
# 2. Setup Backend
|
|
# ============================================
|
|
log_info "Setting up Backend..."
|
|
|
|
cd backend
|
|
|
|
# Create virtual environment if not exists
|
|
if [ ! -d "venv" ]; then
|
|
log_info "Creating Python virtual environment..."
|
|
python3 -m venv venv
|
|
fi
|
|
|
|
# Activate venv
|
|
source venv/bin/activate
|
|
|
|
# Install dependencies
|
|
log_info "Installing Python dependencies..."
|
|
pip install -q --upgrade pip
|
|
pip install -q -r requirements.txt
|
|
|
|
# Create .env if not exists
|
|
if [ ! -f ".env" ]; then
|
|
log_warn ".env file not found, copying from env.example..."
|
|
if [ -f "env.example" ]; then
|
|
cp env.example .env
|
|
log_warn "Please edit backend/.env with your settings!"
|
|
else
|
|
log_error "env.example not found!"
|
|
fi
|
|
fi
|
|
|
|
# Initialize database
|
|
log_info "Initializing database..."
|
|
python scripts/init_db.py
|
|
|
|
cd ..
|
|
log_info "Backend setup complete!"
|
|
echo ""
|
|
|
|
# ============================================
|
|
# 3. Setup Frontend
|
|
# ============================================
|
|
log_info "Setting up Frontend..."
|
|
|
|
cd frontend
|
|
|
|
# Install dependencies
|
|
log_info "Installing npm dependencies..."
|
|
npm install --silent
|
|
|
|
# Create .env.local if not exists
|
|
if [ ! -f ".env.local" ]; then
|
|
log_warn ".env.local not found, creating..."
|
|
echo "NEXT_PUBLIC_API_URL=http://localhost:8000" > .env.local
|
|
fi
|
|
|
|
# Build for production
|
|
if [ "$MODE" == "prod" ]; then
|
|
log_info "Building for production..."
|
|
npm run build
|
|
fi
|
|
|
|
cd ..
|
|
log_info "Frontend setup complete!"
|
|
echo ""
|
|
|
|
# ============================================
|
|
# 4. Start Services
|
|
# ============================================
|
|
if [ "$MODE" == "dev" ]; then
|
|
echo ""
|
|
echo "================================================"
|
|
echo " Development Setup Complete!"
|
|
echo "================================================"
|
|
echo ""
|
|
echo "To start the services:"
|
|
echo ""
|
|
echo " Backend (Terminal 1):"
|
|
echo " cd backend && source venv/bin/activate"
|
|
echo " uvicorn app.main:app --reload --host 0.0.0.0 --port 8000"
|
|
echo ""
|
|
echo " Frontend (Terminal 2):"
|
|
echo " cd frontend && npm run dev"
|
|
echo ""
|
|
echo "Then open: http://localhost:3000"
|
|
echo ""
|
|
else
|
|
echo ""
|
|
echo "================================================"
|
|
echo " Production Setup Complete!"
|
|
echo "================================================"
|
|
echo ""
|
|
echo "To start with PM2:"
|
|
echo ""
|
|
echo " # Backend"
|
|
echo " cd backend && source venv/bin/activate"
|
|
echo " pm2 start 'uvicorn app.main:app --host 0.0.0.0 --port 8000' --name pounce-backend"
|
|
echo ""
|
|
echo " # Frontend"
|
|
echo " cd frontend"
|
|
echo " pm2 start 'npm start' --name pounce-frontend"
|
|
echo ""
|
|
echo "Or use Docker:"
|
|
echo " docker-compose up -d"
|
|
echo ""
|
|
fi
|
|
|