.PHONY: help setup-system deploy-backend deploy-frontend deploy-all \
        status logs logs-backend logs-indexer logs-telegram \
        remote-stop remote-start remote-restart remote-rebuild-frontend \
        remote-restart-backend remote-restart-indexer

include .env
export

SCRIPTS_DIR := scripts
SSH_TARGET := root@$(TARGET_HOST)
SSH_TARGET_REMOTE := $(TARGET_USER)@$(TARGET_HOST)
REMOTE_REPO_DIR ?= /home/$(TARGET_USER)/tickets
REMOTE_SESSION_NAME ?= cyber-valley-dev

help:
	@echo "Simplified deployment for Cyber Valley Tickets"
	@echo ""
	@echo "  make setup-system   - One-time server setup (root/systemd/sudo/infra)"
	@echo "  make deploy-backend - Backend rsync + migrate + restart api/indexer/bot"
	@echo "  make deploy-frontend - Local frontend build + rsync dist"
	@echo "  make deploy-all     - Backend + frontend deploy"
	@echo "  make status         - Backend services status"
	@echo "  make logs           - Tail backend service logs"
	@echo ""
	@echo "Remote (launch.sh/tmux) workflow"
	@echo "  make remote-restart         - Full reset/reseed + production frontend build"
	@echo "  make remote-rebuild-frontend - Rebuild production frontend only"
	@echo "  make remote-restart-backend - Restart backend window in tmux session"
	@echo "  make remote-restart-indexer - Restart indexer window in tmux session"

setup-system:
	@bash $(SCRIPTS_DIR)/01-setup-system.sh

deploy-backend:
	@bash $(SCRIPTS_DIR)/04-deploy-backend.sh

deploy-frontend:
	@bash $(SCRIPTS_DIR)/05-deploy-frontend.sh

deploy-all: deploy-backend deploy-frontend

status:
	@ssh $(SSH_TARGET) "systemctl status tickets-backend tickets-indexer tickets-telegram --no-pager" || true

logs:
	@ssh $(SSH_TARGET) "journalctl -u tickets-backend -u tickets-indexer -u tickets-telegram -f"

logs-backend:
	@ssh $(SSH_TARGET) "journalctl -u tickets-backend -f"

logs-indexer:
	@ssh $(SSH_TARGET) "journalctl -u tickets-indexer -f"

logs-telegram:
	@ssh $(SSH_TARGET) "journalctl -u tickets-telegram -f"

# -----------------------------------------------------------------------------
# Remote (launch.sh) targets
#
# These are for the cyberia.my style workflow where we run `launch.sh` in a
# tmux session and serve `client/dist` via Caddy, rather than systemd services.
# -----------------------------------------------------------------------------

remote-stop:
	@ssh $(SSH_TARGET_REMOTE) "cd $(REMOTE_REPO_DIR) && ./launch.sh --stop"

remote-start:
	@ssh $(SSH_TARGET_REMOTE) "cd $(REMOTE_REPO_DIR) && ./launch.sh --production-frontend"

remote-restart:
	@ssh $(SSH_TARGET_REMOTE) "cd $(REMOTE_REPO_DIR) && ./launch.sh --stop || true && ./launch.sh --production-frontend"

remote-rebuild-frontend:
	@ssh $(SSH_TARGET_REMOTE) "cd $(REMOTE_REPO_DIR) && export PATH=\"

$$HOME/.local/bin:$$

HOME/.local/share/pnpm:$$PATH\" && make -C client build"

remote-restart-backend:
	@ssh $(SSH_TARGET_REMOTE) "cd $(REMOTE_REPO_DIR) && if tmux has-session -t \"$(REMOTE_SESSION_NAME)\" 2>/dev/null; then tmux send-keys -t \"$(REMOTE_SESSION_NAME):backend\" C-c; sleep 1; tmux send-keys -t \"$(REMOTE_SESSION_NAME):backend\" \"make -C backend/ run-server\" Enter; else echo \"tmux session '$(REMOTE_SESSION_NAME)' not found\"; exit 1; fi"

remote-restart-indexer:
	@ssh $(SSH_TARGET_REMOTE) "cd $(REMOTE_REPO_DIR) && if tmux has-session -t \"$(REMOTE_SESSION_NAME)\" 2>/dev/null; then tmux send-keys -t \"$(REMOTE_SESSION_NAME):indexer\" C-c; sleep 1; tmux send-keys -t \"$(REMOTE_SESSION_NAME):indexer\" \"make -C backend/ run-indexer\" Enter; else echo \"tmux session '$(REMOTE_SESSION_NAME)' not found\"; exit 1; fi"

Homonyms

cyber/Makefile
cyb/Makefile
cyberia/research/mimi/Makefile
cyberia/research/events/Makefile
cyberia/research/events/client/Makefile
cyberia/research/mimi/deploy/Makefile
cyberia/research/events/ethereum/Makefile
cyberia/research/events/backend/Makefile

Graph