Add Makefile with convenient development commands

This commit is contained in:
2025-12-19 13:00:17 +11:00
parent 3936a80680
commit 4cc1a556ac

101
Makefile Normal file
View File

@@ -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