What does the architecture look like?August 2, 2019 at 9:56pm
Prodo's architecture is inspired by the modern front-end architecture called Flux (best known for its uni-directional data flow), but with a few tweaks, and for your entire stack.
It relies on:
- a holistic concept of state, capturing everything from your client’s UI state to your server's database;
- a concept of views for your client, consisting of pure React functions which are automatically connected to your state; and
- a concept of actions, consisting of asynchronous functions running on client or server side.
Unlike other frameworks, Prodo diligently ensures that your state remains JSON-serialisable at all time and captures everything that is needed to reproduce what a user would see on their screen - including the current route, the authentication state, or the data in localStorage.
Actions are then used to modify the state, trigger other actions, fetch data by invoking effects, or manage subscriptions. Triggering a server action from the client is as simple as calling a function, with TypeScript keeping everything typed on both sides. The explicit use of effects and subscriptions then enables you to keep your actions “pure”, meaning that you can record and replay everything that matters during testing and development.