Files
dashboard/Makefile
Matthias Hochmeister 681acd8203 add now features
2026-03-01 11:50:27 +01:00

136 lines
4.1 KiB
Makefile

.PHONY: help dev prod stop logs logs-dev logs-prod rebuild rebuild-dev clean install test migrate sync-now sync-logs
# Default target
help:
@echo "Feuerwehr Dashboard - Available Commands"
@echo ""
@echo "Development:"
@echo " make dev - Start local development database"
@echo " make logs-dev - Show development logs"
@echo " make rebuild-dev - Rebuild development services"
@echo ""
@echo "Production:"
@echo " make prod - Deploy production environment (includes migrations)"
@echo " make migrate - Run database migrations against production DB"
@echo " make logs-prod - Show production logs"
@echo " make rebuild - Rebuild production services"
@echo ""
@echo "FDISK Sync:"
@echo " make sync-now - Trigger an immediate sync (runs in existing container)"
@echo " make sync-logs - Follow sync container logs"
@echo ""
@echo "General:"
@echo " make stop - Stop all services"
@echo " make clean - Remove all containers and volumes"
@echo " make install - Install dependencies for backend, frontend and sync"
@echo " make test - Run tests"
@echo ""
# Development
dev:
@echo "Starting local development database..."
docker compose -f docker-compose.dev.yml up -d
@echo ""
@echo "Database is ready at localhost:5432"
@echo "Database: feuerwehr_dev"
@echo "User: dev_user"
@echo "Password: dev_password"
logs-dev:
docker compose -f docker-compose.dev.yml logs -f
rebuild-dev:
docker compose -f docker-compose.dev.yml up -d --build --force-recreate
# Production
prod:
@if [ ! -f .env ]; then \
echo "Error: .env file not found!"; \
echo "Please copy .env.example to .env and configure it:"; \
echo " cp .env.example .env"; \
exit 1; \
fi
@echo "Starting production deployment..."
docker compose -f docker-compose.yml up -d --build
@echo ""
@echo "Running database migrations..."
@$(MAKE) migrate
@echo ""
@echo "Production services are running!"
migrate:
@if [ ! -f .env ]; then \
echo "Error: .env file not found! Run 'cp .env.example .env' first."; \
exit 1; \
fi
@echo "Waiting for database to be ready..."
@until docker compose -f docker-compose.yml exec -T postgres \
pg_isready -U "$${POSTGRES_USER:-prod_user}" -d "$${POSTGRES_DB:-feuerwehr_prod}" \
> /dev/null 2>&1; do \
printf '.'; sleep 2; \
done
@echo ""
@echo "Running migrations..."
docker compose -f docker-compose.yml exec -T backend npm run migrate
@echo "Migrations complete!"
logs-prod:
docker compose -f docker-compose.yml logs -f
logs:
@$(MAKE) logs-prod
rebuild:
docker compose -f docker-compose.yml up -d --build --force-recreate
# FDISK Sync
sync-now:
@echo "Triggering immediate FDISK sync..."
docker compose -f docker-compose.yml exec -T fdisk-sync kill -USR1 1 2>/dev/null || \
docker compose -f docker-compose.yml restart fdisk-sync
@echo "Sync triggered. Follow with: make sync-logs"
sync-logs:
docker compose -f docker-compose.yml logs -f fdisk-sync
# General commands
stop:
@echo "Stopping all services..."
docker compose -f docker-compose.yml down 2>/dev/null || true
docker compose -f docker-compose.dev.yml down 2>/dev/null || true
@echo "All services stopped"
clean:
@echo "Warning: This will remove all containers, volumes, and images!"
@read -p "Are you sure? [y/N] " -n 1 -r; \
echo; \
if [ "$$REPLY" = "y" ] || [ "$$REPLY" = "Y" ]; then \
docker compose -f docker-compose.yml down -v 2>/dev/null || true; \
docker compose -f docker-compose.dev.yml down -v 2>/dev/null || true; \
docker images | grep feuerwehr | awk '{print $$3}' | xargs docker rmi -f 2>/dev/null || true; \
echo "Cleanup complete!"; \
else \
echo "Cleanup cancelled"; \
fi
# Install dependencies
install:
@echo "Installing backend dependencies..."
cd backend && npm install
@echo ""
@echo "Installing frontend dependencies..."
cd frontend && npm install
@echo ""
@echo "Installing sync dependencies..."
cd sync && npm install
@echo ""
@echo "Dependencies installed!"
# Run tests
test:
@echo "Running backend tests..."
cd backend && npm test
@echo ""
@echo "Running frontend tests..."
cd frontend && npm test