Audience: Leadership, product, design, engineering, DevOps Purpose: The kickoff and roadmap document for the Spring Design Library project Starting point: Ship the live Personal Loan prototype (happy path) and use it to drive every decision that follows Reference model: Marty Cagan, Inspired - discovery and delivery together, four product risks, outcomes over outputs Last updated: June 2026
1. Executive Summary
The Spring Design Library is more than a component catalog. It is an internal product platform for building, testing, and scaling Spring product experiences with reusable UI, shared tokens, AppFlow prototypes, and AI-assisted workflows.
The project starts with one concrete thing: ship the live personal-loan application prototype (happy path). This is ready and is our first kickoff deliverable.
We start here on purpose. Moving a complete application journey with the library is the fastest way to learn whether the system is:
- Fast - can we build and change real screens quickly?
- Stable - does a full flow hold together end to end?
- Adoptable - can other teams reuse this without rebuilding UI?
Once the live prototype is shared, we gather feedback from designers, stakeholders, developers, and DevOps, align on architecture, and then decide which future track to invest in. We do not try to do everything at once.
Operating principle: Publish first, learn fast, then iterate in waves. Each phase gets real time for feedback and improvement before we call it done.
2. The Big Picture
The project moves up a simple ladder. Each rung depends on the one below it.
flowchart TD
v1["V1: Live Personal Loan prototype (happy path) - ready"]
learn["Learn: feedback from design, stakeholders, dev, DevOps"]
decide["Decide: which future track to invest in"]
build["Build: chosen track in iterative waves"]
iterate["Iterate: test, improve, then expand"]
v1 --> learn --> decide --> build --> iterate
iterate --> learn
After the live prototype, four future project tracks are possible. They can run in sequence or partly in parallel, but each one has a clear gate.
| Track | What it delivers | Headline release |
|---|---|---|
| Track A - Full application implementation | Complete the Personal Loan flow: missing pages, edge cases, full flow map | Complete AppFlow reference |
| Track B - Platform and system enhancement | Usability, feature updates, injectable structure, agentic workflow | v2 platform |
| Track C - Token, theme, and look-and-feel | New theme support and easy theme switching across the platform | New look-and-feel |
| Track D - Playground feature development | A delivery and sign-off lane for prototypes and design-system candidates | v3 library + Playground |
These are current assumptions for future projects. Test plans for each are intentionally light right now and will be filled in as each track is chosen.
3. What We Are Building
The Spring product UI platform has these parts today:
@spring/ds-react- the reusable React design system: components, tokens, icons, and visual foundations.apps/design-library- the Next.js gallery and documentation surface under/library/*.apps/personal-loan- the standalone Personal Loan application that runs the flow outside the gallery.@spring/personal-loan-appflow- the packaged AppFlow logic: step registry, routing, screens, and shared shell.- Playground - the experimentation lane for vibe-coded screens, component candidates, and live prototypes.
- Injectable DS layer (future) - a packaged way for other teams to apply Spring look and feel to their own apps.
Future Project Tracks
Track A - Full Personal Loan application implementation
- Review the existing flow map (documentation already exists).
- Build the missing pages and all edge cases.
- Decide the future direction: keep this as the primary AppFlow, or treat it as Variant B / legacy comparison if a new AppFlow design is chosen.
Track B - Library platform and system enhancement
- Gather insight from designers, stakeholders, and developers.
- Refine usability and prioritize feature updates.
- Align the developer-facing injectable structure.
- Define and test how the design system and agentic workflow become injectable into other apps.
- Test and iterate toward a v2 platform.
Track C - Design system token, theme, and look-and-feel
- Add a new theme or new design direction if Spring moves toward a fresh application look.
- Prove that changing a few token values can update the whole experience.
- Define how theme switching works across the platform (and how far it reaches into components).
- Update components only where token changes alone are not enough.
Track D - Playground feature development
- Define how a user delivers a candidate item into the design system.
- Explore direct vibe coding from
/library/playground. - Support people who build prototypes in different tools and publish a final prototype into Playground.
- Use Playground as a sign-off and communication surface.
- Target a v3 release: refined library plus Playground workflow.
4. Why It Matters
The value is not "we have components." The value is speed, consistency, and confidence:
- Designers can see whether design decisions survive real implementation.
- Stakeholders can review a working flow instead of static screens.
- Developers can reuse package components instead of rebuilding one-off UI.
- DevOps can evaluate how the package, app, and CI model should scale.
- AI-assisted builders and vibe coders can start from Spring look and feel instead of inventing UI from scratch.
Current Baseline From The Repo
| Area | Current state | What it means for planning |
|---|---|---|
| AppFlow prototype | 22+ authored step bodies, shared chrome, token-backed components, live previews | Strong enough to ship the happy-path prototype after closing demo blockers |
| AppFlow gaps | start, analyzing-to-outcome routing, recovery paths, and full manual QA remain incomplete | Track A work after V1 |
| Standalone app | apps/personal-loan runs the flow outside the gallery | The real surface we publish first |
| Design system package | @spring/ds-react is private and source-consumed through workspace links | Good for the monorepo; needs architecture decisions before broad injection |
| Playground | Categories include Components, Pages, and Live Prototyping | Good base for Track D |
| CI and validation | Lint and build exist; manual QA runs locally | V1 can ship with technical checks plus a manual walkthrough |
5. Goals And Success Signals
| Goal | What it means | How we measure success |
|---|---|---|
| G1. Ship live Personal Loan prototype | Publish the happy-path flow on the standalone app | Anyone can complete the happy path without engineering help or manual URL edits |
| G2. Prove speed and stability | Show the library can carry a full application journey | A screen change or component swap is fast; the full flow holds together |
| G3. Learn from real reviewers | Structured feedback from design, stakeholders, dev, DevOps | Feedback becomes a prioritized backlog tagged by risk |
| G4. Align architecture | Dev and DevOps agree on structure before scaling | Signed architecture decision on package boundaries, CI, and deploy |
| G5. Prove injectable adoption | Apply Spring look and feel to another app | A host app adopts tokens and core components using a written guide |
| G6. Evolve theme and look-and-feel | Support new themes through tokens | Theme switches without forking components |
| G7. Operate Playground | Make experimentation visible and reviewable | A prototype can be delivered, reviewed, and graduated with clear rules |
Non-Goals For The First Release
- Production loan APIs, databases, analytics, Flinks, Twilio, or real eligibility logic.
- Public npm publishing before architecture alignment.
- Rebranding before injectable adoption is proven.
- Building every possible component before testing token-level adoption.
6. How We Work (Inspired Operating Model)
We use Inspired as a discipline, not a waterfall. Discovery and delivery run together.
flowchart LR
subgraph discovery [Discovery]
prototype[Prototype]
feedback[Feedback]
riskReview[Test four risks]
backlog[Prioritized backlog]
end
subgraph delivery [Delivery]
build[Build]
validate[Validate]
publish[Publish]
measure[Measure]
end
prototype --> feedback --> riskReview --> backlog
backlog --> build --> validate --> publish --> measure
measure --> feedback
The Four Risks We Always Test
| Risk | The question for this project |
|---|---|
| Value | Does the library make Spring product experiences faster to build? |
| Usability | Can designers, developers, and vibe coders actually use it? |
| Feasibility | Can engineering and DevOps build, package, and deploy it reliably? |
| Business viability | Does it support Spring goals like conversion, trust, and reuse? |
Iteration Is Built In
Every phase includes at least one feedback-and-improvement loop before it is considered done. We do not treat any phase as a single one-pass delivery. The roadmap dates below already include this iteration time.
7. Roadmap
This roadmap is a planning guide, not a fixed contract. Each phase leaves room for iteration.
gantt
title Spring Design Library Roadmap
dateFormat YYYY-MM-DD
section Publish
KickoffAlignment :a1, 2026-06-29, 2d
LivePrototypePublish :a2, 2026-07-01, 12d
M1LivePrototype :milestone, m1, 2026-07-13, 0d
section LearnAndDecide
FeedbackAndDecision :b1, 2026-07-14, 21d
M2DirectionLocked :milestone, m2, 2026-08-03, 0d
section Architecture
DevDevOpsAlignment :c1, 2026-08-04, 21d
M3ArchitectureAligned :milestone, m3, 2026-08-24, 0d
section ChosenTrack
TrackDelivery :d1, 2026-08-25, 42d
M4TrackComplete :milestone, m4, 2026-10-05, 0d
section Expand
ThemeOrPlayground :e1, 2026-10-06, 49d
M5ExpandComplete :milestone, m5, 2026-11-23, 0d
| Milestone | Target | Outcome | Decision gate |
|---|---|---|---|
| M1. Live prototype published | ~Jul 13, 2026 | Happy-path Personal Loan flow is live and shareable | Publish when blockers are closed and the walkthrough passes |
| M2. Direction locked | ~Aug 3, 2026 | Feedback synthesized; chosen track confirmed | Pick Track A, Track B, or a staged mix with evidence |
| M3. Architecture aligned | ~Aug 24, 2026 | Dev and DevOps agree on structure, CI, deploy | Start the chosen track only after this is signed |
| M4. Chosen track complete | ~Oct 5, 2026 | The selected track reaches a tested, finalized state | Expand only after the track is validated |
| M5. Expansion complete | ~Nov 23, 2026 | Theme or Playground work reaches a demoable state | Add brand/theme scale only after adoption is proven |
8. Phase Plan
Every phase uses the same simple shape: Goal -> Key tasks -> Success measures -> Expected outcome -> Next iteration trigger.
Phase 0 - Kickoff Alignment
Timing: 1-2 days Goal: Agree on scope, owners, and what "done" means for the live prototype.
Key tasks
- Confirm V1 is a live prototype, not production loan software.
- Assign owners for design, engineering, DevOps, QA, and stakeholder review.
- Confirm the demo URLs and review path.
Success measures
- Team agrees on the V1 release bar and what is intentionally deferred.
Expected outcome: A shared, written scope for the first release.
Next iteration trigger: Scope is confirmed and the publish sprint can start.
Phase 1 - Ship The Live Personal Loan Prototype (V1)
Timing: 1-2 weeks Primary risk: Value and usability Goal: Publish the happy-path Personal Loan flow on the standalone app so the team can prove the library carries a full journey quickly and stably.
Key tasks
| Task | Detail |
|---|---|
Finalize start landing | Real landing UI and CTA into the flow |
| Confirm happy-path routing | Flow runs end to end without manual URL edits |
| Confirm standalone parity | Gallery and apps/personal-loan behave the same |
| Component coverage audit | Identify DS components vs one-off UI |
| Manual walkthrough | Validate desktop, mobile, and standalone paths |
Technical readiness checks
npm run lint
npm run build
npm run build:personal-loan
Minimum walkthrough paths
| Path | Pass criteria |
|---|---|
| Happy path | start -> name -> loan-amount -> ... -> analyzing -> application-success works |
| Standalone | The standalone personal-loan app opens and runs the flow |
| Flow map | Step previews match the live steps |
Success measures
- Happy path completes without engineering help.
- The standalone app is stable across a full run.
- Lint and build pass; manual walkthrough is signed.
Expected outcome: A live, shareable Personal Loan prototype.
Next iteration trigger: Prototype is published and ready for structured feedback.
Scope lock: No new large features, branding, or package publishing during V1 unless it unblocks the publish.
Phase 2 - Learn And Decide The Direction
Timing: 2-3 weeks Primary risk: Value, usability, business viability Goal: Turn real feedback into a clear decision about which future track to invest in.
Key tasks
| Audience | What we test | Output |
|---|---|---|
| Designers | Visual fidelity, token fit, state coverage, flow clarity | Sign-off or change list |
| Stakeholders | Product story, trust moments, outcome clarity | Go/no-go and top concerns |
| Developers | Component reuse, package boundaries, integration pain | Technical backlog and feasibility notes |
| DevOps | Build, deploy, CI, package strategy | Architecture and delivery constraints |
The decision (a real gate)
After feedback, choose the direction:
- Go to Track A (full implementation) if the Personal Loan flow should become the primary reusable AppFlow reference. Build missing pages and edge cases.
- Treat the current flow as Variant B / legacy if a new AppFlow design is the future direction. Keep it as a comparison and plan the new design separately.
- Go to Track B (platform and system enhancement) first if the biggest risk is adoption, tooling, and architecture rather than finishing every legacy edge case.
Success measures
- Feedback is grouped by screen, component, copy, and architecture area.
- Each item is tagged by risk: value, usability, feasibility, or viability.
- A single chosen direction is written down with its reason.
Expected outcome: A prioritized backlog and a confirmed track choice.
Next iteration trigger: Direction is locked and architecture alignment can begin.
Phase 3 - Architecture And DevOps Alignment
Timing: 2-3 weeks Primary risk: Feasibility Goal: Agree on the final structure before scaling the chosen track.
Key tasks
| Topic | Decision needed |
|---|---|
| Package boundaries | What belongs in @spring/ds-react, @spring/personal-loan-appflow, gallery, or app |
| Consumption model | Source-only workspace use vs a build step vs a private published package |
| CI strategy | Lint, build, both apps, and manual QA coverage expectations |
| Deployment path | How the gallery and standalone app are hosted and shared |
| Token governance | Who approves token changes and how themes are tested |
Success measures
- An architecture decision record is approved by engineering and DevOps.
- CI builds both apps and runs a smoke manual QA path.
- A package import smoke test passes in a clean workspace.
Expected outcome: A signed architecture and delivery plan.
Next iteration trigger: Structure is approved, so the chosen track can build safely.
Phase 4 - Deliver The Chosen Track
This phase runs the track chosen in Phase 2. Each track below uses the same shape and includes iteration time.
Track A - Full Application Implementation
Goal: Complete the Personal Loan flow as a full, reliable reference.
Key tasks
- Review the existing flow map and documentation.
- Build the missing pages and all edge cases.
- Wire recovery paths, skip paths, and outcome variants.
- Confirm whether this stays the primary AppFlow or becomes Variant B.
Success measures
- Happy path plus edge cases complete without manual URL edits.
- High component reuse; minimal one-off UI.
- The standalone app is stable across all paths.
Expected outcome: A complete AppFlow reference, with a clear decision on its future role.
Next iteration trigger: Full flow is tested and the team is ready to expand or harden the platform.
Track B - Platform And System Enhancement (toward v2)
Goal: Make the library easier to adopt and easier to build with.
Key tasks
- Refine usability and prioritize feature updates from Phase 2 feedback.
- Align the developer-facing injectable structure.
- Define and test how the design system and agentic workflow become injectable (see Section 9).
- Test and iterate.
Success measures
- A host app can adopt Spring tokens and core components using the written guide.
- The agentic workflow rules can be reused outside this repo.
- Adoption time and manual edits go down across pilots.
Expected outcome: A v2 platform that other teams can adopt with guidance.
Next iteration trigger: Adoption is proven, so theme and Playground work can scale.
Phase 5 - Expand (Theme And Playground)
These tracks come after the chosen core track is validated. They can run in either order based on business need.
Track C - Token, Theme, And Look-And-Feel
Goal: Support a new look and easy theme switching, mostly through tokens.
Key tasks
- Confirm that changing a few token values updates the whole experience.
- Add a new theme or design direction if Spring moves to a new application look.
- Define how theme switching works across the platform.
- Update components only where tokens alone are not enough.
Success measures
- Theme switches without forking components.
- Core screens render correctly under each theme.
- Contrast and accessibility pass for each theme.
Expected outcome: A working theme switch and a clear rule for token-driven look changes.
Next iteration trigger: A second theme works, so broader brand variants can be considered.
Track D - Playground Feature Development (toward v3)
Goal: Make Playground the lane for delivering and signing off prototypes.
Key tasks
- Define how a user delivers a candidate item into the design system.
- Explore direct vibe coding from
/library/playground. - Let people build in different tools, then publish final prototypes into Playground.
- Use Playground as a sign-off and communication surface.
- Define the graduation path: Playground -> package -> gallery doc.
Success measures
- At least one prototype is delivered, reviewed, and graduated.
- Status and ownership are clear for each Playground project.
- Stakeholders can review prototypes through shared preview URLs.
Expected outcome: A v3 release: refined library plus a working Playground workflow.
Next iteration trigger: The delivery and sign-off loop works repeatably.
9. Injectable Design System And Agentic Workflow
This section explains how a team outside this repo can apply Spring look and feel to their own app with the least manual work. This is the core of Track B.
The Scenario
An engineer builds an internal tool, often with a vibe-coding tool, and relies on rough generated UI. Before finalizing, they want to apply the Spring design system without manually restyling every screen.
The Adoption Kit
To support this, Spring ships an adoption kit, not just components:
@spring/ds-react(components)- generated token CSS
- a Tailwind or token preset
- an AI rules and skills bundle
- a migration prompt and checklist
- a component gap matrix
The "Springify Existing App" Workflow
flowchart TD
install["1. Install package + token CSS"]
preset["2. Add Tailwind / token preset"]
rules["3. Add Spring AI rules"]
audit["4. Audit existing UI"]
map["5. Map current UI to Spring components"]
one["6. Convert one page first"]
review["7. Review and iterate"]
rest["8. Apply to the rest of the app"]
gaps["9. Log component gaps"]
install --> preset --> rules --> audit --> map --> one --> review --> rest --> gaps
gaps --> map
The AI follows clear rules: replace generic buttons and inputs with Spring components, use Spring tokens instead of raw values, keep business logic intact, and report missing components instead of inventing one-off UI.
Adoption Layers
Not every component will exist for every host app, so adoption is layered:
| Layer | What is adopted | Pass criteria |
|---|---|---|
| L1. Tokens only | CSS variables, color, type, spacing, radius | App shifts to Spring look without component rewrites |
| L2. Tokens + primitives | Buttons, inputs, cards, selectors | Core interactions use @spring/ds-react |
| L3. Product modules | AppFlow shell, loan cards, plan cards | Product UI becomes reusable |
| L4. Full flow package | @spring/personal-loan-appflow or equivalent | A full journey runs outside the gallery |
Success Measures
- A host app reaches Spring look and feel in under ~4 hours for the pilot scope.
- 70-90% of common UI maps to existing DS components or tokens.
- Manual style edits drop after applying tokens and the preset.
- A new engineer can follow the guide without live support.
- Missing components are documented and prioritized, not patched ad hoc.
Note:
@spring/ds-reactis currently private and source-consumed. The L1+L2 layers can work through CSS and token import before any npm publishing decision. Publishing is gated by the Phase 3 architecture decision.
10. Validation And Learning Strategy
Validation means learning whether the product works for people and whether the system can scale. Local commands are necessary checks but not the whole picture.
V1 Live Prototype Readiness
| Test | Required for V1 |
|---|---|
| Manual happy-path walkthrough | Yes |
| Standalone app run | Yes |
| Flow map preview | Yes |
npm run lint and npm run build | Yes if implementation changes land |
npm run build:personal-loan | Recommended |
Measures We Track Through The Project
| Measure | Why it matters |
|---|---|
| Happy-path completion | Proves the core journey works |
| Missing or edge-case page count | Sizes the Track A backlog |
| Standalone app stability | Proves the library carries a full app |
| Feedback themes by audience | Drives the direction decision |
| Time to apply Spring theme | Proves adoption speed |
| Manual edits required | Proves how injectable the system is |
| Percent of UI mapped to DS | Proves component coverage |
| Missing component count | Builds the component backlog |
| Setup success without live support | Proves the guide is usable |
| Before/after review confidence | Proves the work improved the product |
Feedback Becomes Iteration
| Step | Output |
|---|---|
| Capture | Notes grouped by screen, component, copy, and architecture |
| Tag | Each finding marked value, usability, feasibility, or viability |
| Prioritize | Severity, frequency, and business impact set the order |
| Improve | The team applies the highest-impact changes |
| Re-test | The updated work is reviewed again before it is called done |
11. Decision Framework
Use this to decide what to do next without overloading any single phase.
| Activity | Start when | Required gate |
|---|---|---|
| Ship live prototype | Now | V1 scope locked |
| Full implementation (Track A) | After M2 direction is locked | Stakeholders walked the flow; backlog prioritized |
| Platform enhancement (Track B) | After M2, finalized at M3 | Architecture decision approved |
| Usability improvements | Continuous after V1 | A baseline prototype exists |
| Token / theme work (Track C) | After core track is validated | Token architecture supports overrides |
| Playground delivery (Track D) | After feedback loop is live | A graduation path is defined |
| External npm publish | After M3 | Architecture decision signed |
| Rebranding / new brand | After injectable adoption is proven | Token-driven theming works |
Quick answers for meetings
- "Can we rebrand for a partner next sprint?" Not yet. First prove injectable adoption and token theming.
- "Can we add feature Y?" Yes if M2 feedback prioritized it and it reduces a named risk.
- "Can we improve copy on a step?" Yes, anytime after V1.
- "Can we publish to npm?" After the Phase 3 architecture decision.
- "When is the flow live?" V1 target is ~Jul 13, 2026. It is a prototype, not production.
12. Governance And Ownership
| Role | Responsibilities |
|---|---|
| Product manager | Roadmap, scope, success measures, review cadence, priorities |
| Product designer | Visual direction, usability, states, brand readiness |
| Engineering lead | Package boundaries, implementation quality, architecture, validation |
| DevOps lead | Deployment, CI, environments, publish path, access |
| QA / reviewer | Walkthrough checklist, regression notes, release confidence |
| Stakeholders | Business viability, product narrative, sharing approval |
Decision Log Template
| Date | Decision | Owner | Risk addressed | Follow-up |
|---|---|---|---|---|
| TBD | V1 scope locked | PM | Value | Confirm blockers |
| TBD | Track direction chosen | PM + Eng | Value + Feasibility | Plan the track |
| TBD | Architecture approved | Eng + DevOps | Feasibility | Start the track |
Cadence
| Cadence | Participants | Purpose |
|---|---|---|
| Publish-sprint standup | PM, design, engineering | V1 blockers and scope |
| Architecture sync | Engineering, DevOps, PM | Package, CI, deploy, adoption |
| End-of-phase review | PM, design, stakeholders, engineering, DevOps | Review evidence, plan the next wave |
13. Risks And Mitigations
| Risk | Impact | Mitigation |
|---|---|---|
| V1 scope expands beyond 1-2 weeks | Publish slips, learning starts late | Lock scope to the happy path; defer the rest |
| "Prototype" mistaken for production | Wrong expectations | Label all URLs as prototype |
| Direction decision is skipped | Tracks compete for the same time | Treat M2 as a real gate with a written choice |
| Architecture decided too late | Track work becomes rework | Finalize structure in Phase 3 before scaling |
| Package not ready for adoption | Host apps cannot adopt predictably | Validate L1+L2 via CSS before npm publishing |
| Theme or rebrand starts too early | One-off forks and token drift | Gate behind proven adoption |
| Playground becomes a dumping ground | Experiments confused with the real DS | Add status, ownership, and graduation rules |
| Not enough iteration time | Weak outcomes shipped as done | Each phase includes a feedback-and-improve loop |
14. Kickoff Agenda
- Confirm the vision: Spring Design Library as an internal product platform.
- Confirm the first deliverable: live Personal Loan prototype (happy path).
- Review V1 scope: what is in and what is deferred.
- Assign owners for design, engineering, DevOps, QA, and stakeholder review.
- Confirm review audiences and dates for Phase 2.
- Confirm the M2 decision gate: how we choose the future track.
- Confirm architecture questions to answer by Phase 3.
- Confirm that theme and Playground work is gated behind proven adoption.
Open Questions For Leadership
| Question | Why it matters |
|---|---|
| Who approves the V1 publish? | Avoids unclear release ownership |
| Which group reviews first? | Shapes the demo script |
| After V1, do we lean toward full implementation or platform enhancement? | Sets the M2 decision |
| Is the current flow the future AppFlow or a Variant B? | Decides Track A direction |
| Is the first injectable pilot internal or partner-facing? | Changes packaging and security assumptions |
| Which metric matters most: speed, consistency, adoption, or conversion? | Helps prioritize iteration waves |
15. Definition Of Done
Live Prototype (V1) Done
- Standalone publish URL is available.
- Happy path runs without manual engineering help.
- Manual walkthrough checklist is complete.
- Known limitations are documented.
Learn And Decide Done
- Designer, stakeholder, developer, and DevOps feedback is captured and tagged by risk.
- A single future track is chosen and written down with its reason.
- A prioritized backlog has owners.
Architecture Done
- Package boundaries, consumption model, CI, and deploy path are approved.
- A clean-workspace import smoke test passes.
Chosen Track Done
- Track A: missing pages and edge cases complete; future role decided.
- Track B: a host app adopts tokens and components via the guide; adoption time and manual edits measured.
Theme / Playground Done
- Theme switches without forking components, with accessibility checks.
- At least one Playground prototype is delivered, reviewed, and graduated.
16. Related Planning Pack
This kickoff plan is the leadership-facing summary. Use these for execution detail: