.PHONY: install dev stop sync build prod logs down push pull install: cd backend && python3 -m venv .venv && .venv/bin/pip install -r requirements.txt cd frontend && npm install dev: @echo "Backend: http://localhost:8000 Frontend: http://localhost:5173" @cd backend && .venv/bin/uvicorn app.main:app --reload --port 8000 & @cd frontend && npx vite --port 5173 stop: -@pkill -f "uvicorn app.main:app" 2>/dev/null -@pkill -f "vite --port 5173" 2>/dev/null @echo "gestoppt." # Katalog holen und fehlende Teaser erzeugen (läuft im Betrieb täglich 4:30) sync: cd backend && .venv/bin/python -m app.sync build: cd frontend && npm run build # ── Produktion (auf dem Server ausführen, im Projektverzeichnis) ────────────── prod: docker compose up -d --build @echo "horror läuft: https://horror.marha.de" logs: docker compose logs -f down: docker compose down # ── Datenbank hin und her (lokal ausführen) ─────────────────────────────────── SERVER = root@178.104.67.87 REMOTE = /var/www/horror LOKAL = backend/horror.db # Eine laufende App schreibt weiter, während kopiert wird. Deshalb erst eine # in sich stimmige Kopie ziehen, statt die Datei direkt anzufassen. SICHERN = import sqlite3,sys; q=sqlite3.connect(sys.argv[1]); z=sqlite3.connect(sys.argv[2]); q.backup(z); z.close(); q.close() push: @echo "Überschreibt die Datenbank auf dem Server, auch die Vorschläge." backend/.venv/bin/python -c '$(SICHERN)' $(LOKAL) /tmp/horror-push.db ssh $(SERVER) 'mkdir -p $(REMOTE)/data && [ ! -f $(REMOTE)/data/horror.db ] || cp $(REMOTE)/data/horror.db $(REMOTE)/data/horror.db.bak' scp /tmp/horror-push.db $(SERVER):$(REMOTE)/data/horror.db @rm -f /tmp/horror-push.db @echo "Fertig. Die alte Datenbank liegt als data/horror.db.bak daneben." pull: @echo "Überschreibt deine lokale Datenbank." ssh $(SERVER) 'python3 -c "$(SICHERN)" $(REMOTE)/data/horror.db /tmp/horror-pull.db' @[ ! -f $(LOKAL) ] || cp $(LOKAL) $(LOKAL).bak scp $(SERVER):/tmp/horror-pull.db $(LOKAL) @ssh $(SERVER) 'rm -f /tmp/horror-pull.db' @echo "Fertig. Deine alte Datenbank liegt als $(LOKAL).bak daneben."