-
Notifications
You must be signed in to change notification settings - Fork 0
Riddler Vision
There are four main software components:
- The Admin Tool
- The Admin Server(s)
- The Guide(s)
- The Client(s)
Some of the core building blocks are:
- Liquid - Safe, customer-facing template language.
- Predicator - Safe, business user facing boolean predicate engine.
- Statecharts - execution of Journeys. In TypeScript - XState is used. In Elixir Statifier is used (Work In Progress).
The Admin Tool is implemented as a React TypeScript application. It is where people will create, test and manage Content and Paths.
The Admin Tool has its own internal data store that is used for editing, previewing and testing Content before publication.
Once Content has been approved and packaged into a versioned document, it can be published to a data stream where Guides will pick it up and store locally.
After being published, admins can create or update a Slug to point to the new document.
Versioned ConditionDefinitions, ContentBlockDefinitions and PathDefinitions, and management of Slugs.
The Admin Server is a RESTish API and has specifications, is polyglot and has implementations in:
- TypeScript
- Elixir (coming soon)
- Ruby (coming soon)
A library that can be included in other software to generate dynamic content. The Guide is in charge of:
- Actions - interactions with the surrounding software and architecture
- Conditions - evaluating boolean predicates
- Journeys - storing temporary state as Participants progress through a Path.
- Statecharts - implementing the logic and state machine defined in the Path.
- Content Generation - generated content in API consumable form (not rendered to HTML ...)
- Content Rendering - render Content as Images, HTML, Email
The Guide has specifications, is polyglot and has implementations in:
- TypeScript
- Elixir (coming soon)
- Ruby (coming soon)
The Client consumes the JSON from a Guide and renders it to HTML/native components. It has very specific logic around rendering, performing client side validation. It does not currently implement any core business logic (which is handled in the Guide) - it will request content for a Slug (e.g. "onboarding") and be returned a ContentElement which it render to the appropriate medium.
- React