iMazing needed bring their licensing system in-house with a short deadline and asked me to come and help them rebuild their store in Typescript and React. The store had various purchasing flows depending on how the user was accessing it (for example, it could run in their website or be embedded in iMazing itself) which motivated the creation of a expression language to select available products based on various predicates. This allows the store to be easily updated in the future as products and conditions change. The store also had to work on browsers back to IE11 which presented some interesting challenges.
The backend was written using Node, Express and MongoDB and the frontend used Typescript, React, Redux and Redux Saga. Core code was shared between backend and frontend using npm modules, Webpack and Lerna.
The store also uses Purify, a library providing a more functional style of programming for Typescript including algebraic data types and codecs.
You can see the store in action at https://www.imazing.com/store