# Variables
IMAGE_NAME = flat-stack-presejpacky
PORT = 3000

.PHONY: help install build dev start clean lint docker-build docker-run docker-stop

help:
	@echo "Available commands:"
	@echo "  make install        - Install project dependencies"
	@echo "  make dev            - Run the application locally in development mode (Vite)"
	@echo "  make build          - Build the production assets"
	@echo "  make start          - Run the production build locally using Express"
	@echo "  make clean          - Remove build artifacts (dist/ and server.js)"
	@echo "  make lint           - Run TypeScript type checks"
	@echo "  make docker-build   - Build the Docker image"
	@echo "  make docker-run     - Run the Docker image locally on port $(PORT)"
	@echo "  make docker-stop    - Stop and remove the Docker container"

install:
	docker run -it --rm -v $$(pwd):/app -v /app/node_modules -w /app node:24-alpine npm install

dev:
	docker run -it --rm -p $(PORT):$(PORT) -v $$(pwd):/app -v /app/node_modules -w /app node:24-alpine sh -c "npm install && npm run dev"

build:
	docker run -it --rm -v $$(pwd):/app -v /app/node_modules -w /app node:24-alpine sh -c "npm install && npm run build"

start:
	docker run -it --rm -p $(PORT):$(PORT) -v $$(pwd):/app -v /app/node_modules -w /app node:24-alpine sh -c "npm install && npm run start"

clean:
	docker run -it --rm -v $$(pwd):/app -w /app node:24-alpine npm run clean

lint:
	docker run -it --rm -v $$(pwd):/app -v /app/node_modules -w /app node:24-alpine sh -c "npm install && npm run lint"

docker-build:
	docker build -t $(IMAGE_NAME) .

docker-run:
	docker run -d -p $(PORT):$(PORT) --name $(IMAGE_NAME) $(IMAGE_NAME)
	@echo "Container is running at http://localhost:$(PORT)"

docker-stop:
	docker stop $(IMAGE_NAME) || true
	docker rm $(IMAGE_NAME) || true
