.PHONY: help build up down logs shell test clean install dev prod restart status # Load environment variables include .env export help: ## Show this help message @echo "MCPMC Expert System - Available Commands:" @echo "" @grep -E '^[a-zA-Z_-]+:.*?## .*$$' $(MAKEFILE_LIST) | sort | awk 'BEGIN {FS = ":.*?## "}; {printf " \033[36m%-15s\033[0m %s\n", $$1, $$2}' # Environment Setup install: ## Install dependencies and setup environment @echo "Setting up MCPMC Expert System..." @if ! docker network ls | grep -q caddy; then \ echo "Creating caddy network..."; \ docker network create caddy; \ else \ echo "Caddy network already exists"; \ fi @echo "Building containers..." @docker compose build @echo "Setup complete!" # Development dev: ## Start development environment @echo "Starting development environment..." @MODE=development docker compose up -d @echo "Development environment started!" @echo "Frontend: https://$(DOMAIN)" @echo "Backend API: https://api.$(DOMAIN)" # Production prod: ## Start production environment @echo "Starting production environment..." @MODE=production docker compose up -d @echo "Production environment started!" # Container Management build: ## Build all containers @docker compose build up: ## Start all services @docker compose up -d down: ## Stop all services @docker compose down restart: ## Restart all services @docker compose restart stop: ## Stop all services @docker compose stop # Development Tools shell: ## Open shell in backend container @docker compose exec backend /bin/bash shell-frontend: ## Open shell in frontend container @docker compose exec frontend /bin/sh logs: ## Show logs from all services @docker compose logs -f logs-backend: ## Show backend logs @docker compose logs -f backend logs-frontend: ## Show frontend logs @docker compose logs -f frontend logs-worker: ## Show worker logs @docker compose logs -f procrastinate-worker # Database db-shell: ## Open database shell @docker compose exec db psql -U $(POSTGRES_USER) -d $(POSTGRES_DB) db-reset: ## Reset main database @docker compose stop backend @docker compose exec db psql -U $(POSTGRES_USER) -c "DROP DATABASE IF EXISTS $(POSTGRES_DB);" @docker compose exec db psql -U $(POSTGRES_USER) -c "CREATE DATABASE $(POSTGRES_DB);" @docker compose start backend # Testing test: ## Run backend tests @echo "Running tests..." @docker compose exec backend uv run pytest test-coverage: ## Run tests with coverage report @docker compose exec backend uv run pytest --cov=src --cov-report=html # Maintenance clean: ## Clean up containers and volumes @echo "Cleaning up..." @docker compose down -v @docker system prune -f @echo "Cleanup complete!" status: ## Show service status @echo "Service Status:" @docker compose ps @echo "" @echo "Networks:" @docker network ls | grep caddy || echo "No caddy network found" # Backup/Restore backup: ## Backup databases @echo "Creating backup..." @mkdir -p backups @docker compose exec db pg_dump -U $(POSTGRES_USER) $(POSTGRES_DB) > backups/main_$(shell date +%Y%m%d_%H%M%S).sql @docker compose exec procrastinate-db pg_dump -U $(PROCRASTINATE_USER) $(PROCRASTINATE_DB) > backups/queue_$(shell date +%Y%m%d_%H%M%S).sql @echo "Backup complete!" # Quick shortcuts d: dev ## Shortcut for dev p: prod ## Shortcut for prod l: logs ## Shortcut for logs s: status ## Shortcut for status