# Ubertask

## Model

```mermaid
classDiagram
    Dream "1" --> "*" Goal
    Goal "1" --> "*" Project
    Project "1" --> "*" Task
    TaskLibrary "1" o-- "*" TaskTemplates

    class TaskLevel {
        <<enumeration>>
        task
        project
        goal
        dream
    }

    class TaskStatus {
        <<enumeration>>
        active
        paused
        finished
        abandoned
        deferred
    }

    class TaskType {
        %% Idee: Filter task fields based on type
        <<enumeration>>
        SimpleTask
        ComplexTask

        %% Tasks that don't do anything but nudging
        Notify/Routine/Habit
    }

    class Task {
        %% - Specific – target a specific area for improvement.
        %% - Measurable – quantify or at least suggest an indicator of progress.
        %% - Assignable – specify who will do it.
        %% - Realistic – state what results can realistically be achieved, given available resources.
        %% - Time-related – specify when the result(s) can be achieved.
        UUID id
        String title
        String body

        Person assignee

        Date startDate
        Date endDate
        Date deferredUntil

        Duration estimatedTime
        Duration actualTime

        Boolean repeatable

        %% If predecessor == 1 -> Parent in a tree?
        Task parent
        List~Task~ predecessors
        List~Task~ children
        TaskType type

        %% Idee: Schutz vor zu viel von einem bestimmten task machen
        TaskWeight weight

        %% Idee: Wie hoch ist die persönliche Wahrscheinlichkeit diesen Task zu erledigen
        TaskProbability probability

        %% Idee: Komplexität je nach verfügbarer Brain Power, ggf zerlegen
        TaskComplexity complexity
    }


    class Team {
        Person teamMembers
    }
    class Person {
        name: String
    }

    class TaskLibrary {
        List~TaskTemplates~ templates
    }
    class TaskTemplates {
        %% Idee: sammle Default TaskTypes/Todo, zB einen Brief verschicken -> Brief drucken, Briefumschlag, Briefmarken, usw. Aber auch komplexere Themen denkbar:
    }

```

## Views

```mermaid
classDiagram
    class ProjectView {
        %% Shows a project overview
    }
    class TodayView {
        %% "Home" view that aggegates the most important content
        %% Shows todos and routines for the current day
    }
    class ScheduleView {
        %% View that allows scheduling
    }
    class TinderView {
        %% Helps prioritising tasks against each other
    }
    class CalendarView {

    }
    class TaskListView {

    }
    class FollowUpView {
        %% Show tasks that are delegated in some way and that have to be acted upon
    }
    class MindMapView {

    }
    class StrategyView {
        %% Show percentages (and something else?) for project goals, life goals, etc

    }
    class TimelineView {
        %% Generates a Gantt-Chart

    }
    class ReportingView {
        %% Reports current status, generates reports, invoices, etc.
    }
```
