fix(workshops): the empty state told people to wait for something they could start - #393
Merged
Merged
Conversation
…y could start
/workshops is where pillar 4 — retraining for a labour market AI is
rewriting — sends people, and it answered them with:
Aktuell sind keine Workshops geplant
Schau bald wieder vorbei!
with a working "Workshop vorschlagen" button directly above it and another
CTA below. The page was telling you to wait for something you could start
yourself.
The proposal pipeline is complete, and I traced it end to end before touching
anything rather than assuming it was broken:
- POST /api/workshops/propose is withAuth and creates a proposal
- the propose page checks the session and shows a login prompt, so nobody
fills six form sections only to be 401'd on submit
- submitting renders a confirmation naming the proposal, with a link back
- the admin approve route inserts BOTH a workshops row AND a scheduled
workshop_instance, so an approved proposal lands here WITH a date
"0 Workshops" therefore means nobody has proposed yet — not that anything is
broken. (A previous session had already removed the one real dead end here:
/admin/workshops/new was a form that validated, waited 1s and silently
discarded everything. It redirects into the proposal flow now.)
So the empty state leads with that action: "Das Programm entsteht aus
Vorschlägen. Schlag einen Workshop vor — als Thema, das du lernen willst,
oder als Kurs, den du selbst geben möchtest." Both directions are named
because the form supports both and only one of them was obvious.
Nothing here claims a workshop exists.
Below it, two cards for what evig can teach TODAY: the 43-entry open-source
alternatives registry and the Linux setup guide with its distro matrix. They
render only while the calendar is empty — once workshops exist, the workshops
are the answer. Structure in a config array, strings under
`workshops.browse.meanwhile.<id>`, paired by stable id.
npm run verify green: lint, umlauts, chrome, docs, compliance, typecheck,
7755 tests, production build.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
catomean
force-pushed
the
feat/workshops-honest
branch
from
August 26, 2026 21:06
f31ae12 to
1cbf13d
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
/workshopsis where pillar 4 — retraining for a labour market AI is rewriting — sends people, and it answered them with:…with a working "Workshop vorschlagen" button directly above it and another CTA below. The page was telling you to wait for something you could start yourself.
The pipeline is complete — I traced it before touching anything
Rather than assume the flow was broken because the page was empty:
POST /api/workshops/proposeiswithAuthand creates a proposalworkshopsrow and a scheduledworkshop_instance— so an approved proposal lands here with a date"0 Workshops" means nobody has proposed yet, not that anything is broken.
(A previous session had already removed the one real dead end here:
/admin/workshops/newwas a form that validated, waited 1s and silently discarded everything. It redirects into the proposal flow now.)What changed
The empty state leads with the action:
Both directions are named because the form supports both and only one of them was obvious from the button label. Nothing here claims a workshop exists.
Below it, two cards for what evig can teach today — the 43-entry open-source alternatives registry and the Linux setup guide with its distro matrix. They render only while the calendar is empty; once workshops exist, the workshops are the answer. Structure in a config array, strings under
workshops.browse.meanwhile.<id>, paired by stable id.Verification
npm run verifygreen: lint, umlauts, chrome, docs, compliance, typecheck, 7755 tests, production build.🤖 Generated with Claude Code