From 4cc1a556acd44ca343d3d3229cbd32fb874c47c9 Mon Sep 17 00:00:00 2001 From: jessikitty Date: Fri, 19 Dec 2025 13:00:17 +1100 Subject: [PATCH] Add Makefile with convenient development commands --- Makefile | 101 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 101 insertions(+) create mode 100644 Makefile diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..b422930 --- /dev/null +++ b/Makefile @@ -0,0 +1,101 @@ +.PHONY: help setup start stop restart logs clean build test init-db + +# Colors for terminal output +GREEN := \033[0;32m +YELLOW := \033[0;33m +NC := \033[0m # No Color + +help: ## Show this help message + @echo '${GREEN}Family Hub - Available Commands${NC}' + @echo '' + @grep -E '^[a-zA-Z_-]+:.*?## .*$$' $(MAKEFILE_LIST) | sort | awk 'BEGIN {FS = ":.*?## "}; {printf " ${YELLOW}%-15s${NC} %s\n", $$1, $$2}' + @echo '' + +setup: ## Initial setup (copy .env.example to .env) + @echo "${GREEN}Setting up Family Hub...${NC}" + @if [ ! -f .env ]; then \ + cp .env.example .env; \ + echo "${YELLOW}Created .env file - please edit it with your SECRET_KEY${NC}"; \ + else \ + echo "${YELLOW}.env file already exists${NC}"; \ + fi + @if [ ! -f backend/.env ]; then \ + cp backend/.env.example backend/.env; \ + echo "${YELLOW}Created backend/.env file${NC}"; \ + fi + @echo "${GREEN}Setup complete!${NC}" + +start: ## Start all services + @echo "${GREEN}Starting Family Hub...${NC}" + docker-compose up -d + @echo "${GREEN}Services started!${NC}" + @echo "Frontend: http://localhost:5173" + @echo "Backend: http://localhost:8000" + @echo "API Docs: http://localhost:8000/docs" + +stop: ## Stop all services + @echo "${YELLOW}Stopping Family Hub...${NC}" + docker-compose down + @echo "${GREEN}Services stopped${NC}" + +restart: ## Restart all services + @echo "${YELLOW}Restarting Family Hub...${NC}" + docker-compose restart + @echo "${GREEN}Services restarted${NC}" + +build: ## Rebuild containers + @echo "${GREEN}Building containers...${NC}" + docker-compose build + @echo "${GREEN}Build complete${NC}" + +rebuild: ## Rebuild and restart containers + @echo "${GREEN}Rebuilding containers...${NC}" + docker-compose up -d --build + @echo "${GREEN}Containers rebuilt and started${NC}" + +logs: ## View logs (follow mode) + docker-compose logs -f + +logs-backend: ## View backend logs + docker-compose logs -f backend + +logs-frontend: ## View frontend logs + docker-compose logs -f frontend + +clean: ## Stop and remove all containers, volumes, and images + @echo "${YELLOW}Cleaning up Family Hub...${NC}" + docker-compose down -v + @echo "${GREEN}Cleanup complete${NC}" + +init-db: ## Initialize the database with family members + @echo "${GREEN}Initializing database...${NC}" + docker-compose exec backend python init_db.py + @echo "${GREEN}Database initialized with family member accounts${NC}" + @echo "${YELLOW}Default credentials: username=jess, password=changeme123${NC}" + +shell-backend: ## Open shell in backend container + docker-compose exec backend bash + +shell-frontend: ## Open shell in frontend container + docker-compose exec frontend sh + +test: ## Run tests + @echo "${GREEN}Running backend tests...${NC}" + docker-compose exec backend pytest + @echo "${GREEN}Running frontend tests...${NC}" + docker-compose exec frontend npm test + +status: ## Show container status + docker-compose ps + +dev-backend: ## Run backend locally (outside Docker) + cd backend && uvicorn app.main:app --reload + +dev-frontend: ## Run frontend locally (outside Docker) + cd frontend && npm run dev + +install-backend: ## Install backend dependencies locally + cd backend && pip install -r requirements.txt + +install-frontend: ## Install frontend dependencies locally + cd frontend && npm install