Artikelprojekt

Große Updates für Planify

Im März habe ich darüber geschrieben, warum ich Planify gebaut habe, obwohl es bessere Apps gibt. Ich habe mit diesem Satz geendet: „Das Refactoring kommt.“

Es kam. Und es wurde viel größer als ein Refactoring.

Das Ziel hat sich nicht geändert

Planify gibt es aus einem einzigen Grund: um die Planungsgewohnheit zurückzuholen, die ich mit Stift und Notizbuch hatte. Jeden Abend den nächsten Tag planen. Jeden Samstag die Woche durchgehen. Auf Papier hat es funktioniert. Als alles auf den Laptop wanderte, ist es zerfallen.

Was ich will, ist ein einziger Ort, an den diese Gewohnheit passt:

  • die Aufgaben, die ich erledigen muss,
  • der Kalender, in dem sie tatsächlich stattfinden,
  • die Notizen, die sie erklären,
  • und die Zeit, die ich wirklich damit verbracht habe.

Für die meisten Leute sind das heute vier Apps: Linear oder Todoist, Google Calendar, Notion und ein Timer. Jeder Wechsel zwischen ihnen ist Reibung, und genau diese Reibung hat mein Notizbuch-System überhaupt erst zerstört.

Planify will keine dieser Apps schlagen. Es will die Lücken zwischen ihnen schließen, für eine einzige Person: mich.

Was seit v2 neu ist

Projekte

Aufgaben leben jetzt in Projekten mit Start- und Zieldatum. Jedes Projekt hat sein eigenes Board und eine Seitenleiste mit seinem Fortschritt, der darauf erfassten Zeit und den verbleibenden Tagen.

Ein Projekt-Board in Planify mit seiner Fortschrittsleiste

Ein Board, das man auf einen Blick liest

„My tasks“ ist ein Kanban über alle Projekte hinweg. Priorität, Tags und Fälligkeitsdatum sind Chips, die du direkt auf der Karte bearbeiten kannst. Überfällige Aufgaben erscheinen rot, damit sie sich nicht mehr verstecken.

Das My-tasks-Board im Dunkelmodus

Auch der Dunkelmodus hat echte Aufmerksamkeit bekommen. Dasselbe Board, dieselben Chips, nichts wirkt ausgewaschen.

Dasselbe Projekt-Board im Dunkelmodus

Notizen, Sessions und Verknüpfungen

  • Notizen: Seiten im Notion-Stil, so tief verschachtelt, wie ich will (Semester > Kurs > Kapitel), mit LaTeX, Tabellen, Code, Toggles und Titelbildern. Der Editor ist Plate.
  • Zeiterfassung: Drück ▶ bei einer beliebigen Aufgabe, und in der Titelleiste läuft ein Timer (in den Screenshots siehst du „Draft the launch…“). Die Seite /time zeigt die Woche nach Projekten.
  • Verknüpfungen: Eine Seite gehört zu einem Projekt, eine Aufgabe verweist auf die Seite, aus der sie stammt, und ein Termin kann Zeit für eine Aufgabe blocken. Alles ist verbunden, nichts wird kopiert.
  • Google Calendar und Google Tasks: Synchronisation in beide Richtungen, mit einem Webhook in Produktion.

Unter der Haube

Ich bin von Cloudflare Workers zu Vercel + Supabase umgezogen. Der kostenlose Workers-Plan begrenzt die CPU auf 10 ms pro Request, und eine Next.js-App überschreitet das leicht. Postgres läuft über Prisma, Dateien über Supabase Storage, und ein täglicher Cron verschickt Erinnerungen.

Die drei Funktionen, die ich am meisten wollte

Das sind die, die Planify von „einem Board und einem Kalender“ zu einem echten Planer machen.

1. Zieh eine Aufgabe in deinen Tag

Die Seitenleiste des Kalenders hat jetzt eine Liste To plan: jede offene Aufgabe, für die noch keine Zeit geblockt ist. Zieh eine in den Kalender, und sie wird zu einem Zeitblock, der mit dieser Aufgabe verknüpft ist. Lässt du sie stattdessen auf einem Tag fallen, wird die Aufgabe an diesem Tag fällig.

„Reply to Ana“ wird aus To plan auf Donnerstag 14:00 gezogen

Das ist Time Blocking, so wie Sunsama oder Akiflow es machen. Die Verbindung zwischen einer Aufgabe und ihrem Block gab es schon; was fehlte, war die Geste.

2. Tipp es so, wie du es sagen würdest

Ctrl K versteht jetzt natürliches Englisch und Französisch:

text
réunion mardi 17h #website !urgent
Dentist tomorrow 2:30pm for 45 min
Standup every weekday 9h30-9h45

Es liest Datum, Uhrzeit, Dauer, Projekt, Tags, Priorität und Wiederholung und zeigt dir, was es verstanden hat, bevor du Enter drückst.

Die Schnelleingabe liest „réunion mardi 17h #website !urgent“

Eine Uhrzeit allein erzeugt einen Termin. Füg ein #projekt oder eine !priorität hinzu, und es wird eine Aufgabe, deren Zeitblock schon im Kalender steht.

Das war der Teil, der am meisten Spaß gemacht hat: keine Bibliothek, etwa 300 Zeilen und eine Testdatei. Französisch hat erstaunlich viele Arten, „morgen um 5“ zu sagen.

3. Wiederholungen

Ein echter Kalender braucht wiederkehrende Termine. Jeden Tag, jeden Werktag, jede Woche, alle zwei Wochen, jeden Monat, jedes Jahr, mit optionalem Enddatum.

Das Repeat-Menü im Dialog für neue Termine

Du kannst ein einzelnes Vorkommen oder die ganze Serie bearbeiten. Du kannst eines, die folgenden oder alle löschen. Ziehst du ein Vorkommen, wird nur dieses verschoben.

Auch Aufgaben wiederholen sich: Erledige „Miete zahlen“, und das „Miete zahlen“ für den nächsten Monat taucht von selbst auf.

Was ehrlich gesagt werden muss

  • Diese drei Funktionen liegen auf einem Branch. Sie gehen live, sobald meine Produktionsumgebung bereit ist.
  • Der Google-Sync ist durch Tests abgedeckt, aber den kompletten Ablauf mit einem echten Konto habe ich noch nicht durchgespielt. Das kommt als Nächstes.
  • Drag and Drop braucht vorerst eine Maus.

Wie es weitergeht

  1. Den Google-Sync mit einem echten Konto validieren.
  2. Meinen Tag planen: morgens Aufgaben auswählen, gewarnt werden, wenn der Tag überladen ist, und abends geplante mit tatsächlicher Zeit vergleichen. Planify hat beide Zahlen schon.
  3. Push-Benachrichtigungen über eine PWA: der erste Schritt in Richtung Mobil.

Dieselbe Regel wie beim letzten Mal: ausliefern, nutzen, kaputtmachen, reparieren. Und von vorn.

Kommentare

Melde dich mit GitHub an, um mitzudiskutieren.

Leave comment