[Epic] Public Roadmap + Changelog — interaktiv in der App #378
Labels
No labels
app/archiv
app/einkaufslisten
app/imap-client
app/wissensbasis
arch-answered
arch-question
area/api
area/auth
area/infra
area/mobile
area/shared
area/ui
area/web
portfolio-status
prio/high
prio/low
prio/medium
roadmap/public
size/l
size/m
size/s
size/xl
size/xs
status/blocked
status/needs-info
type/bug
type/chore
type/docs
type/feature
type/idea
type/refactor
No milestone
No project
No assignees
2 participants
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
admin-mrrm/mrrmlabapp#378
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Vision
End-User können direkt in der App (web + mobile) interaktiv die Roadmap einsehen — was als nächstes kommt, was gerade läuft, was bereits geliefert wurde (= Changelog). Texte sind user-freundlich, keine internen Issue-Titel.
Ziel
Architektur-Skizze
roadmap.jsonim Repo-Root vonmrrmlabappGET /roadmap(NestJS) liest JSON, transformiert, serviert/roadmapin Web + Mobile, drei Sektionen: Erledigt (Changelog), Aktuell, GeplantDatenmodell (Entwurf — arch-question folgt)
Phasen
roadmap.jsoninitial befüllen (PM-Arbeit + Schema-Validation als arch-question).GET /roadmap, liest JSON aus File-System oder Repo. (arch-question: File vs. DB-Cache? Auth? Public-endpoint ja/nein?)/roadmap, drei Sektionen, Cards mit Status-Badge.releasedAtauto-gesetzt werden. (Optional, später)Was kein Scope ist (für jetzt)
Offene arch-questions (werden separat geöffnet)
roadmap.jsonim Repo vs. DB-gepflegt? PM-Edit-Flow?Akzeptanz (Epic-Ebene)
/roadmapin Web + Mobile die drei Sektionen sehenroadmap.jsonmit einem Commit ändern → erscheint nach Deploy in der Appstatus: "done"Items mitreleasedAt-Datum, absteigend sortiert)Audit 2026-06-06 — Epic-Stand
Nach 2 Wochen ohne Aktivität ein Stand-Check. Was existiert, was offen ist, was zuerst kommen muss.
Implementiert (Phase 1 teilweise)
roadmap.jsonim Repo-Root mitreleases[]-Feld, gepflegt beim Release-Cut (zuletzt v0.6.5).scripts/extract-changelog.mjsliestreleases[]und erzeugt Markdown für den Drone-gitea-release-Step.items[]-Feld existiert in der Struktur, ist aber leer — Roadmap-Items (Now/Next/Done) im Sinne des Epics sind noch nicht gepflegt.$schema-Verweis inroadmap.jsonzeigt auf./roadmap.schema.json— Datei existiert nicht, Schema-Validation fehlt komplett.Offen
items[]initial befüllen.GET /roadmap-Endpoint./roadmapmit drei Sektionen./roadmapmit Drawer-Eintrag.releasedAt(optional, später).Blocker
Die vier im Body skizzierten arch-questions (Datenhaltung, Auth, Schema-Validation, JSON-Deployment) sind bisher nicht eröffnet worden. Sie sind strukturell für Phase 1+2 und damit für alles Weitere.
→ Gebündelt eröffnet als #437 (arch-q) — wartet auf @arch-bot.
Nächste Schritte (PM-Plan)
items[]initial befüllen (kleines Sub-Issue).Das Epic bleibt offen; Sub-Issues folgen nach #437-Antwort.
Produkt-Entscheidung (Decision Record 2026-06-06)
Nach Architekt-Antwort in #437 die folgenden Entscheidungen für die Public-Roadmap-Epic-Umsetzung. Beziehe mich auf die dort begründeten Empfehlungen.
Entscheidung 1 — Datenhaltung: JSON-File im Repo ✅
roadmap.jsonbleibt Single-Source-of-Truth. PM pflegt per Commit. Kein DB-Modell, kein Edit-UI. Git übernimmt Audit/Diff/Revert.Entscheidung 2 — Auth: Public-Endpoint mit Rate-Limit + Cache-Header ✅
GET /api/v1/roadmapohne Keycloak-Guard.@nestjs/throttlermit ~60 req/min/IP.Cache-Control: public, max-age=300.Entscheidung 3 — Schema-Validation: Zod als SoT + generiertes JSON-Schema für CI ✅
apps/api/src/roadmap/roadmap.schema.tsenthält Zod-Definition (kanonisch).scripts/sync-roadmap-schema.mjsgeneriert darausroadmap.schema.json(überzod-to-json-schema).validate-roadmaplintetroadmap.jsongegen die Schema-Datei (ajv).Entscheidung 4 — Deployment: Bundling via COPY ins Image ✅
apps/api/Dockerfilekopiertroadmap.jsonins Image. API liest beim Boot, In-Memory-Cache TTL=Infinity. Re-Deploy bei Roadmap-Änderung.Übernommene Folge-Punkte aus #437
items[]undreleases[]bleiben beide im Schema — komplementäre Semantik.releases[]fürextract-changelog.mjs(Release-Notes);items[]für UI-Now/Next/Done.linkedIssues[]als String-Array ({repo}#{number}-Format, Schema-validiert).title/summaryals plain string.items[]initial mit ~10–15 Roadmap-Items aus aktuellem Backlog befüllen.Sub-Issues, die jetzt aufgemacht werden
items[]initial befüllen — Sub-Issue folgtGET /api/v1/roadmapNestJS-Endpoint — Sub-Issue folgt/roadmap— Sub-Issue folgt/roadmap— Sub-Issue folgt#437 schließe ich als beantwortet.