skrueckenandCursor 4adfcdb95a Add tm_server with SQLite, Svelte UI, and task-master TUI sync.
Introduces the web backend (auth, RBAC, project tokens, revisions),
YouTrack-or-taskmaster backend choice in the TUI, and a first-pass
embedded Svelte UI. The frontend is functional but needs a major rework.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-10-27 22:23:11 +01:00

task-master

Offline-first Terminal-Taskmanager (tm) — Kanban-Board, Markdown-Tickets, Checklisten, Zeiterfassung und Reports. Gebaut mit Bubble Tea.

Demo

Demo wird aus demo.tape erzeugt (make demo). Ohne GIF lokal: siehe Demo aufnehmen.

Features

  • Projekte & Tickets lokal als JSON (kein Server) — Binary tm
  • Web-Server tm_server mit eingebettetem Svelte-UI, SQLite, Auth und Rechte pro Projekt
  • Board-Filter: All / Backlog / In Progress / Done
  • Tickets in $EDITOR bearbeiten (Markdown + Checklisten)
  • Timer, manuelle Zeitbuchungen, Zeiteinträge verwalten
  • Report mit Group-by (Ticket / Tag)
  • Undo / Redo über eine Command-History (TUI)
  • Vim-Style Keybindings (TUI)
  • YouTrack Pull/Push (manuell; Remote-URL, Token, Project-Key pro Projekt)
  • Server: Sync-Backend pro Projekt, Projekt-Tokens für die TUI, Ticket-Revisionen

Install

Voraussetzung: Go (siehe go.mod). Für tm_server zusätzlich Node.js (Frontend-Build).

git clone git@git.aloxdrim.de:skruecken/task-master.git
cd task-master
make install          # → $(go env GOPATH)/bin/tm
# oder nur bauen:
make build            # → ./bin/tm
make build-server     # Frontend + → ./bin/tm_server

Nutzung

tm                    # TUI starten
tm sync pull          # Issues von YouTrack holen
tm sync push          # lokale Änderungen nach YouTrack
tm sync pull -p inbox # anderes Projekt
tm version            # Build-Version (Git-Hash)
tm help

Web-Server (tm_server)

# Dev/Test gegen lokales tm_server (kein YouTrack): seedet Projekt „Test“ + Samples
make run-server-dev   # :8080, Data unter ./.dev-home, Login admin/admin

# Produktion / manuell:
export TM_ADMIN_USER=admin
export TM_ADMIN_PASSWORD='change-me'
export TASK_MASTER_SECRET='long-random-secret'   # verschlüsselt Remote-Tokens
./bin/tm_server -listen :8080

# JSON-Daten der TUI einmalig importieren:
./bin/tm_server import-json -owner admin

UI: http://localhost:8080 — Dashboard, Board, Report, Members, Settings (Tokens), Users (Admin), Ticket-Zeit & History.
Das Test-Environment (run-server-dev) spricht nur mit diesem Backend; YouTrack ist dort nicht verdrahtet.

Dev-Frontend (Vite, API-Proxy): cd web && npm run dev parallel zu tm_server.

Sandbox ohne echte Config/Daten:

make run-dev          # nutzt ./.dev-home
# oder:
TASK_MASTER_HOME=/tmp/tm-sandbox tm

Daten landen standardmäßig unter ~/.local/share/task-master, Config unter ~/.config/task-master.

Variable Wirkung
TASK_MASTER_HOME Basis für Config + Daten (Dev/Demo)
TASK_MASTER_DATA_DIR Nur Datenverzeichnis überschreiben

Keybindings (Auszug)

Taste Aktion
j/k Navigieren
n Neues Ticket/Projekt
e Ticket im Editor
s Status ändern
l Board-Filter
/ Suche
p/P Projekt / Ticket verschieben
e Ticket bzw. Projekt editieren (in Projektliste: YouTrack)
Y YouTrack-Menü: Pull / Push
t/T Timer / Zeit buchen
m Zeiteinträge
r Report
x/X Löschen / Force-Delete
u/U Undo / Redo
q Beenden

Checklisten im Preview: J/K + Space.

YouTrack

  1. p → Projekt wählen → e
  2. Remote-URL, Permanent Token und Project-Key setzen (gespeichert in projects/<id>/meta.json, Mode 0600)
  3. Lokal arbeiten (Anlegen/Edit/Status bleiben lokal)
  4. Y → Pull (Issues + Work Items) oder Push (Tickets + Zeiteinträge)
    CLI: tm sync pull / tm sync push

Zeit: lokale Einträge ohne externalId werden als YouTrack-Work-Items gepusht; remote Work Items landen lokal beim Pull.

Status-Mapping Richtung YouTrack: OPEN→Open, WIP→In Progress, DONE→Fixed (Workflow-Namen können projektspezifisch abweichen).

Entwicklung

make test
make build
make version

Demo aufnehmen

Die Walkthrough-Aufnahme steckt in demo.tape (VHS):

# einmalig: vhs + ttyd/ffmpeg (siehe VHS-Docs)
make demo             # schreibt demo.gif (+ demo.mp4)

Die Pipeline erzeugt das GIF ebenfalls und lädt es als Artifact hoch.

Lizenz

Privat / eigener Use — siehe Repository-Einstellungen auf Gitea.

S
Description
No description provided
Readme
525 KiB
Languages
Go 85.7%
Svelte 9.1%
CSS 2.7%
JavaScript 1.9%
Makefile 0.5%