Skip to content

Repository files navigation

kiumu

kiumu ist ein gamifizierter Habit-Tracker, der erledigte Gewohnheiten in ausgebbare Punkte für selbst gewählte Ziele verwandelt. Die App macht Fortschritt sofort sichtbar und bleibt bewusst straffrei: Ausgelassene Tage ziehen keine Punkte ab und setzen keinen Ziel-Fortschritt zurück.

Das Projekt wird als echte Web-App mit späterer React-Native-App entwickelt. Es ist zugleich ein Portfolio-Projekt und ein bewusstes Lernprojekt für den Wiedereinstieg in die Frontend-Entwicklung: Produktentscheidungen, technische Trade-offs und die Entwicklungshistorie sind deshalb ebenso nachvollziehbar wie der Code.

Aktueller Stand der interaktiven Habit Box

Live-Demo

preview.kiumu.app · Habit Box direkt öffnen

Die Demo ist öffentlich erreichbar und verwendet gemeinsame Seed-/Demo-Daten aus Supabase. Check-offs werden dauerhaft gespeichert; bis Auth existiert, gehören diese Daten keinem persönlichen Nutzerkonto.

Was bereits funktioniert

Die interaktive Habit Box bildet den ersten vollständigen UI-Vertical-Slice:

  • Gewohnheiten für den aktuellen Tag abhaken,
  • Check-offs in PostgreSQL speichern und nach einem Reload wieder lesen,
  • Fünf-Tage-Verlauf und abgeleitete Statistiken anzeigen,
  • direktes visuelles Feedback durch Count-up-, Icon- und Expand-Animationen,
  • responsive Design-Tokens sowie Light-/Dark-Theme,
  • reine Ableitungslogik hinter stabilen asynchronen Provider-Verträgen.

Der Habit-Check-off wird inzwischen persistent in Supabase gespeichert. Noch in Entwicklung sind echte Nutzerkonten, Wallet, Ziele und Investitionen. Produkt- Auth und eigentümerbasierte Row Level Security folgen in Phase 1 Slice 3; bis dahin enthalten die öffentlichen Deployments nur Demo-Daten. Den verbindlichen Jetzt-Stand und den nächsten Schritt hält STATUS.md fest.

Technischer Ansatz

flowchart LR
    UI["Next.js App Router<br/>React UI"] --> State["Container State<br/>Check-off"]
    State --> Derive["Pure deriveHabitBox()<br/>View Model"]
    State --> Provider["Async Provider<br/>stabile TypeScript-Verträge"]
    Supabase["Supabase<br/>PostgreSQL · RLS"] --> Provider
    Provider --> State
Loading

Die Habit Box trennt Datenzugriff, reine Ableitungslogik, Client-State und Darstellung. Zustände wie „heute erledigt“, das Fünf-Tage-Fenster und die Gesamtanzahl werden aus Log-Einträgen abgeleitet, nicht redundant gespeichert. Der Supabase-Vertrag erzwingt die zentralen Invarianten zusätzlich auf Datenbankebene. Details und die klare Trennung zwischen aktuellem und geplantem Stand stehen in der technischen Spezifikation; die Begründungen hinter langfristigen Entscheidungen in DECISIONS.md.

Stack und Qualität

TypeScript 5 · React 19 · Next.js 16 (App Router) · Tailwind CSS 4 · CSS Modules · Vitest · GitHub Actions · Vercel · Supabase (Phase 1)

  • TypeScript Strict Mode und klar getrennte Domänen-, Provider- und UI-Verträge.
  • ESLint, Markdown Lint, TypeScript-Check, Vitest und Production-Build als lokale Qualitätschecks und in CI.
  • Fokussierte Tests für die reine Habit-Ableitungslogik; Komponenten- und End-to-End-Abdeckung wachsen mit den jeweiligen Vertical Slices.
  • Semantische Form-Labels, sichtbare Fokuszustände und kontrastbasierte Design-Tokens; ein vollständiges Accessibility-Audit steht noch aus.
  • Kleine Pull Requests werden über Linear-Issues, Branches und nachvollziehbare PR-Beschreibungen miteinander verknüpft.

Produktpfad

Phase 1 hat mit dem persistenten Supabase-Datenfluss begonnen. Als Nächstes ergänzen Auth und eigentümerbasierte RLS die geschützte Kernschleife; spätere Phasen bringen Historie, Streaks, Internationalisierung und die Mobile-App auf demselben Backend. Die kanonische Reihenfolge und der bewusste Nicht-Scope stehen in ROADMAP.md und PRD.md.

Nach einer Pause wieder einsteigen

  1. STATUS.md lesen — Stand, Fokus, nächster Schritt und Blocker.
  2. Den neuesten Eintrag unter docs/session-logs/ überfliegen — was geschah zuletzt?
  3. Das aktuelle Linear-Issue öffnen — welche konkrete Arbeit ist geplant?
  4. Bei Bedarf die dort verlinkte Spezifikation oder den relevanten ADR lesen.

Dokumentation

Eine Information hat genau eine kanonische Quelle; andere Dokumente verlinken darauf, statt dieselbe Erklärung mehrfach zu pflegen.

Dokument Kanonisch für
PRD.md Produkt, Zielgruppe und Scope
TECHNICAL_SPEC.md Architektur, Datenmodell und technische Verträge
DECISIONS.md Das Warum hinter langfristigen Entscheidungen
DESIGN.md Designsystem und wiederverwendbare UI-Patterns
ROADMAP.md Produktphasen und Meilensteine
STATUS.md Kurzer aktueller Arbeitssnapshot
session-logs/ Monatliche, append-only Entwicklungschronik
WAYS_OF_WORKING.md Arbeits-, Git- und Dokumentationsprozess
AI_COLLABORATION.md Lern-Modus und Zusammenarbeit mit KI
AGENTS.md Verbindliche Regeln für KI-Agenten

Konkrete Aufgaben, Status, Prioritäten und Termine leben in Linear. Die Repo-Dokumentation bleibt die glaubwürdige Quelle der Wahrheit für Produkt, Architektur, Entscheidungen, aktuellen Kontext und Historie.

About

Turn habits into currency. Earn points for every check-off and spend them on rewards you choose — with no punishment for missed days.

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages