{ "boards": { "ringsystem": { "name": "Ringsystem", "goal": "Tool-agnostische Architektur — AGENTS.md kanonisch, CLAUDE.md/Codex/OpenCode als Symlinks. ARCHITECTURE.md definiert Ring 0–3.", "wipLimit": 2, "throughput": 1, "sle": { "days": 30, "p": 85 }, "overview": { "tagline": "Privacy-Schichten von innen (alles privat) nach außen (öffentlich).", "description": "Ring 0 (personal-vault) sieht alles und routet. Ring 1 trennt privat (robin-private) von beruflich (robin-work). Ring 2 = Sub-Projekte in Ring 1. Ring 3 = öffentliche Repos (doener-app, musichub, pleasance, …). Sichtbarkeit von innen nach außen — Referenzen NUR von außen nach innen.", "summary": "Tool-Agnostik durchgesetzt: AGENTS.md ist die kanonische Datei, jedes andere Tool greift via Symlink darauf zu (CLAUDE.md → AGENTS.md, gleiche Konvention für Codex, OpenCode). Skill-Files werden über ~/.skills/{name}.md zentral geteilt. Aktuell: globale ~/.claude/CLAUDE.md auf Symlink-Modell migriert.", "type": "meta", "launches": [ { "label": "ARCHITECTURE.md", "sub": "Ring-Topologie + Dispatch-Konvention", "url": "http://localhost:8765/dev/personal-vault/ARCHITECTURE.md", "icon": "🔄" }, { "label": "Global AGENTS.md", "sub": "~/.claude/AGENTS.md (= CLAUDE.md)", "url": "http://localhost:8765/.claude/AGENTS.md", "icon": "⚙" }, { "label": "Ring 0 AGENTS.md", "sub": "personal-vault", "url": "http://localhost:8765/dev/personal-vault/AGENTS.md", "icon": "⊙" }, { "label": "Ring 1w AGENTS.md", "sub": "robin-work", "url": "http://localhost:8765/dev/robin-work/AGENTS.md", "icon": "●" }, { "label": "Ring 1p AGENTS.md", "sub": "robin-private", "url": "http://localhost:8765/dev/robin-private/AGENTS.md", "icon": "○" }, { "label": "Skills-Verzeichnis", "sub": "~/.claude/skills/ (alle Skills)", "url": "http://localhost:8765/.claude/skills/", "icon": "🛠" }, { "label": "Rules-Verzeichnis", "sub": "~/.claude/rules/ (Verhalten)", "url": "http://localhost:8765/.claude/rules/", "icon": "📐" }, { "label": "Kanban SPEC.md", "sub": "~/dev/kanban/SPEC.md", "url": "http://localhost:8765/dev/kanban/SPEC.md", "icon": "📖" } ], "stack": [ "AGENTS.md (kanonisch)", "CLAUDE.md (Symlink)", "Codex/OpenCode (Symlink)", "Skills via ~/.skills/", "Dispatch via ~/.agent-signals/", "Ring-Architektur" ], "info": [ { "label": "Naming-Konvention", "value": "AGENTS.md ist Quelle; Tool-spezifische Files sind Symlinks darauf" }, { "label": "Ring 0", "value": "~/dev/personal-vault/ — Vault, sieht alles, niemand sieht hier rein" }, { "label": "Ring 1 privat", "value": "~/dev/robin-private/ — Privat-Workspace + Ring-2-Projekte" }, { "label": "Ring 1 beruflich", "value": "~/dev/robin-work/ — Business-Workspace + Ring-2-Projekte" }, { "label": "Ring 2", "value": "Sub-Projekte in Ring 1 — z.B. ~/dev/robin-work/projects/{name}/" }, { "label": "Ring 3", "value": "Öffentliche Repos in ~/dev/ direkt — doener-app, musichub, pleasance, mdim, openclaw, docpilot, ai-engineering" }, { "label": "Skills", "value": "~/.claude/skills/{name}/SKILL.md → Symlink auf ~/.skills/{name}.md (tool-agnostisch teilbar)" }, { "label": "Dispatch zwischen Ringen", "value": "~/.agent-signals/dispatch/{workspace}.dispatch.md" }, { "label": "Sichtbarkeitsregel", "value": "innen → außen: Ring 0 sieht alles, Ring 1 sieht Ring 2+3, Ring 2 sieht Ring 3" }, { "label": "Referenz-Regel", "value": "außen → innen: nur wissen DASS innere Ringe existieren, NIEMALS Inhalte lesen oder leaken" } ], "commands": [ { "label": "Globale AGENTS lesen", "cmd": "cat ~/.claude/AGENTS.md" }, { "label": "ARCHITECTURE lesen", "cmd": "cat ~/dev/personal-vault/ARCHITECTURE.md" }, { "label": "Alle Skills auflisten", "cmd": "ls ~/.claude/skills/" }, { "label": "Symlink-Check", "cmd": "find ~/dev/robin-work ~/dev/robin-private ~/dev/personal-vault -maxdepth 2 -name \"CLAUDE.md\" -type l" } ] }, "cols": [ { "id": "ready", "label": "Ready", "tasks": [ { "t": "AGENTS.md ## Aktueller Stand in allen Code-Repos auf 2-Bullet-Snapshot schrumpfen" }, { "t": "Codex/OpenCode Symlink-Setup verifizieren oder anlegen" }, { "t": "~/.skills/ als kanonischen Skill-Store dokumentieren" }, { "t": "Ring-Mapping-Tabelle in ARCHITECTURE.md aktuell halten (cmux-toolkit, khala etc.)" } ] }, { "id": "wip", "label": "In Progress", "tasks": [] }, { "id": "done", "label": "Done", "tasks": [ { "t": "~/.claude/CLAUDE.md → AGENTS.md migriert (Symlink-Konvention)", "doneAt": 1779580800000 }, { "t": "Ringsystem-Meta-Board angelegt mit Overview aller relevanten MD-Files", "doneAt": 1779580800000 } ] } ] }, "kanban": { "name": "Kanban (dieses Board)", "goal": "Self-contained HTML-Kanban — ~/dev/kanban/index.html. Visualisierung des Ringsystems, Single Source of Truth für laufende Projekte.", "wipLimit": 2, "throughput": 3, "sle": { "days": 7, "p": 85 }, "overview": { "tagline": "Autopoiesis — das System, das sich selbst beobachtet und steuert.", "description": "Single Source of Truth für alle laufenden Projekte. Visualisiert das Ringsystem (Ring 0 → Ring 3) als 5-Dimensionen-Layer: Gruppe (Domäne) × Ring (Privacy) × Board (Projekt) × Spalte (Flow-Status) × Karten-Class-of-Service. Self-contained HTML/CSS/JS, keine Build-Pipeline, kein Backend. State in localStorage. Anlehnung an Luhmanns Systemtheorie: das Kanban beobachtet sich selbst (dieses Meta-Board) und alle anderen Projekte gleichzeitig.", "summary": "Reifegrad: produktionsreif für tägliche Nutzung. Aktuell in Iteration: Overview-Pages pro Projekt mit Hero-Icons, Quick-Launch, Secrets, Quick-Commands. Pilot war Döner-App. Ausstehend: Overview-Daten für die restlichen Boards.", "type": "meta", "launches": [ { "label": "Kanban öffnen", "sub": "~/dev/kanban/index.html", "url": "http://localhost:8765/dev/kanban/index.html", "icon": "📋" }, { "label": "Spec lesen", "sub": "SPEC.md (Architektur + Test-Checkliste)", "url": "http://localhost:8765/dev/kanban/SPEC.md", "icon": "📖" }, { "label": "ARCHITECTURE.md", "sub": "Ring-System kanonisch", "url": "http://localhost:8765/dev/personal-vault/ARCHITECTURE.md", "icon": "🔄" }, { "label": "CLAUDE.md global", "sub": "Skill-Routing + Globals", "url": "http://localhost:8765/.claude/CLAUDE.md", "icon": "🤖" } ], "stack": [ "HTML5", "CSS3 (Custom Properties)", "Vanilla JS", "HTML5 Drag & Drop API", "localStorage", "Monte-Carlo-Simulation", "Little's Law", "Luhmann-Autopoiesis" ], "info": [ { "label": "Datei", "value": "/Users/robinchoice/dev/kanban/index.html" }, { "label": "Spec", "value": "/Users/robinchoice/dev/kanban/SPEC.md" }, { "label": "Assets", "value": "/Users/robinchoice/dev/kanban/assets/ (App-Icons)" }, { "label": "localStorage", "value": "kanban_v2 · kanban_groups · kanban_board_order · kanban_ideas · kanban_ideas_seeded" }, { "label": "Tabs", "value": "Overview (default) · Board · Analytics" }, { "label": "Gruppen", "value": "Meta · Code · Beruflich · Web · Privat" }, { "label": "Ringe", "value": "R0 (Meta) · R1p (privat) · R1w (beruflich) · R2 (Sub-Projekt) · R3 (öffentlich)" }, { "label": "Seed-Version", "value": "v3 — 16 neue Ideen aus _archive (Songideen, Bitcoin Bank, Cypherpunk, …)" } ], "commands": [ { "label": "Kanban öffnen", "cmd": "open ~/dev/kanban/index.html" }, { "label": "Spec ansehen", "cmd": "cat ~/dev/kanban/SPEC.md" }, { "label": "localStorage komplett resetten", "cmd": "echo 'localStorage.clear()' // im Browser-Devtools-Console ausführen" }, { "label": "Backup-Dump", "cmd": "cp ~/dev/kanban/index.html ~/dev/kanban/backup-$(date +%Y%m%d).html" } ] }, "cols": [ { "id": "ready", "label": "Ready", "tasks": [ { "t": "CFD (Cumulative Flow Diagram) via tägliche Snapshots" }, { "t": "Definition of Ready / Done pro Spalte editierbar" }, { "t": "Class-of-Service-Mix-Chart in Analytics" }, { "t": "PWA-Manifest für iPad Home-Screen (Stufe 1)" }, { "t": "Sync-Layer (Cloudflare Worker + KV) für Multi-Device (Stufe 3)" }, { "t": "AGENTS.md ## Aktueller Stand in allen Code-Repos auf 2-Bullet-Snapshot schrumpfen" }, { "t": "Filesystem-Sync (optional): Node-Backend Boards ↔ Ordner" }, { "t": "Card-Edit (Titel/Note direkt in der Karte)" }, { "t": "Sortierung INNERHALB einer Spalte per Drag" }, { "t": "Export / Backup als JSON-Dump" }, { "t": "Overview-Daten für alle restlichen Boards (musichub, openclaw, docpilot, k4, pleasance, mdim, …)" } ] }, { "id": "wip", "label": "In Progress", "tasks": [ { "t": "Robin testet das Board auf Herz & Nieren" } ] }, { "id": "done", "label": "Done", "tasks": [ { "t": "WIP-Limit pro Board editierbar (Header-Pill)", "doneAt": 1779580800000 }, { "t": "Launch-Cards komplett klickbar (nicht nur ↗)", "doneAt": 1779577200000 }, { "t": "Overview komplett editierbar (alle Felder, Add/Remove Rows)", "doneAt": 1779573600000 }, { "t": "Auto-Aging — movedAt-Timestamp + Glow für überfällige Karten", "doneAt": 1779570000000 }, { "t": "Throughput-History — doneAt-Timestamp + reale 14-Tage-Berechnung", "doneAt": 1779566400000 }, { "t": "Flow Efficiency Berechnung korrigiert (WIP/(WIP+Ready))", "doneAt": 1779562800000 }, { "t": "Board-Name + Goal per Klick editierbar", "doneAt": 1779559200000 }, { "t": "kanban-mcp aus MCP-Config entfernt", "doneAt": 1779555600000 }, { "t": "_archive READMEs als DEPRECATED-Marker angelegt", "doneAt": 1779552000000 }, { "t": "Overview-Hero mit App-Icon + Tagline + Description", "doneAt": 1779494400000 }, { "t": "Tab-Reihenfolge: Overview · Board · Analytics", "doneAt": 1779494400000 }, { "t": "Overview-Pilot Döner-App (Quick-Launch, Hosting, Secrets, Commands)", "doneAt": 1779408000000 }, { "t": "Ring-Badge an Boards + Klick zum Wechseln", "note": "R0/R1p/R1w/R2/R3 — Sidebar-Pill", "doneAt": 1779321600000 }, { "t": "Gruppen-Reihenfolge per Drag ändern", "doneAt": 1779321600000 }, { "t": "Task → Idee per Drag (Tag-Drop-Zone)", "doneAt": 1779321600000 }, { "t": "Meta-Gruppe + dieses Kanban-Board angelegt", "doneAt": 1779235200000 }, { "t": "SPEC.md komplett neu (Test-Checkliste für Tester-Agent)", "doneAt": 1779235200000 }, { "t": "Promote-Card-zu-Board (↗ Button)", "doneAt": 1779148800000 }, { "t": "Tiefenscan _archive → 16 neue Seed-Ideen v3", "doneAt": 1779148800000 }, { "t": "Card-Delete + Promote-Modal-Bug + Group-Create-Bug gefixt", "doneAt": 1779062400000 }, { "t": "Idee-DnD → Spalte + Board-Drag zwischen Gruppen + Board-Reorder", "doneAt": 1779062400000 }, { "t": "3-Spalten-Vereinfachung + Blocker-Flag statt Tags", "doneAt": 1778976000000 }, { "t": "Expedite-Swimlane (3 Zonen aligned zu Spalten)", "doneAt": 1778976000000 }, { "t": "Add-Card-Input + Add-Board-Modal + Add-Group", "doneAt": 1778889600000 }, { "t": "Ideen-Pinnwand rechts + 35 Seed-Ideen aus Ring-System", "doneAt": 1778889600000 }, { "t": "Monte-Carlo-Forecast + Kanban-KPIs (Cycle Time, Flow Efficiency, SLE)", "doneAt": 1778803200000 }, { "t": "localStorage-Persistierung + 5→3-Spalten-Migration", "doneAt": 1778803200000 }, { "t": "Initial-Setup: 14 Boards aus Robins Ring-System ingested", "doneAt": 1778716800000 } ] } ] }, "doener": { "name": "Döner-App", "goal": "iOS-App in Swift 6 + SwiftUI + MapKit. Ziel: tester-ready, dann App Store Launch.", "wipLimit": 3, "throughput": 2, "sle": { "days": 14, "p": 85 }, "overview": { "icon": "assets/doener.png", "tagline": "Find. Bewerte. Sammle. — eine Stempelkarte für Dönerläden.", "description": "iOS-App zum Finden, Bewerten und Sammeln von Dönerläden. Offline-First mit Community-Layer: Check-Ins, Sauce/Fleisch/Brot-Ratings, persönliche Döner-Geschichte und Live-Status von Freunden. Karte nutzt OpenStreetMap via Overpass-API mit SwiftData-Caching (24h-Refresh). Gamification-Mechaniken angelehnt an Pokémon Go und Spotify Wrapped.", "summary": "Sprint 3 — Launch-Readiness. Backend läuft auf Coolify (Hetzner). iOS-App vor dem Switch von LAN auf Prod-Backend. Sprints 1+2 fertig (Tester-Readiness + Backend-Sync + Freunde-Feed live). Aktuell: S3.2 Produktiv-Hosting in WIP, S3.8 Apple JWKS-Validierung als Security-Blocker.", "type": "ios-app", "launches": [ { "label": "GitHub Repo", "sub": "robinchoice/DoenerApp", "url": "https://github.com/robinchoice/DoenerApp", "icon": "⌥" }, { "label": "Coolify Dashboard", "sub": "App jdna5c4…", "url": "https://coolify.diespaetzles.lol", "icon": "🚀" }, { "label": "App Store Connect", "sub": "Beta noch nicht released", "url": "https://appstoreconnect.apple.com", "icon": "📱" }, { "label": "Apple Developer", "sub": "Approval ausstehend", "url": "https://developer.apple.com/account", "icon": "⚙" } ], "stack": [ "Swift 6", "SwiftUI", "MapKit", "SwiftData", "Vapor", "PostgreSQL + PostGIS", "Docker", "Coolify", "Hetzner", "Overpass API" ], "info": [ { "label": "Repo-Pfad", "value": "~/dev/doener-app" }, { "label": "Backend-Stack", "value": "Vapor (Swift) + PostgreSQL + PostGIS" }, { "label": "Coolify App-UUID", "value": "jdna5c4aqx6bf6u10bs5j48n" }, { "label": "Coolify DB-UUID", "value": "mzu4msj785xpe5nl6ypntb4d" }, { "label": "Coolify-Instanz", "value": "coolify.diespaetzles.lol" }, { "label": "iOS APIConfig", "value": "iOS/DoenerApp/.../APIConfig.swift (Switch LAN→Prod ausstehend)" }, { "label": "Hosting", "value": "Hetzner VPS + Coolify, deployed via git.diespaetzles.lol" }, { "label": "Apple JWKS", "value": "S3.8 — Signaturprüfung implementieren (SECURITY-BLOCKER)" } ], "secrets": [ { "label": "COOLIFY_SPAETZLES_TOKEN", "value": "(bitte aus ~/.secrets eintragen oder env-ref lassen)", "masked": true }, { "label": "GitHub Secret — COOLIFY_TOKEN", "value": "(bitte eintragen)", "masked": true }, { "label": "GitHub Secret — COOLIFY_APP_UUID", "value": "jdna5c4aqx6bf6u10bs5j48n" }, { "label": "Apple Bundle ID", "value": "(bitte eintragen — z.B. com.robinchoice.DoenerApp)" }, { "label": "Apple Team ID", "value": "(bitte eintragen)" } ], "commands": [ { "label": "Deploy triggern", "cmd": "curl -X POST -H \"Authorization: Bearer $COOLIFY_SPAETZLES_TOKEN\" https://coolify.diespaetzles.lol/api/v1/applications/jdna5c4aqx6bf6u10bs5j48n/start" }, { "label": "Repo öffnen", "cmd": "cd ~/dev/doener-app && code ." }, { "label": "Logs anschauen", "cmd": "curl -H \"Authorization: Bearer $COOLIFY_SPAETZLES_TOKEN\" https://coolify.diespaetzles.lol/api/v1/applications/jdna5c4aqx6bf6u10bs5j48n/logs" } ] }, "cols": [ { "id": "ready", "label": "Ready", "tasks": [ { "t": "App-Store-Launch als Sprint Goal definieren" }, { "t": "S4.A Pokémon-Go Sammelmechanik" }, { "t": "S4.B Snapchat-Heatmap" }, { "t": "S4.C Döner-Symbole statt Sterne" }, { "t": "S4.D Community-Summary mit KI" }, { "t": "S4.E In-App Feedback für Tester" }, { "t": "S3.5 Push Notifications" }, { "t": "S3.6 Freunde per Kontakte finden" }, { "t": "S3.7 Leaderboards" }, { "t": "S3.8 Apple JWT Signaturprüfung", "blocked": true, "cos": "fixed" }, { "t": "S3.3 Google Maps Places API", "blocked": true, "cos": "expedite" } ] }, { "id": "wip", "label": "In Progress", "tasks": [ { "t": "S3.2 Produktiv-Hosting", "blocked": true, "cos": "expedite", "age": 30 } ] }, { "id": "done", "label": "Done", "tasks": [ { "t": "Sprint 1: Tester-Readiness", "note": "Sprint 1 komplett ✅" }, { "t": "Sprint 2: Backend-Sync", "note": "Sprint 2 komplett ✅" }, { "t": "S3.4 Freunde-Feed + Live-Status", "note": "Backend + iOS fertig, Build grün" } ] } ] }, "musichub": { "name": "Music Hub", "goal": "Label-Kollaborations-Webapp: SvelteKit + Hono + Postgres. Phase 3: Background Sync.", "wipLimit": 3, "throughput": 3, "sle": { "days": 21, "p": 85 }, "cols": [ { "id": "ready", "label": "Ready", "tasks": [ { "t": "Status quo klären + neues Sprint Goal definieren" }, { "t": "Phase 3: Background Sync (IDB-Queue, SW sync-Handler)" }, { "t": "Onboarding-Role für Backend-Personalisierung nutzen" }, { "t": "DB is_public nach STEM-Tests auf privat setzen" }, { "t": "RESEND_API_KEY setzen für E-Mail-Versand", "blocked": true } ] }, { "id": "wip", "label": "In Progress", "tasks": [] }, { "id": "done", "label": "Done", "tasks": [ { "t": "PWA Phase 2: Push Notifications (VAPID)", "note": "VAPID, push_subscriptions, SW-Handler" }, { "t": "Listen Analytics + Reject with Feedback", "note": "IP-Hashing, sendBeacon" }, { "t": "SSE Real-time (EventSource, Pub/Sub)", "note": "version:new / comment:new" }, { "t": "Onboarding Flow + Bottom Navigation Mobile", "note": "3-Step Overlay, safe-area-aware" } ] } ] }, "openclaw": { "name": "OpenClaw / Rob", "goal": "Eigener 24/7-KI-Assistent auf Dell OptiPlex. Gemma 4, Telegram-Bridge, MCP-Tools.", "wipLimit": 2, "throughput": 1, "sle": { "days": 30, "p": 80 }, "cols": [ { "id": "ready", "label": "Ready", "tasks": [ { "t": "Whisper Voice-Messages Container stabilisieren" }, { "t": "TELEGRAM_CHAT_ID setzen" }, { "t": "Modellwechsel + openclaw-upgrade", "blocked": true, "cos": "expedite" } ] }, { "id": "wip", "label": "In Progress", "tasks": [] }, { "id": "done", "label": "Done", "tasks": [] } ] }, "docpilot": { "name": "docpilot", "goal": "Git-getriggerte Doku-Updates via Claude API. v1: README-Modus → PR.", "wipLimit": 2, "throughput": 2, "sle": { "days": 14, "p": 85 }, "cols": [ { "id": "ready", "label": "Ready", "tasks": [ { "t": "Spec schreiben: v1 README-Modus" }, { "t": "Repo anlegen + CLAUDE.md einrichten" }, { "t": "GitHub Action: Diff → Claude → PR" }, { "t": "Erster Live-Test: Perpetual Traveler Repo" } ] }, { "id": "wip", "label": "In Progress", "tasks": [] }, { "id": "done", "label": "Done", "tasks": [] } ] }, "k4": { "name": "K4 Digital — Ronal Edge Rollout", "goal": "Freelance PM: OT-Security-Rollout für Ronal Group. 7 Werke, 326 EdgeFire + 20 EdgeIPS (TXOne Networks).", "wipLimit": 3, "throughput": 2, "sle": { "days": 7, "p": 90 }, "cols": [ { "id": "ready", "label": "Ready", "tasks": [ { "t": "Ticketsystem: Passwort ändern nach erstem Login" }, { "t": "Eskalationsprozess definieren (Mail + Ticketsystem) → Timo/Günter" }, { "t": "Contact List für EdgeOne-Zugang → Luis" }, { "t": "Syslog-Problem: Detail-Call mit Luis + Ronny" }, { "t": "Remote Access freigeben (Benjamin Veit)" }, { "t": "Spain-Site: Baseline-Dokumentation erstellen (neue Template-Site)" }, { "t": "Solcomp on-site Mexico — 2026-05-21", "cos": "fixed" }, { "t": "Solcomp on-site Mexico — 2026-05-28", "cos": "fixed" } ] }, { "id": "wip", "label": "In Progress", "tasks": [] }, { "id": "done", "label": "Done", "tasks": [ { "t": "NDA unterzeichnet" }, { "t": "Global Rollout Kick-off Call moderiert", "note": "2026-05-18 — Ronal, TXOne, Solcomp, K4" } ] } ] }, "branding": { "name": "Branding & Außendarstellung", "goal": "Logo, Farbschema, Typo, Fotos, Angebots-/Rechnungstemplate.", "wipLimit": 2, "throughput": 1, "sle": { "days": 30, "p": 80 }, "cols": [ { "id": "ready", "label": "Ready", "tasks": [ { "t": "Logo + Farbschema + Typo festlegen" }, { "t": "Professionelle Fotos — Termin vereinbaren" }, { "t": "Angebots-/Rechnungstemplate mit Pandoc+Typst" } ] }, { "id": "wip", "label": "In Progress", "tasks": [] }, { "id": "done", "label": "Done", "tasks": [] } ] }, "psk": { "name": "PSK I Zertifizierung", "goal": "PSK I bestanden ✅. Jetzt: Kurs bei K4 als Trainer durchführen.", "wipLimit": 1, "throughput": 1, "sle": { "days": 7, "p": 95 }, "cols": [ { "id": "ready", "label": "Ready", "tasks": [ { "t": "Control Chart ↔ Agent Chart gegenüberstellen" }, { "t": "Gyra aufhübschen — neues Beispiel (SLA + Definition of Workflow)" }, { "t": "Stammbaum: Lean → Agil → Kanban → Scrum" }, { "t": "Lead Time & Flow Efficiency — kurzer Abriss" }, { "t": "Frage 185: 3 vs. 5 Feedback Loops in Scrum klären" }, { "t": "SLE-Formel zugänglich erklären" } ] }, { "id": "wip", "label": "In Progress", "tasks": [] }, { "id": "done", "label": "Done", "tasks": [ { "t": "Lernplan durcharbeiten", "note": "Zertifizierungsphase abgeschlossen" }, { "t": "Mock-Prüfung / Self-Assessment", "note": "PSK I bestanden ✅" } ] } ] }, "pleasance": { "name": "Pleasance", "goal": "Atelier-Hub-Site: Kontaktformular gebaut. RESEND_API_KEY + DNS + weitere Seiten ausstehend.", "wipLimit": 3, "throughput": 2, "sle": { "days": 14, "p": 85 }, "cols": [ { "id": "ready", "label": "Ready", "tasks": [ { "t": "RESEND_API_KEY in Coolify setzen", "blocked": true }, { "t": "DNS A-Record api.pleasance.org → VPS-IP" }, { "t": "Resend + Kontaktformular-E-Mail testen" }, { "t": "Hetzner VPS bestellen + Coolify installieren" }, { "t": "pleasance.org von Vercel → Coolify migrieren" }, { "t": "Inhalte aus pleasance-thoughts integrieren" }, { "t": "studio.html + buehne.html + projekte.html" }, { "t": "img/robin.jpg besorgen" } ] }, { "id": "wip", "label": "In Progress", "tasks": [] }, { "id": "done", "label": "Done", "tasks": [ { "t": "kontakt.html: Drei Doors → Formular" }, { "t": "coaching.html: alle Links → kontakt.html" }, { "t": "api/: Bun/Hono POST /contact mit Resend" }, { "t": "lernplatform-fork gelöscht", "note": "Durch analyze-sources abgedeckt" } ] } ] }, "mdim": { "name": "mydrugismusic Website", "goal": "Website-Relaunch: Astro 5 + Directus CMS, deployed via Coolify.", "wipLimit": 2, "throughput": 2, "sle": { "days": 21, "p": 85 }, "cols": [ { "id": "ready", "label": "Ready", "tasks": [ { "t": "Aktuellen Stand prüfen + offene Tasks erfassen" } ] }, { "id": "wip", "label": "In Progress", "tasks": [] }, { "id": "done", "label": "Done", "tasks": [] } ] }, "eu": { "name": "Einzelunternehmen", "goal": "Buchhaltung, Banking und operative Verwaltung des Einzelunternehmens.", "wipLimit": 2, "throughput": 1, "sle": { "days": 30, "p": 80 }, "cols": [ { "id": "ready", "label": "Ready", "tasks": [ { "t": "Lexoffice anschauen + M26 sortieren" }, { "t": "Zweites Businesskonto eröffnen" } ] }, { "id": "wip", "label": "In Progress", "tasks": [] }, { "id": "done", "label": "Done", "tasks": [] } ] }, "privat": { "name": "Haushalt & Leben", "goal": "Persönliche Projekte, Haushalt, Anschaffungen.", "wipLimit": 2, "throughput": 2, "sle": { "days": 14, "p": 80 }, "cols": [ { "id": "ready", "label": "Ready", "tasks": [ { "t": "Roborock starten" }, { "t": "Wäsche anschmeißen" }, { "t": "Fahrradkette reparieren" }, { "t": "Analogkameras an die Wand bringen" }, { "t": "Bilder aufhängen" }, { "t": "Haken im Schlafzimmer aufhängen" }, { "t": "Korkpinwand fürs Büro kaufen" } ] }, { "id": "wip", "label": "In Progress", "tasks": [] }, { "id": "done", "label": "Done", "tasks": [] } ] }, "degoogle": { "name": "De-Google / FOSS Migration", "goal": "Migration zu self-hosted + FOSS. Nextcloud und Immich laufen bereits.", "wipLimit": 2, "throughput": 1, "sle": { "days": 30, "p": 80 }, "cols": [ { "id": "ready", "label": "Ready", "tasks": [ { "t": "Google Fotos → Immich Migration" }, { "t": "Matrix/Conduwuit self-hosted + Bridges" }, { "t": "Google Meet → Jitsi Meet self-hosted" }, { "t": "Apple Podcasts → AntennaPod / Podverse" }, { "t": "Apple Bücher → KOReader + Calibre-Web" }, { "t": "VPN: Mulvad einrichten" }, { "t": "Mail-Server evaluieren: Stalwart Mail" }, { "t": "GrapheneOS Migration (iPhone → Pixel)" } ] }, { "id": "wip", "label": "In Progress", "tasks": [ { "t": "Navigation: Organic Maps installieren", "age": 7 } ] }, { "id": "done", "label": "Done", "tasks": [ { "t": "Proton Passwortmanager → Bitwarden", "note": "256 Items nach Vaultwarden migriert" }, { "t": "Google Authenticator → Aegis / Raivo", "note": "Alle 2FA-Codes nach Raivo OTP ✅" } ] } ] }, "bibliothek": { "name": "Bibliothek-Pipeline", "goal": "475 PDFs aus Nextcloud via /analyze-sources zu destillierten Markdown-Artikeln.", "wipLimit": 2, "throughput": 2, "sle": { "days": 14, "p": 85 }, "cols": [ { "id": "ready", "label": "Ready", "tasks": [ { "t": "Pilot: E-Book mit analyze-sources verarbeiten" }, { "t": "Marker auf x86_64 Mac klären" } ] }, { "id": "wip", "label": "In Progress", "tasks": [] }, { "id": "done", "label": "Done", "tasks": [] } ] }, "aikb": { "name": "AI Engineering KB", "goal": "Wissens-Repo für AI Engineering nach LLM-Wiki-Pattern (Karpathy).", "wipLimit": 2, "throughput": 2, "sle": { "days": 14, "p": 85 }, "cols": [ { "id": "ready", "label": "Ready", "tasks": [] }, { "id": "wip", "label": "In Progress", "tasks": [] }, { "id": "done", "label": "Done", "tasks": [ { "t": "Schema-Diff: source_type, author, year, isbn", "note": "Frontmatter-Schema + Template dokumentiert" } ] } ] }, "tiefgang": { "name": "Tiefgang", "goal": "", "wipLimit": 3, "throughput": 2, "sle": { "days": 14, "p": 85 }, "cols": [ { "id": "ready", "label": "Ready", "tasks": [ { "t": "4 Songs mit KI-Tools mastern" }, { "t": "4 Songs in die Cloud hochladen" } ] }, { "id": "wip", "label": "In Progress", "tasks": [] }, { "id": "done", "label": "Done", "tasks": [] } ] }, "mdimmusic": { "name": "MDIM", "goal": "mydrugismusic — Label & Artist-Kollektiv.", "wipLimit": 3, "throughput": 2, "sle": { "days": 14, "p": 85 }, "cols": [ { "id": "ready", "label": "Ready", "tasks": [] }, { "id": "wip", "label": "In Progress", "tasks": [] }, { "id": "done", "label": "Done", "tasks": [] } ] }, "droii": { "name": "DROII", "goal": "", "wipLimit": 3, "throughput": 2, "sle": { "days": 14, "p": 85 }, "cols": [ { "id": "ready", "label": "Ready", "tasks": [] }, { "id": "wip", "label": "In Progress", "tasks": [] }, { "id": "done", "label": "Done", "tasks": [] } ] }, "einzelunternehmer": { "name": "Einzelunternehmer", "goal": "Finanzen, Buchhaltung, Steuern, Verwaltung als Freelancer.", "wipLimit": 3, "throughput": 1, "sle": { "days": 30, "p": 85 }, "cols": [ { "id": "ready", "label": "Ready", "tasks": [ { "t": "Lexoffice: Stand prüfen" } ] }, { "id": "wip", "label": "In Progress", "tasks": [] }, { "id": "done", "label": "Done", "tasks": [] } ] }, "soloprojekt": { "name": "Soloprojekt", "goal": "", "wipLimit": 3, "throughput": 2, "sle": { "days": 14, "p": 85 }, "cols": [ { "id": "ready", "label": "Ready", "tasks": [] }, { "id": "wip", "label": "In Progress", "tasks": [] }, { "id": "done", "label": "Done", "tasks": [] } ] } }, "boardMeta": { "ringsystem": { "group": "Meta", "color": "#7c6af7", "ring": "0" }, "kanban": { "group": "Meta", "color": "#c084fc", "ring": "3" }, "doener": { "group": "Code", "color": "#f87171", "ring": "3" }, "musichub": { "group": "Code", "color": "#c084fc", "ring": "1w" }, "openclaw": { "group": "Code", "color": "#60a5fa", "ring": "1w" }, "docpilot": { "group": "Code", "color": "#7c6af7", "ring": "1w" }, "k4": { "group": "Beruflich", "color": "#fbbf24", "ring": "1w" }, "branding": { "group": "Beruflich", "color": "#4ade80", "ring": "1w" }, "psk": { "group": "Beruflich", "color": "#4ade80", "ring": "1w" }, "eu": { "group": "Beruflich", "color": "#fbbf24", "ring": "1w" }, "pleasance": { "group": "Web", "color": "#f87171", "ring": "3" }, "mdim": { "group": "Web", "color": "#c084fc", "ring": "3" }, "privat": { "group": "Privat", "color": "#fb923c", "ring": "1p" }, "degoogle": { "group": "Privat", "color": "#60a5fa", "ring": "1p" }, "bibliothek": { "group": "Privat", "color": "#7c6af7", "ring": "1p" }, "aikb": { "group": "Privat", "color": "#4ade80", "ring": "1w" }, "tiefgang": { "group": "Musik", "color": "#2dd4bf", "ring": "1p" }, "mdimmusic": { "group": "Musik", "color": "#c084fc", "ring": "1p" }, "droii": { "group": "Musik", "color": "#f87171", "ring": "1p" }, "soloprojekt": { "group": "Musik", "color": "#fbbf24", "ring": "1p" }, "einzelunternehmer": { "group": "Beruflich", "color": "#4ade80", "ring": "1p" } }, "groups": [ "Meta", "Code", "Beruflich", "Web", "Privat", "Musik" ] }