Conversation
tomas-stefano
commented
Feb 4, 2026
- Restructure with clear Table of Contents and In Depth sections
- Add architecture diagram and data flow diagrams
- Add tutorial wizard with conditional branching (nationality → visa flow)
- Document all conditional edge types (simple, conditional, multiple, custom)
- Add In Depth sections for Repositories, Steps, Conditional Edges, Route Strategies
- Document all repository types with examples and encryption
- Add WizardState migration example
- Document step attribute uniqueness requirement
- Add Step Operators documentation with use: and add: examples
- Add performance caveat about caching API calls in predicates
- Update views to use GOV.UK Design System form builder
- Add Advanced section for custom implementations
1. Restructure with clear Table of Contents and In Depth sections 2. Add architecture diagram and data flow diagrams 3. Add tutorial wizard with conditional branching (nationality → visa flow) 4. Document all conditional edge types (simple, conditional, multiple, custom) 5. Add In Depth sections for Repositories, Steps, Conditional Edges, Route Strategies 6. Document all repository types with examples and encryption 7. Add WizardState migration example 8. Document step attribute uniqueness requirement 9. Add Step Operators documentation with use: and add: examples 10. Add performance caveat about caching API calls in predicates 11. Update views to use GOV.UK Design System form builder 12. Add Advanced section for custom implementations
inulty-dfe
left a comment
There was a problem hiding this comment.
Good work cleaning this up 👍
I would explain what methods are available in the StateStore:
-
Dynamic method look up of the current step
- methods are called on any step (first_name is "declared" but can only be evaluated on the step that defines first_name as an attribute.
-dynamic methods = step attributes
-repositoryis available, dynamic step attributes are available, what else? -
transform_for_(read|write)on repository is key to knowing how to turn data in the system into data for the data store and vica versa. Especially as a way of dealing the step attribute uniqueness constraint (contact_email, other_email) -
I'd name this memoization rather than caching
def thing
@thing ||= method_call
end- Mention backlinks using @wizard.previous_step_path
1. Move Getting Started tutorial to be first section after Installation 2. Add inspect output example to Wizard section 3. Add Back Links section with previous_step_path(fallback:) usage 4. Change "caching" to "memoization" for predicates performance section 5. Remove duplicate Skip Steps section (keep detailed In Depth version) 6. Fix encryption documentation to use correct encrypted:/encryptor: API 7. Add Multiple Wizard Instances section explaining state_key usage 8. Expand DynamicRoutes documentation with complete example 9. Add Custom Repository Transform section for transform_for_read/write 10. Update StateStore section with available methods table 11. Fix code indentation issues
|
Thanks for the feedback. All actions actioned! |
avinhurry
left a comment
There was a problem hiding this comment.
README is getting a bit long (~2200 lines). It's fine for now but if it keeps expanding, it might be worth splitting into docs/.
Overall solid improvement. It's much clearer and more complete now. The tutorial flow and in depth sections will hopefully help new users a lot.