dev.sh
This commit is contained in:
135
dev.sh
Executable file
135
dev.sh
Executable file
@@ -0,0 +1,135 @@
|
||||
#!/bin/bash
|
||||
|
||||
# ─────────────────────────────────────────────
|
||||
# MTCBD – Multi-Tenant Cloud Based Dashboard
|
||||
# Development Startup Script
|
||||
# ─────────────────────────────────────────────
|
||||
|
||||
PROJECT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||||
VENV_DIR="$PROJECT_DIR/.venv"
|
||||
BACKEND_DIR="$PROJECT_DIR/backend"
|
||||
FRONTEND_DIR="$PROJECT_DIR/frontend"
|
||||
|
||||
BACKEND_PID=""
|
||||
FRONTEND_SKIP=true # Frontend disabled by default, run manually when needed
|
||||
|
||||
# ── Colours ──────────────────────────────────
|
||||
GREEN='\033[0;32m'
|
||||
YELLOW='\033[1;33m'
|
||||
RED='\033[0;31m'
|
||||
CYAN='\033[0;36m'
|
||||
BLUE='\033[0;34m'
|
||||
NC='\033[0m'
|
||||
|
||||
# ── Cleanup on Ctrl+C / exit ─────────────────
|
||||
cleanup() {
|
||||
echo ""
|
||||
echo -e "${YELLOW} Shutting down servers...${NC}"
|
||||
[ -n "$BACKEND_PID" ] && kill "$BACKEND_PID" 2>/dev/null
|
||||
[ -n "$FRONTEND_PID" ] && kill "$FRONTEND_PID" 2>/dev/null
|
||||
wait 2>/dev/null
|
||||
echo -e "${GREEN} All servers stopped.${NC}"
|
||||
exit 0
|
||||
}
|
||||
trap cleanup INT TERM EXIT
|
||||
|
||||
# ── Banner ────────────────────────────────────
|
||||
echo -e "${CYAN}"
|
||||
echo " ███╗ ███╗████████╗ ██████╗██████╗ ██████╗ "
|
||||
echo " ████╗ ████║╚══██╔══╝██╔════╝██╔══██╗██╔══██╗"
|
||||
echo " ██╔████╔██║ ██║ ██║ ██████╔╝██║ ██║"
|
||||
echo " ██║╚██╔╝██║ ██║ ██║ ██╔══██╗██║ ██║"
|
||||
echo " ██║ ╚═╝ ██║ ██║ ╚██████╗██████╔╝██████╔╝"
|
||||
echo " ╚═╝ ╚═╝ ╚═╝ ╚═════╝╚═════╝ ╚═════╝ "
|
||||
echo -e " Multi-Tenant Cloud Based Dashboard${NC}"
|
||||
echo ""
|
||||
|
||||
# ════════════════════════════════════════════════
|
||||
# BACKEND SETUP
|
||||
# ════════════════════════════════════════════════
|
||||
|
||||
# ── 1. Check / Create Virtual Environment ────
|
||||
if [ ! -d "$VENV_DIR" ]; then
|
||||
echo -e "${YELLOW}[1/6] Creating virtual environment...${NC}"
|
||||
python3 -m venv "$VENV_DIR"
|
||||
echo -e "${GREEN} ✓ Virtual environment created${NC}"
|
||||
else
|
||||
echo -e "${GREEN}[1/6] Virtual environment found${NC}"
|
||||
fi
|
||||
|
||||
# ── 2. Activate Virtual Environment ──────────
|
||||
echo -e "${YELLOW}[2/6] Activating virtual environment...${NC}"
|
||||
source "$VENV_DIR/bin/activate"
|
||||
echo -e "${GREEN} ✓ Activated: $VIRTUAL_ENV${NC}"
|
||||
|
||||
# ── 3. Install Python Dependencies ───────────
|
||||
echo -e "${YELLOW}[3/6] Installing Python dependencies...${NC}"
|
||||
pip install --upgrade pip --quiet
|
||||
pip install -r "$PROJECT_DIR/requirements.txt" --quiet
|
||||
echo -e "${GREEN} ✓ Dependencies installed${NC}"
|
||||
|
||||
# ── 4. Check .env File ───────────────────────
|
||||
echo -e "${YELLOW}[4/6] Checking environment config...${NC}"
|
||||
if [ ! -f "$PROJECT_DIR/.env" ]; then
|
||||
echo -e "${RED} ⚠ No .env file found!${NC}"
|
||||
if [ -f "$PROJECT_DIR/.env.example" ]; then
|
||||
cp "$PROJECT_DIR/.env.example" "$PROJECT_DIR/.env"
|
||||
echo -e "${YELLOW} ⚠ .env created from .env.example – fill in your secrets.${NC}"
|
||||
else
|
||||
echo -e "${RED} ✗ No .env.example either. Please create .env manually.${NC}"
|
||||
fi
|
||||
else
|
||||
echo -e "${GREEN} ✓ .env file found${NC}"
|
||||
fi
|
||||
|
||||
# ── 5. Django Setup ───────────────────────────
|
||||
echo -e "${YELLOW}[5/6] Running Django setup...${NC}"
|
||||
if [ -d "$BACKEND_DIR" ]; then
|
||||
(
|
||||
cd "$BACKEND_DIR"
|
||||
python manage.py collectstatic --noinput --quiet 2>/dev/null || true
|
||||
python manage.py migrate --run-syncdb 2>/dev/null \
|
||||
|| echo -e "${YELLOW} ⚠ Migrations skipped (DB may not be configured yet)${NC}"
|
||||
)
|
||||
echo -e "${GREEN} ✓ Django ready${NC}"
|
||||
else
|
||||
echo -e "${RED} ✗ backend/ directory not found${NC}"
|
||||
fi
|
||||
|
||||
# ════════════════════════════════════════════════
|
||||
# FRONTEND SETUP (SKIPPED)
|
||||
# ════════════════════════════════════════════════
|
||||
# Frontend is not started automatically. To run it manually:
|
||||
# cd frontend && npm run dev
|
||||
# FRONTEND_SKIP is set to true above to skip frontend launch.
|
||||
|
||||
# ════════════════════════════════════════════════
|
||||
# LAUNCH BOTH SERVERS
|
||||
# ════════════════════════════════════════════════
|
||||
|
||||
echo ""
|
||||
echo -e "${GREEN}════════════════════════════════════════════════════${NC}"
|
||||
echo -e "${GREEN} Starting MTCBD Development Servers ${NC}"
|
||||
echo -e "${GREEN} ${NC}"
|
||||
echo -e "${GREEN} Backend → http://127.0.0.1:8000 ${NC}"
|
||||
echo -e "${YELLOW} Frontend → (not started, run manually: cd frontend && npm run dev)${NC}"
|
||||
echo -e "${GREEN} ${NC}"
|
||||
echo -e "${YELLOW} Press Ctrl+C to stop all servers ${NC}"
|
||||
echo -e "${GREEN}════════════════════════════════════════════════════${NC}"
|
||||
echo ""
|
||||
|
||||
# ── Start Backend ─────────────────────────────
|
||||
(
|
||||
source "$VENV_DIR/bin/activate"
|
||||
cd "$BACKEND_DIR"
|
||||
python manage.py runserver 2>&1 | while IFS= read -r line; do
|
||||
echo -e "${GREEN}[BACKEND] ${NC} $line"
|
||||
done
|
||||
) &
|
||||
BACKEND_PID=$!
|
||||
|
||||
# ── Start Frontend ────────────────────────────
|
||||
# Skipped - start manually when needed
|
||||
|
||||
# ── Wait (keeps script alive until Ctrl+C) ────
|
||||
wait
|
||||
Reference in New Issue
Block a user