An opinionated framework for creating React + Nodejs apps and APIs.
Reactium follows Domain Drive Design (DDD) and aims to ease the creation of complex applications by connecting the related pieces of the software into an ever-evolving model. DDD focuses on three core principles:
- Focus on the core domain and domain logic:Spend less time on the framework and more time on the features.
- Base complex designs on models of the domain:Use the domain models to drive your features and rely on the predictability of each domain to determine velocity and efficiency.
- Constantly collaborate with domain experts:In order to improve the application model and resolve any emerging domain-related issues, keep the core domain in mind and learn other domains as they emerge.
The Advantages of DDD
- Eases Communication:With an early emphasis on establishing a common and ubiquitous language related to the domain model of the project, teams will often find communication throughout the entire development life cycle to be much easier. Typically, DDD will require less technical jargon when discussing aspects of the application, since the ubiquitous language established early on will likely define simpler terms to refer to those more technical aspects.
- Improves Flexibility:Since DDD is based around modularity, nearly everything within the domain model will be based on an object and will, therefore, be quite encapsulated. This allows for various components, or even the entire system as a whole, to be altered and improved on a regular, continuous basis.
- Emphasizes Domain Over Interface:Since DDD is the practice of building around the concepts of domain and what the domain experts within the project advise, DDD will often produce applications that are accurately suited for and representative of the domain at hand, as opposed to those applications which emphasize the UI/UX first and foremost. While an obvious balance is required, the focus on domain means that a DDD approach can produce a product that resonates well with the audience associated with that domain.
- Encourages Iterative Practices:DDD practices strongly rely on constant iteration and continuous integration in order to build a malleable project that can adjust itself when necessary. Some organizations may have trouble with these practices, particularly if their past experience is largely tied to less-flexible development models, such as the waterfall model or the like.
- Built-in Design System:No need to have a separate design system like Pattern Lab or Storybook.
- Easy API building:Build a headless application or content management API!
- Robust Command Line Interface:Reactium heavily relies on boiler-plated code to normalize and ease the dev workflow. Creating a component or a design system element can be done with the stroke of a few keys. No need to memorize all the commands, use--flags or follow prompts. You can even customize the CLI by replacing or creating your own commands.
- Easy Deployment:Reactium creates a Node server for both front-end and server side rendering making it easy to deploy to the host of your choice. We even have a docker setup included for you dev-opers.
- Single Page App or Isolated Component Development:Build anything from a full website to a single component and package for distribution.
- Built-in Redux Support:Learning Redux can be hard.
Sure you might have the basics down but building an application with it can quickly escalate to frustration and nightmares. Our simple Redux pattern makes it super easy to build stateful applications.
- Built-in React Router Support:Build routed websites in a single application with no additional setup. Learn more about React Router
- Plugin Architecture:Dynamic composition where there's no need to hard code import statements through out your codebase. Simply renderingzones, register components, add hooks, plugin modules and more!