Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/clement-joye/umbraco-react-ssr
https://github.com/clement-joye/umbraco-react-ssr
Last synced: 15 days ago
JSON representation
- Host: GitHub
- URL: https://github.com/clement-joye/umbraco-react-ssr
- Owner: clement-joye
- Created: 2022-09-24T09:00:01.000Z (over 2 years ago)
- Default Branch: main
- Last Pushed: 2023-05-05T08:41:39.000Z (over 1 year ago)
- Last Synced: 2024-11-11T15:50:13.284Z (2 months ago)
- Language: C#
- Size: 324 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 2
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# Introduction
Template to run Umbraco CMS alongside React with Server side rendering (SSR) capabilities.
Each component of the solution can be run individually, and a docker-compose is provided for easy deployment online.# Requirements
Ensure that you have the following configuration:
- .NET 6 framework is installed.
- Node v14.x or later is installed.
- Docker is installed (for building and running the solution in docker-compose)*NB1: If you plan to work on the frontend of the application, it can be convenient to have Docker installed.*
*NB2: If you are going to deploy the infrastructure as code, ensure to have Terraform installed on your local machine.*# Overview
The solution is composed of 3 main parts:
- An Umbraco web application
- An Express server
- A React applicationThe Umbraco application is dependent on:
- The React application -> It should be built and exported to `wwwroot` prior to run the web app, so the React files can be served to the client.
- The Express server -> Since each request to a RenderController is making request to the Express server, it should then be running alongside the Umbraco application. Requests will otherwise result in a 404.# Build / run locally
## React application
The react app is configured with [Create-React-App](https://create-react-app.dev/) (CRA).
With the comand line:
> npm run buildThis will build the react application and export copy the output to the `./src/Umbraco.React.Ssr.Web/wwwroot` folder of our Umbraco application, so that our Umbraco web app can serve the files to the clients.
Since the hash is different for every change done on our React app, it also updates `./src/Umbraco.React.Ssr.Web/Views/Partials/_Head.cshtml` with the updated hash for the files to serve.You can run the react app individually for development purpose with:
> npm run start## Express server
With the comand line:
> npm run build:server
> npm run start:serverThis will build the server in the `./src/Umbraco.React.Ssr.FrontEnd/dist` folder and allow it to SSR our react app when Umbraco sends a request to it with the model as payload.
## Umbraco application
With Visual Studio, open the solution `./src/Umbraco.React.Ssr.sln`, build, run.
Via command-line:
> dotnet restore
> dotnet build
> dotnet run**NB**: The umbraco application is dependent on the express server.
If the express server is not running, then the request to the Umbraco application will return 404.**NB**: This template is shipped with umbraco content and settings. To import them, use uSync from the Settings tab backoffice and run Import
## Docker-compose
With the comand line from the root folder:
> docker-compose up -dTo rebuild docker images:
- umbraco-web:
> docker build . -t umbraco-web- express-ssr:
> docker build . -t umbraco-web**NB**: Before building `umbraco-web`, the React application should be built and exported to `wwwroot` beforehand.
**NB**: The React application relies on two environment variables at build time:
- REACT_APP_API_ENDPOINT > defaults to `http://localhost:7000/api/`
- REACT_APP_MEDIA_ENDPOINT > defaults to `http://localhost:7000`Keep this in mind if you plan to deploy the solution online and refer to [Create-React-App documentation](https://create-react-app.dev/docs/adding-custom-environment-variables/) for more info regarding environment variables.