The crawler subdirectory was the only active project. Moving it to the repo root simplifies paths and removes the unnecessary nesting. The vqa/ and immoweb/ directories were legacy/unused and have been removed. Updated .drone.yml, .gitignore, .claude/ docs, and skills to reflect the new flat structure.
108 lines
3 KiB
Bash
Executable file
108 lines
3 KiB
Bash
Executable file
#!/usr/bin/env bash
|
|
set -eu
|
|
|
|
# Real Estate Crawler - Development Server
|
|
# Starts all backend services + frontend + Caddy HTTPS proxy via Docker Compose.
|
|
#
|
|
# Usage:
|
|
# ./start.sh - Start all services (backend + frontend)
|
|
# ./start.sh --build - Rebuild images before starting
|
|
# ./start.sh --down - Stop and remove all containers
|
|
# ./start.sh --logs - Follow logs from all services
|
|
# ./start.sh --help - Show help
|
|
|
|
show_help() {
|
|
echo "Real Estate Crawler - Development Server"
|
|
echo ""
|
|
echo "Usage: ./start.sh [OPTIONS]"
|
|
echo ""
|
|
echo "Options:"
|
|
echo " (default) Start all services with Docker Compose"
|
|
echo " --build Rebuild Docker images before starting"
|
|
echo " --down Stop and remove all containers"
|
|
echo " --logs Follow logs from all services"
|
|
echo " --help Show this help message"
|
|
echo ""
|
|
echo "Services started:"
|
|
echo " redis Redis broker + cache (port 6379)"
|
|
echo " mysql MySQL database (port 3306)"
|
|
echo " app FastAPI backend (hot-reload) (port 5001)"
|
|
echo " celery Celery background worker"
|
|
echo " celery-beat Celery periodic scheduler"
|
|
echo " frontend Vite dev server (hot-reload) (port 5173)"
|
|
echo " caddy HTTPS reverse proxy (port 443)"
|
|
echo ""
|
|
echo "Environment variables:"
|
|
echo " DEV_HOST Hostname for HTTPS access (default: localhost)"
|
|
echo " Set this to your dev machine's hostname for OIDC auth."
|
|
echo ""
|
|
echo "Examples:"
|
|
echo " ./start.sh # Start everything"
|
|
echo " ./start.sh --build # Rebuild and start"
|
|
echo " DEV_HOST=devvm.local ./start.sh # Start with custom hostname"
|
|
}
|
|
|
|
get_compose_cmd() {
|
|
if command -v docker &> /dev/null; then
|
|
echo "docker compose"
|
|
elif command -v podman-compose &> /dev/null; then
|
|
echo "podman-compose"
|
|
else
|
|
echo "❌ Error: Neither docker nor podman-compose found." >&2
|
|
echo " Install Docker: https://docs.docker.com/get-docker/" >&2
|
|
exit 1
|
|
fi
|
|
}
|
|
|
|
start_docker() {
|
|
local build_flag=""
|
|
if [[ "${1:-}" == "--build" ]]; then
|
|
build_flag="--build"
|
|
fi
|
|
|
|
echo "Starting all services with Docker Compose..."
|
|
echo ""
|
|
|
|
local compose_cmd
|
|
compose_cmd=$(get_compose_cmd)
|
|
|
|
$compose_cmd up $build_flag
|
|
}
|
|
|
|
stop_docker() {
|
|
echo "Stopping all containers..."
|
|
local compose_cmd
|
|
compose_cmd=$(get_compose_cmd)
|
|
$compose_cmd down
|
|
}
|
|
|
|
show_logs() {
|
|
local compose_cmd
|
|
compose_cmd=$(get_compose_cmd)
|
|
$compose_cmd logs -f
|
|
}
|
|
|
|
# Parse arguments
|
|
case "${1:-}" in
|
|
--help|-h)
|
|
show_help
|
|
;;
|
|
--down)
|
|
stop_docker
|
|
;;
|
|
--logs)
|
|
show_logs
|
|
;;
|
|
--build)
|
|
start_docker --build
|
|
;;
|
|
"")
|
|
start_docker
|
|
;;
|
|
*)
|
|
echo "❌ Unknown option: $1"
|
|
echo ""
|
|
show_help
|
|
exit 1
|
|
;;
|
|
esac
|