Cuando tenemos lista la aplicación debemos subir la misma a nuestro hosting, para ello debemos empaquetarla utilizando la aplicación npm.
Vamos a crear una aplicación y posteriormente ver los pasos para subir la misma al sitio web.
Crear una aplicación que muestre un tablero de ajedrez y permita mediante drag and drop arrastras piezas.
Como primer paso creamos una aplicación con create-react-app:
npx create-react-app proyecto017
Creamos dos componentes, una llamada Tablero y otra llamada Casilla. Tenemos luego tres componentes en total: App, Tablero y Casilla:

Debemos además modificar el archivo App.js donde creamos una componente de tipo Tablero.
App.js
import Tablero from './Tablero';
function App() {
  
  return (<div>
    <h1>Tablero de ajedrez con Drag and Drop 😀</h1>
    <Tablero/>
  </div>);
}
export default App;
Tablero.js
import Casilla from './Casilla';
import './Tablero.css';
import { useEffect, useState } from "react";
function Tablero() {
    const [tablero, setTablero] = useState(
        [
            ['\u265C', '\u265E', '\u265D','\u265A', '\u265A', '\u265D', '\u265E', '\u265C'],
            ['\u265F', '\u265F', '\u265F','\u265F', '\u265F', '\u265F', '\u265F', '\u265F'],
            ['', '', '','', '', '', '', ''],
            ['', '', '','', '', '', '', ''],
            ['', '', '','', '', '', '', ''],
            ['', '', '','', '', '', '', ''],
            ['\u2659', '\u2659', '\u2659','\u2659', '\u2659', '\u2659', '\u2659', '\u2659'],
            ['\u2656', '\u2658', '\u2657','\u2655', '\u2654', '\u2657', '\u2658', '\u2656']
        ]
    )
    useEffect(() => {
        function drag(ev) {
            ev.dataTransfer.setData("fila", ev.target.attributes.fila.value);
            ev.dataTransfer.setData("columna", ev.target.attributes.columna.value);
            ev.dataTransfer.setData("valor", ev.target.attributes.valor.value);
        }
        function permitirDrop(ev) {
            ev.preventDefault();
        }
        function drop(ev) {
            ev.preventDefault();
            const fila = parseInt(ev.dataTransfer.getData("fila"))
            const columna = parseInt(ev.dataTransfer.getData("columna"))
            const valor = ev.dataTransfer.getData("valor")
            let nuevo = [...tablero];
            for (let f = 0; f < 8; f++) {
                for (let c = 0; c < 8; c++) {
                    if (parseInt(ev.target.attributes.fila.value) === f && parseInt(ev.target.attributes.columna.value) === c) {
                        nuevo[f][c] = valor
                        if (f!==fila || c!==columna)
                            nuevo[fila][columna] = ''
                    }
                }
            }
            setTablero(nuevo)
        }
        const casillas = document.querySelectorAll('.casilla')
        for (let casilla of casillas) {
            casilla.addEventListener('dragstart', drag)
            casilla.addEventListener('dragover', permitirDrop);
            casilla.addEventListener('drop', drop);
        }
        return () => {
            const casillas = document.querySelectorAll('.casilla')
            for (let casilla of casillas) {
                casilla.removeEventListener('dragstart', drag)
                casilla.removeEventListener('dragover', permitirDrop);
                casilla.removeEventListener('drop', drop);
            }
        }
    }, [tablero])
    return (
        <div className="tablero">
            {tablero.map((fila, indicef) => {
                return fila.map((casilla, indicec) => {
                    return (<Casilla valor={casilla} fila={indicef} columna={indicec} key={indicef + indicec} pieza={casilla} color={(indicef + indicec) % 2 === 0 ? 'blanco' : 'negro'} />)
                })
            })}
        </div>
    );
}
export default Tablero
Tablero.cs
.tablero {
    display: grid;
    grid-template-rows: repeat(8, 60px);
    grid-template-columns: repeat(8, 60px);
}
Casilla.js
import './Casilla.css'
function Casilla(props) {
    return (
        <span fila={props.fila} columna={props.columna} draggable="true" className={props.color==='negro'?'casillanegra casilla':'casillablanca casilla'} valor={props.pieza}>{unescape(props.pieza)}</span>
    );
}
export default Casilla
Casilla.css
.casillanegra {
    background-color:gray;
    width: 60px;
    height: 60px;    
    font-size: 50px;
    text-align: center;    
}
.casillablanca {
    background-color:yellow;
    width: 60px;
    height: 60px;    
    font-size: 50px;
    text-align: center;
}
Ya tenemos la aplicación ejecutandose correctamente en forma local en nuestra computadora:

Abrimos el archivo 'package.json' y agregamos la propiedad "homepage":

Disponemos el nombre de dominio donde se ejecutará la aplicación React por ejemplo:
https://www.scratchya.com.ar
Es muy importante tener en cuenta que si almacenamos la aplicación en una subcarpeta de nuestro hosting debemos indicar la misma, por ejemplo yo la almacené en:
https://www.scratchya.com.ar/reactya/proyecto017/
Creamos la aplicación con npm:
npm run build
Debemos subir a nuestro hosting todo el contenido de la carpeta 'build' que se crea con el comando anterior.
Podemos probar ahora la aplicación recuperando la misma desde nuestro hosting: Tablero ajedrez