Skip to content

marvelmiles/angular-react-monorepo

Repository files navigation

Angular-React Monorepo Integration Demo

This project demonstrates the seamless integration of Angular and React components within a single monolithic app using the NX Monorepo tools. The primary goal is to leverage the power of both frameworks in a cohesive application that allows Angular to manage routing and state while React is responsible for handling dynamic data visualizations.

Features

  • Monorepo Architecture: Both Angular and React apps live in the same repository, using NX to manage their dependencies and build processes efficiently.

  • Data Visualization: The React component renders interactive charts and visual data representations.

  • Form Input & Validation: Angular manages user input for chart configurations (aspect ratio and colors), validating the input before passing it to the React component.

Architecture

  • Angular: Handles routing and form inputs.

  • React: Responsible for rendering data visualizations, making use of reusable components for dynamic updates.

Key Challenge

  • Shadow DOM Encapsulation Issue

    • Challenge: Initially, I attempted to use Shadow DOM encapsulation for the custom Web Component that renders the React visualizer. However, TailwindCSS and React components do not render properly inside the Shadow DOM due to style isolation.

    • Solution: Instead of using the Shadow DOM, I manually retrieved the DOM from the app.component.html in Angular and mounted the React component onto it. This approach bypasses the style isolation issue, allowing TailwindCSS to be applied globally and making the integration smoother.

✨ Your new, shiny Nx workspace is almost ready ✨.

Learn more about this workspace setup and its capabilities or run npx nx graph to visually explore what was created. Now, let's get you up to speed!

Finish your remote caching setup

Click here to finish setting up your workspace!

Run tasks

To run the dev server for your app, use:

npx nx serve angular-app

To create a production bundle:

npx nx build angular-app

To see all available targets to run for a project, run:

npx nx show project angular-app

These targets are either inferred automatically or defined in the project.json or package.json files.

More about running tasks in the docs »

Add new projects

While you could add new projects to your workspace manually, you might want to leverage Nx plugins and their code generation feature.

Use the plugin's generator to create new projects.

To generate a new application, use:

npx nx g @nx/angular:app demo

To generate a new library, use:

npx nx g @nx/angular:lib mylib

You can use npx nx list to get a list of installed plugins. Then, run npx nx list <plugin-name> to learn about more specific capabilities of a particular plugin. Alternatively, install Nx Console to browse plugins and generators in your IDE.

Learn more about Nx plugins » | Browse the plugin registry »

Learn more about Nx on CI

Install Nx Console

Nx Console is an editor extension that enriches your developer experience. It lets you run tasks, generate code, and improves code autocompletion in your IDE. It is available for VSCode and IntelliJ.

Install Nx Console »

Useful links

Learn more:

And join the Nx community: