shadcn.io is not affiliated with official shadcn/ui
Release Train Kanban Block for Solid
A release planning board with one row per train (v2.1 to v3.0) by Planned, Developing, Testing and Released, where Slip moves a feature to the next train and shipped work is locked.
Installation
Overview
Plan releases that leave on a fixed schedule with this release train kanban for Solid with Ark UI. A hairline frame with a plus mark on each corner holds four train rows (v2.1, v2.2, v2.3 and v3.0) and four stages that share their lines: Planned, Developing, Testing and Released, with twenty features. A train leaves every 28 days from a fixed first date, so each row head works out its departure date, the days to it and "4 of 7 shipped" from the cards. A feature moves between stages inside its own train; to leave the train it is slipped with its "Slip to v2.2" Button, which moves it to the next train in the same stage and tags it "Slipped from v2.1". Released work is locked and a move that would change it is refused in words. A card moves by dragging its grip, by Space, the arrow keys and Space again (Escape cancels), or from its Dropdown Menu with "Move to". The frame is ruled by Guides. On a phone the rows scroll in one named region. For release managers, changelog planning and any work that ships in batches.
FAQ
How do I fill it with my own trains?
Edit LANES, STAGES, FIRST_TRAIN, CADENCE and START. A feature has an id, a title, a team, a slippedFrom of "" and a column that names its cell, such as v22|testing. Each train's departure date is the first date plus the cadence times its place in the list, and the days to it are counted from AS_OF, so nothing reads the clock.
Why can't I drag a feature to another train?
A train leaves on a fixed date, so leaving it is a decision with a name: Slip. The move guard refusalOf refuses a drop on another row and says to use Slip, and refuses any change to a feature in Released ("shipped on v2.1 and is locked"). Slip keeps the stage, adds the feature to the end of the next train and tags it with the first train it slipped from. The last train has no later one, so it shows a note instead of a button.
How do I move a card without a mouse?
Tab to the grip at the start of a card, named "Move" with the feature's title. Space or Enter picks it up, the arrow keys move it (left and right change the stage inside the train; up and down at the edge of a cell would cross to another train and are refused with the reason), Space drops it and Escape puts it back. Each step is announced in the status line in the foot.
Is there a way to move without dragging?
Yes: the menu at the end of each card lists every train and stage with the current one ticked, so one click moves the card, focus lands on it in its new place and the status line says so. This is the route for a single pointer and for touch.
What stays in the demo?
Everything. The moves and the slips live in the component's state, nothing is saved or sent, and a reload or Reset brings back the starting board. The product, the people and the cards are made up. To keep a change, call your API from put, the one function every finished move goes through, and update the cards from the response.
How does it look on a phone?
The rows sit in one named region that scrolls both ways, and each cell scrolls up and down inside its fixed height, so the page does not jump when a feature slips. Touch drags from the grip only, so the rest of a card still scrolls; the menu and the Slip button are the other ways to move it.