Declarative User Interfaces Leveraging React, Redux and Apex Microservices
Mark Masterson Ryan Sieve we are here because we like to give presentations
@MarkMastersonSF @RyanSieve we are here because we like to give presentations @Kenandy
WHAT are we doing?
Motivations Revamped UI API first mentality Separate UI and back-end concerns Promote loosely coupled, reusable Apex code Reduce overall development lifecycles
Approach Apex Microservices API Gateway Metadata driven UI Archetypes Component Driven UI
Apex Microservices Simple Generic Interface Receives payload object from requestor Returns successful boolean and response payload object Sync or Async (Via Queueable) Component driven UI
Apex Microservices
API Gateway Custom Metadata API Gateway Simple, packageable Embedded namespace considerations
API Gateway
API Gateway
API Gateway
UI Archetypes Record Detail Form Fields Related Lists Metadata Page Layouts Fieldsets Search Layout Compact Layout
UI Archetypes Metadata Header with Lines Form Fields Lines Related Lists Record Layout Fieldsets Search Layout Compact Layout Schema
UI Archetypes Metadata Lists, Related List, Hierarchal List Form Fields Related Lists Filters Keylist Layout List View Record Layout Related Lists Schema
WHY React and Redux?
React Virtual DOM Large Community Reactabular SDLC Hot Reload Local Development Javascript unit testing frameworks
Redux Predictable state management Unidirectional data flow Reducers Dovetail with API Gateway
UI Components React Component specific to each Salesforce field type Higher order components for Archetypes Factory functions
UI Components
UI Components
Running In Visualforce Page Detail and List overrides Single controller with redirects Lightning Lightning containers once GA Layer in Lightning Events over time Looking to adopt Lightning Data Service
Development Lifecycle Local API Gateway points to mock files within project Hot Reload Feature sketch-in Hybrid API Gateway via REST to interact with Apex Microservices Run application locally, interact with Salesforce org metadata and database Hot Reload Fully fledged interaction with Salesforce Server Webpack module bundler Gulp deployment of Static Resources
Testability Karma (test runner) Mocha (test library/construct) Chai (assertions) Sinon (spy utilities, observe variable assignment) Phantom (headless web browser for testing) Istanbul (test coverage reporting)
thank you @MarkMastersonSF @RyanSieve @Kenandy

Declarative User Interfaces Leveraging React, Redux and Apex Microservices