Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/lundegaard/react-union

⚛️ Collection of tools allowing to React.js applications to run on specific server-side environments such as Content Management Systems (CMS) or Portals.
https://github.com/lundegaard/react-union

bootstraper cms development-tools liferay portal react redux wordpress

Last synced: about 18 hours ago
JSON representation

⚛️ Collection of tools allowing to React.js applications to run on specific server-side environments such as Content Management Systems (CMS) or Portals.

Awesome Lists containing this project

README

        



React Union



by Lundegaard


🖍️ 🛡 🚀


Easy React integration into legacy systems


The React Union project is a collection of tools that allow you to build modern React applications for content management systems or enterprise portals.


See our documentation site.


Build status


Greenkeeper badge


Github

MIT License


Downloads


Version

## Tools and libraries

* [React Union](https://github.com/lundegaard/react-union/tree/master/packages/react-union) - React component that can assemble an application with one virtual DOM from multiple HTML fragments.
* [React Union Scripts](https://github.com/lundegaard/react-union/tree/master/packages/react-union-scripts) - JavaScript SDK focused on a large codebase. Supports multiple entry points, async code-splitting, sharing the code between modules, etc.
* [ESLint config](https://github.com/lundegaard/react-union/tree/master/packages/eslint-config-react-union) - ESLint configuration that is used within the React Union project.
* [Babel preset](https://github.com/lundegaard/react-union/tree/master/packages/babel-preset-react-union) - Babel preset used within the React Union project.

## Talks

- [React Union: Write once, plug anywhere](https://hero35.com/react-finland/2019/react-union-write-once-plug-anywhere) by [tommmyy](https://github.com/tommmyy)
- [React Union: Way to OpenSource](https://www.youtube.com/watch?v=B9G_3UjYOYE&t=856s&ab_channel=Liferay) by [jamescoq](https://github.com/jamescoq)
- [Live demo: React.js portals and modern js apps for cms](https://www.webexpo.net/prague2018/talk/live-demo-react-js-portals-and-modern-js-apps-for-cms) by [tommmyy](https://github.com/tommmyy)

## Examples

* [Basic boilerplate](https://github.com/lundegaard/react-union/tree/master/boilerplates/react-union-boilerplate-basic) - Reference usage of React Union in a simple application.
* [Monorepo boilerplate](https://github.com/lundegaard/react-union/tree/master/boilerplates/react-union-boilerplate-monorepo) - For larger projects, a monorepo (Yarn Workspaces) is a good choice.
* [Integration with Liferay](https://github.com/lundegaard/react-union/tree/master/boilerplates/react-union-boilerplate-liferay-basic)

More examples are coming! See the [roadmap](https://github.com/lundegaard/react-union/blob/master/ROADMAP.md).

## Content management systems, enterprise portals and React applications

There are some problems in these types of systems that need to be addressed in order to achieve a proper developer experience. This includes features such as HMR, application state time travel, ECMAScript 7+ syntax, etc. Additionally, there are problems regarding the nature of CMS and Portal solutions.

### What are these problems?

* **Ad-hoc component rendering.** We don't know the combination of widgets for any particular URL in advance. It is due to the fact that the user is able to customize what widgets should be rendered.
* **Multiple instances of the same widget in one view.** E.g. image galleries, feeds or calendars. This fact adds complexity to managing application state, passing initial data, etc.
* **Sharing and synchronization of data between widgets.** Even though the widgets have to be independent of each other, we have to be able to share the model/data they are working with.
* **Build optimization.** Application code has to be split into several chunks to only serve code necessary for the current page.
* **Passing data from a server.** There are cases where our widgets need to be provided data from a server, e.g. information about the user, preferences, color schema, etc.