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 |
metadata.storyPoints |
number | null |
Storypoints (Fibonacci: 1, 2, 3, 5, 8, 13, 21) |
metadata.effectiveDuration |
EffectiveDuration | null |
Effektive Dauer der Aufgabe |
metadata.funRating |
number | null |
Spaß-Faktor (Skala 1-10) |
EffectiveDuration-Struktur
interface EffectiveDuration {
value: number; // Numerischer Wert
unit: DurationUnit; // 'minutes' | 'hours' | 'days'
}
type DurationUnit = 'minutes' | 'hours' | 'days';
Storypoints
Storypoints verwenden die Fibonacci-Sequenz zur Aufwandsschätzung:
| Wert |
Typischer Aufwand |
| 1 |
Sehr klein, wenige Minuten |
| 2 |
Klein, unter einer Stunde |
| 3 |
Mittel, ein paar Stunden |
| 5 |
Größer, halber Tag |
| 8 |
Groß, ganzer Tag |
| 13 |
Sehr groß, mehrere Tage |
| 21 |
Epic, aufteilen empfohlen |
Spaß-Faktor
Der Spaß-Faktor ist eine Skala von 1-10:
| Bereich |
Bedeutung |
Farbe |
| 1-3 |
Unangenehm |
Rot (#ef4444) |
| 4-6 |
Neutral |
Gelb (#eab308) |
| 7-10 |
Macht Spaß |
Grün (#22c55e) |
Beispiel
{
metadata: {
notes: "Wichtige Hinweise zur Aufgabe...",
attachments: [
"https://storage.example.com/file1.pdf",
"https://storage.example.com/image.png"
],
linkedCalendarEventId: "cal-event-123",
storyPoints: 5,
effectiveDuration: {
value: 2,
unit: "hours"
},
funRating: 7
}
}
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",
storyPoints: 8,
effectiveDuration: { value: 4, unit: "hours" },
funRating: 6
},
// 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
Im TaskEditModal implementiert
- Alle QuickAdd-Felder
description - Textarea
dueTime - Zeit-Picker
startDate - Datum-Picker
status - Select (Ausstehend, In Bearbeitung, Abgeschlossen, Abgebrochen)
labels - Multi-Select Dropdown
subtasks - Drag-and-Drop Liste
recurrenceRule - Select (Täglich, Wöchentlich, etc.)
metadata.notes - Textarea
metadata.storyPoints - Fibonacci-Buttons (1, 2, 3, 5, 8, 13, 21)
metadata.effectiveDuration - Quick-Select Chips + benutzerdefinierte Eingabe
metadata.funRating - 10-Punkte-Skala mit Farbverlauf
Noch nicht im QuickAdd
- Labels
- Erinnerungen/Reminders
- Wiederholung (Recurrence)
- Subtasks
- Beschreibung
- Startdatum
- Uhrzeit
- Storypoints
- Effektive Dauer
- Spaß-Faktor