Zurück zur Startseite
Projekt
Aktive Entwicklung

Self-Engine

Ein persönliches Produktivitätssystem für bewusstes Arbeiten — Zeiterfassung, Projekte und Aufgaben, Finanzen, Kalender und Gewohnheiten in einer Offline-First-Plattform, als Web-, Mobile- und Desktop-App.

3

Apps — Web, Mobile, Desktop

6

geteilte Packages

29

synchronisierte Tabellen

51

Datenbank-Migrationen

~1.100

Tests

34

AI-Capabilities
Warum es das gibt

Zeiterfassungs-Tools wissen nicht, was eine Stunde wert ist. Finanz-Apps wissen nicht, woher das Geld kommt. Kalender zeigen, was geplant war — nie, was wirklich passiert ist. Jedes Tool, das ich ausprobiert habe, behandelte Arbeit, Geld, Zeit und Gewohnheiten als getrennte Welten — die Verbindungen dazwischen existierten nur in meinem Kopf.

Self-Engine verbindet diese Domänen in einem System: Eine erfasste Stunde kennt ihr Projekt, ihren Stundensatz und ihren Platz im Kalender. Und weil das Leben nicht pausiert, wenn die Verbindung wegbricht, ist alles offline-first gebaut — jede Funktion läuft ohne Netz, auf jedem Gerät, und synchronisiert sich, sobald du wieder online bist.

Architektur

Offline-first — wirklich

Jede App schreibt zuerst in eine lokale SQLite-Datenbank; ein Schreibvorgang wartet nie auf die Cloud. PowerSync stellt die Änderung in eine Warteschlange und lädt sie geordnet zu Supabase hoch, wo Postgres mit Row-Level-Security auf jeder Tabelle die einzige Quelle der Wahrheit bleibt. Entfernte Änderungen fließen über nutzerbezogene Replikations-Buckets zurück in die lokale Datenbank, und die UI aktualisiert sich über Live-Queries — manuelle Cache-Invalidierung gibt es nirgends.

Die Domäne lebt in einem geteilten Package: 29 synchronisierte Tabellen, Zod-Schemas und typisierte Collections, die Web und Mobile identisch konsumieren. Geschäftsregeln sind pure Funktionen — Guards leiten Fakten ab („dieser Zeiteintrag ist bereits bezahlt“), Workflows machen daraus Entscheidungen: ausführen, bestätigen, auswählen oder blockieren. Dieselbe Regel schützt einen Tap in der Mobile-App, einen Klick im Web und einen AI-Tool-Aufruf.

Identität ist ein einzelnes Clerk-JWT für beide Datenpfade: PowerSync validiert es für die Replikation, und die Row-Level-Security von Postgres erzwingt es bei jeder Query. Die Desktop-App ist eine Electron-Shell um die Web-App — gleiche lokale Datenbank, plus Tray-Timer, Quick Capture und signierte Auto-Updates.

App UI

React / React Native

Local SQLite

jeder Write landet zuerst hier

PowerSync

geordneter Upload · Buckets pro Nutzer

Supabase Postgres

Quelle der Wahrheit · Row-Level-Security

Ein Blick hinein
Web — Dashboard
Web — Dashboard
Web — Kalender & Zeiterfassung
Web — Kalender & Zeiterfassung
Mobile — Today
Mobile — Today
Mobile — Gewohnheiten
Mobile — Gewohnheiten
Ein Assistent mit Leitplanken

Ein eingebauter AI-Assistent stellt 34 typisierte Capabilities über alle Domänen bereit. Er arbeitet pull-first: Das Modell bekommt Zähler und Hinweise statt Nutzerdaten und muss über typisierte Read-Tools nachfragen. Schreibzugriffe folgen prepare → approve → execute — eine Vorschau aus Live-Daten, eine einmalige, an die exakte Eingabe gebundene Freigabe, und dann dieselbe geteilte Domain-Mutation, die auch ein Button-Klick auslösen würde. Rate-Limits, Kosten-Tracking und Zero-Data-Retention-Routing werden serverseitig erzwungen.

Pull-first-Kontext
Einmal-Freigaben
Zero Data Retention
Teuer bezahlte Erkenntnisse

Den Identity-Provider im laufenden Betrieb tauschen

Jede User-ID von Supabase Auth zu Clerk zu migrieren hieß: alle Row-Level-Security-Policies in einer einzigen Migration neu schreiben und zwei unabhängige Datenpfade auf ein JWT umstellen — ohne eine einzige Offline-Queue zu verlieren.

Bidirektionaler Kalender-Sync auf Offline-Basis

Das Schwierige am Google-Calendar-Sync ist nicht die API, sondern Identität: Deterministische Event-IDs machen Creates idempotent, ETags fangen parallele Änderungen ab, abgelaufene Sync-Tokens lösen einen vollständigen Resync aus, und die Zuordnung wiederkehrender Termin-Instanzen verhindert Duplikate.

Offline-Privatsphäre ist mehr als Verfügbarkeit

Eine lokale Datenbank, die den Logout überlebt, ist ein Risiko. Die Mobile-App prüft vor dem Start, wem die lokalen Daten gehören — und löscht sie, wenn der angemeldete Account nicht passt.

Features

Zeiterfassung

Projekte, Ordner, mehrere Timer, Pomodoro, Stundensätze und Gehalts-Metadaten — jede Stunde kennt ihren Kontext.

Aufgaben & Projekte

Sechs Status, verschachtelte Unteraufgaben, Fällig- und Plandaten, Erinnerungen — verknüpft mit Timern und Zeiteinträgen.

Finanzen

Konten, einmalige und wiederkehrende Cashflows, Umbuchungen, Auszahlungen — verbunden mit der Arbeit dahinter.

Kalender

Lokale und Google-synchronisierte Termine, Soll-Ist-Vergleich und Timer direkt aus dem Termin heraus.

Gewohnheiten

Ziele pro Tag, Woche oder Monat, Streaks, Heatmaps und Sessions — verwoben mit Arbeit und Zeit im selben System.

AI-Assistent

Fragt, bevor er handelt: typisierte Capabilities, Vorschauen aus Live-Daten und explizite Freigabe für jeden Schreibzugriff.

Gebaut mit
TypeScript
React
TanStack Start
TanStack DB
Expo
Electron
Bun
Turborepo
SQLite
PowerSync
Supabase
Clerk
Zod
Mantine
Vitest
Open Source

Self-Engine ist während der frühen Entwicklung noch closed source. Der Plan ist, es später zu öffnen — weil gute Tools zugänglich und gemeinschaftlich sein sollten.

Für Updates auf GitHub folgen