4
Home
Patrick Plate edited this page 2026-06-24 15:29:06 +02:00
This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

Sparkboard

A tiny idea tracker for the Plate family — and the second real consumer of plate-auth.

"Catch the spark before it fades."

Sparkboard is a 4-user, single-organisation app where Patrick, a friend, and the friend's two sons can drop half-formed ideas, react to them, and watch which ones catch fire. It is deliberately small. The strategic point of Sparkboard inside plate-software is not the feature set — it is the forcing function that proves plate-auth works for a greenfield project from day zero.


🎯 What Sparkboard is (in one paragraph)

A web app at sparkboard.plate-software.de with a Spring Boot 4.1 + Java 25 backend, a Next.js 15 + React 19 frontend, and a Postgres database. Four users sign in with Google (later GitHub, Microsoft) through plate-auth. They post ideas, react with a small fixed emoji set, and progress them through a tiny lifecycle (RAW → EXPLORING → BUILDING → SHIPPED → DEAD). PWA installable. No notifications, no comments, no tags, no kanban in v1. Mobile-friendly but desktop-first.


🚦 Where we are right now

Sprint 0 — Waiting. Sparkboard cannot start coding until plate-auth v0.1.0 is published to the Gitea Package Registry. Sparkboard's entire auth/multi-tenancy story is outsourced to that library. Sprint 1 ("Spark") begins the moment de.platesoft:plate-auth-starter:0.1.0 and @platesoft/auth:0.1.0 are pullable.

Sprint 1 — Spark. Walking skeleton that imports plate-auth, configures it for single-org mode ("Family Spark"), implements one SparkboardOnboardingHook.onFirstSignIn(), adds a single ideas table, and ships to TrueNAS. Acceptance A1A6.

See Roadmap for the full multi-sprint arc.


📚 This wiki

Page Purpose
Vision What Sparkboard is for, who it's for, what it is not
Architecture Sparkboard as a plate-auth consumer: SPI seams, single-org mode, domain entities, deployment
Roadmap Sprint 0 → Sprint 6, themed Spark / Kindling / Flame / Ember / Wildfire / Phoenix
Integration Guide Worked example: how Sparkboard wires plate-auth in (the friendly twin of plate-auth's own integration guide)
Sprint 1 — Assessment Problem analysis, risks, approach options for Sprint 1
Sprint 1 — Plan Workstreams W0W6, code sketches, acceptance A1A6
Sprint 1 — Testplan ~25 test cases mapped to A1A6
Sprint 1 — Plan Review APPROVED — 20/20 checklist, 8/8 cross-checks, 83% panel confidence
Open Questions Ten Sparkboard-specific design questions for Patrick, with leanings

🧬 Heritage

Sparkboard does not inherit any auth code. It is a clean slate. Auth, multi-tenancy, invitations, access-requests, the membership table — all of that lives in plate-auth, which itself was extracted from InspectFlow Sprint 14.

What Sparkboard inherits from the wider plate-software family:

  • Deployment shape — TrueNAS Docker Compose + frps tunnel (port 30011) + IONOS Apache reverse proxy. Same pattern as InspectFlow and CannaManage.
  • Proxy route pattern — Next.js App Router edge proxy that injects a backend JWT (now provided by @platesoft/auth/proxy instead of being hand-rolled).
  • Doc discipline — Vision / Roadmap / per-sprint Assessment + Plan + Testplan + Review.

📜 Decisions log

Date ID Decision
2026-06-24 Q01 Single-org ID: hardcode FAMILY_SPARK_ID = UUID.fromString("00000000-0000-0000-0000-000000000001") on SparkboardOnboardingHook
2026-06-24 Q02 Allowlist: plate.auth.allowlist[] in application.yml (YAML edit + redeploy via Gitea Actions)
2026-06-24 Q03 Admin promotion: sparkboard.admins[] YAML list; onFirstSignIn writes ADMIN vs MEMBER
2026-06-24 Q07 PWA icons: hand-crafted 192×192 + 512×512 PNGs in frontend/public/icons/; no build-time generator
2026-06-24 F3 Onboarding hook renamed afterFirstLogin(OnboardingContext)onFirstSignIn(AuthenticatedUser) (plate-auth spelling wins)
2026-06-24 F4 UT-06 test class moved to de.plate.sparkboard.onboarding.SparkboardOnboardingHookTest

Full rationale lives in Open Questions. Sprint-1-Plan-Part-4 § 9 carries the per-decision Sprint 1 impact.


Link What
Sparkboard code repo Gitea — sparkboard (created Sprint 1, W0)
plate-auth wiki The dependency this whole project is built on
plate-auth — Integration Guide The canonical wire-up reference; this wiki's Integration Guide is the Sparkboard-flavoured walkthrough
InspectFlow Sprint 14 overview The origin of every auth pattern that now lives in plate-auth

How to read this wiki

  • If you only want to know what Sparkboard is for → read Vision and stop.
  • If you want to know how it is built → read Architecture, then Integration Guide.
  • If you want to know what is happening this sprint → read the three Sprint 1 docs in order: AssessmentPlanTestplan.
  • If you have a design question → check Open Questions first; it almost certainly contains your question already, with Patrick's current leaning.

Updated: end of Sprint 0 planning. Sprint 1 implementation has not started.