From 393d1337528cec32c93c4e1b3e664a1fb80c8191 Mon Sep 17 00:00:00 2001 From: Thomas Jung Date: Wed, 21 Oct 2026 15:31:19 -0400 Subject: [PATCH] docs(#2865): add daily-drawings design spec + implementation plan --- .../plans/2026-10-21-daily-drawings-ui.md | 160 ++++++++++++++++++ .../2026-10-21-daily-drawings-ui-design.md | 81 +++++++++ 2 files changed, 241 insertions(+) create mode 100644 docs/superpowers/plans/2026-10-21-daily-drawings-ui.md create mode 100644 docs/superpowers/specs/2026-10-21-daily-drawings-ui-design.md diff --git a/docs/superpowers/plans/2026-10-21-daily-drawings-ui.md b/docs/superpowers/plans/2026-10-21-daily-drawings-ui.md new file mode 100644 index 000000000..baaa84f87 --- /dev/null +++ b/docs/superpowers/plans/2026-10-21-daily-drawings-ui.md @@ -0,0 +1,160 @@ +# Daily Drawings UI Implementation Plan + +> **For agentic workers:** REQUIRED SUB-SKILL: Use superpowers:subagent-driven-development (recommended) or superpowers:executing-plans to implement this plan task-by-task. Steps use checkbox (`- [ ]`) syntax for tracking. + +**Goal:** A projector-friendly display app where an event operator picks an event, draws one random winner from people scanned as claiming a prize, and sees the winner's name/email revealed with the Kasimir mascot. + +**Architecture:** A new CAP service (`srv/drawing-service.cds` + `.js`) at `@path:'/drawings'`, `@requires:'Admin'`, exposing three functions (`listEvents`, `pool`, `draw`). Randomness and PII resolution happen server-side; the browser receives only the one chosen winner. A new standalone Vue 3 + Vite app (`app/display-app-drawings/`, sibling to `app/display-app/`) served at `/drawings-ui/`, wired into the approuter (`Admin` scope) and the MTA builder. + +**Tech Stack:** `@sap/cds` CAP service (Node.js, `cds.ql`), Vue 3 `