Rapid Application Development with Code Generation
Table of Contents
IntroductionLukas Ruebbelke introduces the course by providing an overview of the material to be covered and the course's end goal. A demonstration of a possible end project for this course is also covered in this segment.
String ManipulationLukas discusses the various functions used for string manipulation, including Array.split, Array.join, Array.map, and Array.reduce. A code example walkthrough of using .split and .join to manipulate strings is also provided in this segment.
Dynamically Invoking MethodsLukas live codes dynamically invoking methods, including a single invocation, sequenced invocation, mapped invocation, and reduced invocation. The techniques used in this segment will be used as a foundation for the tools created in this course.
Nouns, Verbs, Conditionals, & IteratorsLukas discusses having the goal of gaining a deeper understanding of what is already understood. The concept of mastery of a subject being boiled down to the deep knowledge of its essential parts is introduced in this segment.
Rapid Prototyping MindsetLukas discusses limiting beliefs around rapid prototyping, the barrier between interactive mocks and high-fidelity prototypes, and the relationship between skill and effort. The concept of prototypes being disposable because they are immutable and not because they are inferior is introduced in this segment.
Prototyping Q&ALukas answers student questions regarding if call and apply will be covered, how to lead a conversation regarding throwing away versus productizing a prototype, and what metrics can be used to validate trying a new idea.
Code Generation OverviewLukas discusses managing code complexity, vertical development, horizontal development, and emerging patterns. When clear functional cohesion is achieved from cleanly abstracted layers, natural patterns of convention will emerge.
Architecture OverviewLukas discusses architecture patterns used to condense and simplify codebases and different code layers being conventional or complex. Examples of reduced segments of code, including actions, selectors, reducers, wiring, HTTP services, and containers, are also provided in this segment.
Domain ModelsLukas discusses making inferences from domain models and utilizing code generators to build forms quickly. A student's question regarding dynamically generating props is also discussed in this segment.
Code Snippets DemoLukas demonstrates generating a props schema with dynamic variables to assist with quickly building forms while avoiding copy and pasting code.
Utility FunctionsLukas discusses the challenge of model name variations, experimenting with building a pre-existing library for better understanding, and walks through examples of using and combining simple utility functions for manipulating text.
Model Name VariationsLukas walks through building out a name variation generator, including base variations, plural versions, and adding parameters. This domains model variations object can be used to quickly and efficiently hydrate templates.
CLILukas demonstrates utilizing CLIs to quickly generate the entire structure of an application, including placeholder components and redux slices for defined entities. A student's question regarding how to adapt this approach to changes within the domain model is also covered in this segment.
GeneratorsLukas walks through generating templates and updating an Axios template to generate the appropriate domain model. A brief walkthrough of utilizing a reducer template generator is also provided in this segment.
Generating LayersLukas discusses the differences between generating a single template output and generating all of the templates. A demonstration of defining schemas, inserting them into an array, looping over the array, and reducing them to an output is also provided in this segment.
Generating StacksLukas walks through how to generate an entire stack by defining a collection of layers, iterating over the collection, capturing each layer, and reducing them into a single piece of code.
RAD Q&ALukas answers student questions regarding what to do with the generated molds when building the application and if tests should be generated alongside the generated code. This segment also covers how a project would develop from the design of the domain models to deployment.
Generating ReducersLukas demonstrates generating reducers to assist with event storming and further discusses how a project develops from models to deployment. Mapping out an event flow to help understand how a user can interact with a system.
DeploymentLukas walks through implementing the functionality to copy the generated code to the clipboard using the npm package clipboard.js. A brief discussion regarding implementing the functionality to download and package a project into a zip file is also provided in this segment.
Mock API GenerationLukas demonstrates mock API generation functionality using faker.js to generate fake data and moment.js to generate dates.
Wrapping UpLukas wraps up the course by providing personal links, closing thoughts regarding this course, and discussing how to create a mock API synced with actual code. Student questions regarding how easy it is to maintain templates, how to decide to work on the generator instead of building the code directly, tips for handling non trivial data types, and using premade tools for mock data are also covered in this segment.