diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..325ef6e --- /dev/null +++ b/Makefile @@ -0,0 +1,243 @@ +# Makefile for Medication Reminder App +# Acts as a wrapper for package.json scripts with organized targets + +.PHONY: help install clean build dev test lint deploy docker gitea k8s + +# Default target +.DEFAULT_GOAL := help + +# Colors for output +BLUE := \033[34m +GREEN := \033[32m +YELLOW := \033[33m +RED := \033[31m +RESET := \033[0m + +##@ General + +help: ## Display this help message + @echo "$(BLUE)Medication Reminder App - Available Commands$(RESET)" + @echo "" + @awk 'BEGIN {FS = ":.*##"} /^[a-zA-Z_0-9-]+:.*?##/ { printf " $(GREEN)%-20s$(RESET) %s\n", $$1, $$2 } /^##@/ { printf "\n$(YELLOW)%s$(RESET)\n", substr($$0, 5) } ' $(MAKEFILE_LIST) + +install: ## Install dependencies + @echo "$(BLUE)Installing dependencies...$(RESET)" + @bun install + +clean: ## Clean build artifacts and dependencies + @echo "$(BLUE)Cleaning up...$(RESET)" + @rm -rf node_modules dist build .cache + +##@ Development + +dev: ## Start development server + @echo "$(BLUE)Starting development server...$(RESET)" + @bun run dev + +build: ## Build the application + @echo "$(BLUE)Building application...$(RESET)" + @bun run build + +preview: ## Preview the built application + @echo "$(BLUE)Starting preview server...$(RESET)" + @bun run preview + +##@ Testing + +test: ## Run unit tests + @echo "$(BLUE)Running unit tests...$(RESET)" + @bun run test + +test-watch: ## Run unit tests in watch mode + @echo "$(BLUE)Running tests in watch mode...$(RESET)" + @bun run test:watch + +test-coverage: ## Run tests with coverage + @echo "$(BLUE)Running tests with coverage...$(RESET)" + @bun run test:coverage + +test-integration: ## Run integration tests + @echo "$(BLUE)Running integration tests...$(RESET)" + @bun run test:integration + +test-e2e: ## Run end-to-end tests + @echo "$(BLUE)Running e2e tests...$(RESET)" + @bun run test:e2e + +test-e2e-ui: ## Run e2e tests with UI + @echo "$(BLUE)Running e2e tests with UI...$(RESET)" + @bun run test:e2e:ui + +test-e2e-debug: ## Debug e2e tests + @echo "$(BLUE)Debugging e2e tests...$(RESET)" + @bun run test:e2e:debug + +test-e2e-report: ## Show e2e test report + @echo "$(BLUE)Showing e2e test report...$(RESET)" + @bun run test:e2e:report + +test-all: ## Run all tests (unit + integration + e2e) + @echo "$(BLUE)Running all tests...$(RESET)" + @bun run test:all + +##@ Code Quality + +lint: ## Run all linting checks + @echo "$(BLUE)Running linting checks...$(RESET)" + @bun run lint + +lint-fix: ## Fix linting issues + @echo "$(BLUE)Fixing linting issues...$(RESET)" + @bun run lint:fix + +lint-markdown: ## Lint markdown files + @echo "$(BLUE)Linting markdown files...$(RESET)" + @bun run lint:markdown + +lint-markdown-fix: ## Fix markdown linting issues + @echo "$(BLUE)Fixing markdown linting issues...$(RESET)" + @bun run lint:markdown:fix + +lint-docker: ## Lint Dockerfile + @echo "$(BLUE)Linting Dockerfile...$(RESET)" + @bun run lint:docker + +check-secrets: ## Check for secrets in code + @echo "$(BLUE)Checking for secrets...$(RESET)" + @bun run check:secrets + +check-editorconfig: ## Check EditorConfig compliance + @echo "$(BLUE)Checking EditorConfig compliance...$(RESET)" + @bun run check:editorconfig + +fix-editorconfig: ## Fix EditorConfig issues + @echo "$(BLUE)Fixing EditorConfig issues...$(RESET)" + @bun run fix:editorconfig + +pre-commit: ## Run pre-commit checks + @echo "$(BLUE)Running pre-commit checks...$(RESET)" + @bun run pre-commit + +##@ Setup & Deployment + +setup: ## Setup the project + @echo "$(BLUE)Setting up project...$(RESET)" + @bun run setup + +deploy: ## Deploy the application + @echo "$(BLUE)Deploying application...$(RESET)" + @bun run deploy + +validate-env: ## Validate environment configuration + @echo "$(BLUE)Validating environment...$(RESET)" + @bun run validate:env + +validate-deployment: ## Validate deployment + @echo "$(BLUE)Validating deployment...$(RESET)" + @bun run validate:deployment + +seed-production: ## Seed production database + @echo "$(BLUE)Seeding production database...$(RESET)" + @bun run seed:production + +##@ Kubernetes + +k8s-deploy: ## Deploy to Kubernetes + @echo "$(BLUE)Deploying to Kubernetes...$(RESET)" + @bun run deploy:k8s + +k8s-undeploy: ## Remove from Kubernetes + @echo "$(BLUE)Removing from Kubernetes...$(RESET)" + @bun run undeploy:k8s + +k8s-deploy-dry: ## Dry run Kubernetes deployment + @echo "$(BLUE)Dry run Kubernetes deployment...$(RESET)" + @bun run deploy:k8s --dry-run + +k8s-undeploy-dry: ## Dry run Kubernetes removal + @echo "$(BLUE)Dry run Kubernetes removal...$(RESET)" + @bun run undeploy:k8s --dry-run + +k8s-status: ## Show Kubernetes deployment status + @echo "$(BLUE)Showing Kubernetes status...$(RESET)" + @bun run deploy:k8s --status + +##@ Docker + +docker-setup: ## Setup Docker buildx + @echo "$(BLUE)Setting up Docker buildx...$(RESET)" + @bun run docker:setup + +docker-build: ## Build multi-platform Docker images + @echo "$(BLUE)Building multi-platform Docker images...$(RESET)" + @bun run docker:build + +docker-build-local: ## Build local Docker image + @echo "$(BLUE)Building local Docker image...$(RESET)" + @bun run docker:build-local + +docker-bake: ## Build with Docker Bake + @echo "$(BLUE)Building with Docker Bake...$(RESET)" + @bun run docker:bake + +docker-inspect: ## Inspect Docker buildx + @echo "$(BLUE)Inspecting Docker buildx...$(RESET)" + @bun run docker:inspect + +docker-cleanup: ## Cleanup Docker buildx + @echo "$(BLUE)Cleaning up Docker buildx...$(RESET)" + @bun run docker:cleanup + +##@ Gitea + +gitea-setup: ## Setup Gitea integration + @echo "$(BLUE)Setting up Gitea integration...$(RESET)" + @bun run gitea:setup + +gitea-build: ## Build multi-platform images for Gitea + @echo "$(BLUE)Building multi-platform images for Gitea...$(RESET)" + @bun run gitea:build + +gitea-build-local: ## Build local image for Gitea + @echo "$(BLUE)Building local image for Gitea...$(RESET)" + @bun run gitea:build-local + +gitea-build-staging: ## Build staging image for Gitea + @echo "$(BLUE)Building staging image for Gitea...$(RESET)" + @bun run gitea:build-staging + +gitea-build-prod: ## Build production image for Gitea + @echo "$(BLUE)Building production image for Gitea...$(RESET)" + @bun run gitea:build-prod + +gitea-test: ## Test Gitea integration + @echo "$(BLUE)Testing Gitea integration...$(RESET)" + @bun run gitea:test + +gitea-deploy: ## Deploy to Gitea + @echo "$(BLUE)Deploying to Gitea...$(RESET)" + @bun run gitea:deploy + +gitea-status: ## Show Gitea deployment status + @echo "$(BLUE)Showing Gitea status...$(RESET)" + @bun run gitea:status + +gitea-cleanup: ## Cleanup Gitea resources + @echo "$(BLUE)Cleaning up Gitea resources...$(RESET)" + @bun run gitea:cleanup + +##@ Quick Commands + +start: dev ## Alias for dev (start development server) + +build-and-test: build test ## Build and run tests + @echo "$(GREEN)Build and test completed!$(RESET)" + +full-check: lint test-all ## Run full code quality check + @echo "$(GREEN)Full check completed!$(RESET)" + +quick-deploy: build k8s-deploy ## Quick build and deploy to Kubernetes + @echo "$(GREEN)Quick deployment completed!$(RESET)" + +reset: clean install ## Reset project (clean and reinstall) + @echo "$(GREEN)Project reset completed!$(RESET)" diff --git a/README.md b/README.md index aa93a2b..d90b6b9 100644 --- a/README.md +++ b/README.md @@ -140,6 +140,46 @@ docker compose up -d couchdb VITE_COUCHDB_URL=http://localhost:5984 bun run dev ``` +### **Makefile Commands** + +For convenience, you can use the included Makefile which wraps all package.json scripts with organized categories: + +```bash +# Show all available commands +make help + +# Quick development commands +make start # Start development server +make build # Build the application +make test # Run unit tests + +# Testing commands +make test-all # Run all tests (unit + integration + e2e) +make test-e2e # Run end-to-end tests +make test-coverage # Run tests with coverage + +# Code quality +make lint # Run all linting checks +make pre-commit # Run pre-commit checks +make full-check # Run complete code quality check + +# Kubernetes deployment +make k8s-deploy # Deploy to Kubernetes +make k8s-undeploy # Remove from Kubernetes +make k8s-deploy-dry # Dry run deployment + +# Docker operations +make docker-build # Build Docker images +make docker-setup # Setup Docker buildx + +# Quick combinations +make build-and-test # Build and test +make quick-deploy # Build and deploy to K8s +make reset # Clean and reinstall +``` + +All Makefile targets are organized into logical categories (Development, Testing, Code Quality, Kubernetes, Docker, etc.) and provide colored output for better visibility. + ### **Code Quality** This project includes comprehensive code quality tools and pre-commit hooks. See [`docs/development/CODE_QUALITY.md`](docs/development/CODE_QUALITY.md) for detailed documentation.