managarten/apps/todo/docs/TASK_METADATA.md
Till-JS 00dadc97d1 docs(todo): add task metadata reference documentation
Document all available task properties including scheduling, priority,
recurrence (RFC 5545 RRULE), subtasks, labels, and metadata fields.
Includes examples and notes on current QuickAdd implementation status.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-09 13:04:39 +01:00

6.2 KiB

Task Metadata Reference

Dieses Dokument beschreibt alle verfügbaren Metadaten, die einer Aufgabe (Task) zugewiesen werden können.

Haupt-Eigenschaften

Feld Typ Pflicht Beschreibung
title string Ja Titel der Aufgabe
description string | null Nein Detaillierte Beschreibung
projectId string | null Nein ID des zugehörigen Projekts
parentTaskId string | null Nein ID der übergeordneten Aufgabe (für verschachtelte Tasks)

Zeitplanung

Feld Typ Beschreibung
dueDate Date | string | null Fälligkeitsdatum
dueTime string | null Fälligkeitszeit im Format HH:mm
startDate Date | string | null Startdatum der Aufgabe

Beispiel

{
  dueDate: "2024-12-15T00:00:00.000Z",
  dueTime: "14:30",
  startDate: "2024-12-10T00:00:00.000Z"
}

Priorität & Status

Priorität (priority)

Wert Beschreibung Farbe
low Niedrige Priorität Grün (#22c55e)
medium Mittlere Priorität Gelb (#eab308)
high Hohe Priorität Orange (#f97316)
urgent Dringend Rot (#ef4444)

Status (status)

Wert Beschreibung
pending Ausstehend
in_progress In Bearbeitung
completed Abgeschlossen
cancelled Abgebrochen

Completion

Feld Typ Beschreibung
isCompleted boolean Erledigt-Flag
completedAt Date | string | null Zeitpunkt der Erledigung

Wiederholung (Recurrence)

Wiederkehrende Aufgaben werden mit dem RFC 5545 RRULE-Standard definiert.

Feld Typ Beschreibung
recurrenceRule string | null RFC 5545 RRULE String
recurrenceEndDate Date | string | null Enddatum der Wiederholung
lastOccurrence Date | string | null Datum der letzten Ausführung

RRULE Beispiele

Muster RRULE
Täglich FREQ=DAILY
Wöchentlich FREQ=WEEKLY
Jeden Montag und Mittwoch FREQ=WEEKLY;BYDAY=MO,WE
Monatlich am 15. FREQ=MONTHLY;BYMONTHDAY=15
Jährlich FREQ=YEARLY
Alle 2 Wochen FREQ=WEEKLY;INTERVAL=2

Kanban-Board

Feld Typ Beschreibung
columnId string | null ID der Kanban-Spalte
columnOrder number Position innerhalb der Spalte

Subtasks (Unteraufgaben)

Subtasks sind Checklisten-Einträge innerhalb einer Aufgabe.

Feld Typ Beschreibung
subtasks Subtask[] | null Array von Unteraufgaben

Subtask-Struktur

interface Subtask {
  id: string;           // Eindeutige ID
  title: string;        // Titel der Unteraufgabe
  isCompleted: boolean; // Erledigt-Status
  completedAt?: string; // Erledigungszeitpunkt
  order: number;        // Reihenfolge
}

Beispiel

{
  subtasks: [
    { id: "1", title: "Design erstellen", isCompleted: true, order: 0 },
    { id: "2", title: "Code implementieren", isCompleted: false, order: 1 },
    { id: "3", title: "Tests schreiben", isCompleted: false, order: 2 }
  ]
}

Labels (Tags)

Labels ermöglichen die Kategorisierung von Aufgaben.

Feld Typ Beschreibung
labels Label[] Array von zugewiesenen Labels

Label-Struktur

interface Label {
  id: string;    // Eindeutige ID
  name: string;  // Label-Name
  color: string; // Hex-Farbcode (z.B. "#8b5cf6")
}

Zusätzliche Metadaten

Das metadata-Objekt enthält erweiterte Informationen.

Feld Typ Beschreibung
metadata.notes string Zusätzliche Notizen
metadata.attachments string[] URLs zu Dateianhängen
metadata.linkedCalendarEventId string | null ID eines verknüpften Kalender-Events

Beispiel

{
  metadata: {
    notes: "Wichtige Hinweise zur Aufgabe...",
    attachments: [
      "https://storage.example.com/file1.pdf",
      "https://storage.example.com/image.png"
    ],
    linkedCalendarEventId: "cal-event-123"
  }
}

Sortierung

Feld Typ Beschreibung
order number Sortierreihenfolge innerhalb der Liste

Timestamps

Feld Typ Beschreibung
createdAt Date | string Erstellungszeitpunkt
updatedAt Date | string Letzte Aktualisierung

Vollständiges Beispiel

const task: Task = {
  id: "task-uuid-123",
  userId: "user-uuid-456",

  // Haupt-Eigenschaften
  title: "Website-Redesign abschließen",
  description: "Alle Seiten auf das neue Design umstellen",
  projectId: "project-uuid-789",
  parentTaskId: null,

  // Zeitplanung
  dueDate: "2024-12-20T00:00:00.000Z",
  dueTime: "17:00",
  startDate: "2024-12-15T00:00:00.000Z",

  // Priorität & Status
  priority: "high",
  status: "in_progress",
  isCompleted: false,
  completedAt: null,

  // Sortierung
  order: 0,

  // Kanban
  columnId: "col-in-progress",
  columnOrder: 2,

  // Wiederholung
  recurrenceRule: null,
  recurrenceEndDate: null,
  lastOccurrence: null,

  // Subtasks
  subtasks: [
    { id: "sub-1", title: "Homepage", isCompleted: true, order: 0 },
    { id: "sub-2", title: "About-Seite", isCompleted: false, order: 1 }
  ],

  // Labels
  labels: [
    { id: "label-1", name: "Design", color: "#8b5cf6" },
    { id: "label-2", name: "Wichtig", color: "#ef4444" }
  ],

  // Metadaten
  metadata: {
    notes: "Design-Specs sind im Anhang",
    attachments: ["https://storage.example.com/design-specs.pdf"],
    linkedCalendarEventId: "cal-123"
  },

  // Timestamps
  createdAt: "2024-12-01T10:00:00.000Z",
  updatedAt: "2024-12-10T14:30:00.000Z"
};

UI-Implementierung

Im QuickAdd implementiert

  • title - Eingabefeld
  • dueDate - Datum-Picker (Heute, Morgen, In 3 Tagen, Nächste Woche)
  • priority - Priorität-Picker (Niedrig, Mittel, Hoch, Dringend)
  • projectId - Projekt-Picker

Noch nicht im QuickAdd

  • Labels
  • Erinnerungen/Reminders
  • Wiederholung (Recurrence)
  • Subtasks
  • Beschreibung
  • Startdatum
  • Uhrzeit