I’ll give you the short version of how I got this to work:
# Remove all current NPM packages, globally, from the system
$ npm ls -gp --depth=0 | awk -F/node_modules/ '{print $2}' | grep -vE '^(npm|)$' | xargs -r npm -g rm
$ npm ls
/home/quid
└── (empty)
$ git clone https://github.com/circlespainter/daml-rental.git
# Follow the instructions as per the README.md
Critical point, in relation to TERMINAL 4:
$ cd ui
$ yarn
$ yarn start
# There will be a warning:
# Browserslist: caniuse-lite is outdated. Please run next command `yarn upgrade`
# **DO NOT UPGRADE**, the 'daml-rental' app will break
Error from 'yarn upgrade'
#### Remove NPM Modules Globally
quid ~ $ npm ls -gp --depth=0 | awk -F/node_modules/ '{print $2}' | grep -vE '^(npm|)$' | xargs -r npm -g rm
quid ~ $ npm ls
/home/quid
└── (empty)
$ cd ~/Git
$ rm -rf daml-rental
rm: cannot remove 'daml-rental/ui/node_modules/@typescript-eslint/typescript-estree/node_modules/.bin/semver': Permission denied
rm: cannot remove 'daml-rental/ui/node_modules/@babel/plugin-transform-runtime/node_modules/.bin/semver': Permission denied
rm: cannot remove 'daml-rental/ui/node_modules/webpack/node_modules/.bin/acorn': Permission denied
rm: cannot remove 'daml-rental/ui/node_modules/react-scripts/node_modules/@babel/core/node_modules/.bin/semver': Permission denied
rm: cannot remove 'daml-rental/ui/node_modules/babel-preset-react-app/node_modules/.bin/semver': Permission denied
rm: cannot remove 'daml-rental/ui/node_modules/resolve-url-loader/node_modules/.bin/json5': Permission denied
rm: cannot remove 'daml-rental/ui/node_modules/fork-ts-checker-webpack-plugin/node_modules/.bin/semver': Permission denied
$ sudo rm -rf daml-rental
$ ls daml-rental
ls: cannot access 'daml-rental': No such file or directory
## Reinstall Daml Rental
$ git clone https://github.com/circlespainter/daml-rental.git
Cloning into 'daml-rental'...
remote: Enumerating objects: 135, done.
remote: Counting objects: 100% (135/135), done.
remote: Compressing objects: 100% (101/101), done.
remote: Total 135 (delta 48), reused 102 (delta 25), pack-reused 0
Receiving objects: 100% (135/135), 228.83 KiB | 1.05 MiB/s, done.
Resolving deltas: 100% (48/48), done.
$ cd daml-rental
$ clear && ls -al
total 40
drwxrwxr-x 6 quid quid 4096 Apr 14 13:55 .
drwxrwxr-x 12 quid quid 4096 Apr 14 13:55 ..
drwxrwxr-x 3 quid quid 4096 Apr 14 13:55 cleanup-trigger
drwxrwxr-x 8 quid quid 4096 Apr 14 13:55 .git
-rw-rw-r-- 1 quid quid 48 Apr 14 13:55 .gitignore
drwxrwxr-x 4 quid quid 4096 Apr 14 13:55 ledger
-rw-rw-r-- 1 quid quid 639 Apr 14 13:55 LICENSE
-rw-rw-r-- 1 quid quid 5019 Apr 14 13:55 README.md
drwxrwxr-x 4 quid quid 4096 Apr 14 13:55 ui
## [TERMINAL 4]
quid ~/Git/daml-rental $ cd ui
quid ~/Git/daml-rental/ui $ yarn
yarn install v1.22.5
[1/4] Resolving packages...
[2/4] Fetching packages...
info fsevents@2.1.2: The platform "linux" is incompatible with this module.
info "fsevents@2.1.2" is an optional dependency and failed compatibility check. Excluding it from installation.
info fsevents@1.2.9: The platform "linux" is incompatible with this module.
info "fsevents@1.2.9" is an optional dependency and failed compatibility check. Excluding it from installation.
[3/4] Linking dependencies...
warning " > @testing-library/user-event@7.2.1" has unmet peer dependency "@testing-library/dom@>=5".
warning " > material-table@1.56.1" has unmet peer dependency "@date-io/core@^1.3.6".
warning "material-table > @material-ui/pickers@3.2.9" has unmet peer dependency "@date-io/core@^1.3.6".
[4/4] Building fresh packages...
Done in 52.55s.
quid ~/Git/daml-rental/ui $ yarn start
Starting the development server...
Browserslist: caniuse-lite is outdated. Please run next command `yarn upgrade`
Compiled successfully!
You can now view ui in the browser.
Local: http://localhost:3000/
On Your Network: http://192.168.1.150:3000/
Note that the development build is not optimized.
To create a production build, use yarn build.
Starting the development server...
$ Ctrl-C
$ yarn upgrade
$ yarn start
## Console Error Output
TypeError [ERR_INVALID_ARG_TYPE]: The "path" argument must be of type string. Received undefined
at new NodeError (node:internal/errors:329:5)
at validateString (node:internal/validators:129:11)
at Object.join (node:path:1081:7)
at noopServiceWorkerMiddleware (/home/quid/Git/daml-rental/ui/node_modules/react-dev-utils/noopServiceWorkerMiddleware.js:14:26)
at Layer.handle [as handle_request] (/home/quid/Git/daml-rental/ui/node_modules/express/lib/router/layer.js:95:5)
at trim_prefix (/home/quid/Git/daml-rental/ui/node_modules/express/lib/router/index.js:317:13)
at /home/quid/Git/daml-rental/ui/node_modules/express/lib/router/index.js:284:7
at Function.process_params (/home/quid/Git/daml-rental/ui/node_modules/express/lib/router/index.js:335:12)
at next (/home/quid/Git/daml-rental/ui/node_modules/express/lib/router/index.js:275:10)
at launchEditorMiddleware (/home/quid/Git/daml-rental/ui/node_modules/react-dev-utils/errorOverlayMiddleware.js:20:7)
at Layer.handle [as handle_request] (/home/quid/Git/daml-rental/ui/node_modules/express/lib/router/layer.js:95:5)
at trim_prefix (/home/quid/Git/daml-rental/ui/node_modules/express/lib/router/index.js:317:13)
at /home/quid/Git/daml-rental/ui/node_modules/express/lib/router/index.js:284:7
at Function.process_params (/home/quid/Git/daml-rental/ui/node_modules/express/lib/router/index.js:335:12)
at next (/home/quid/Git/daml-rental/ui/node_modules/express/lib/router/index.js:275:10)
at handleWebpackInternalMiddleware (/home/quid/Git/daml-rental/ui/node_modules/react-dev-utils/evalSourceMapMiddleware.js:42:7)
-----
Failed to compile.
## File Error Warning
## I edited Line 67, removed the {}, added (), no change
# File: /home/quid/Git/daml-rental/ui/src/App.tsx
TypeScript error in /home/quid/Git/daml-rental/ui/src/App.tsx(67,15):
No overload matches this call.
Overload 1 of 2, '(props: { component: ElementType<any>; } & { children: string | number | boolean | {} | ReactElement<any, string | ((props: any) => ReactElement<any, any> | null) | (new (props: any) => Component<...>)> | ReactNodeArray | ReactPortal; disableGutters?: boolean | undefined; fixed?: boolean | undefined; maxWidth?: false | ... 5 more ... | undefined; } & CommonProps<...> & Pick<...>): Element', gave the following error.
Type 'ReactNode' is not assignable to type 'string | number | boolean | {} | ReactElement<any, string | ((props: any) => ReactElement<any, any> | null) | (new (props: any) => Component<any, any, any>)> | ReactNodeArray | ReactPortal'.
Type 'undefined' is not assignable to type 'string | number | boolean | {} | ReactElement<any, string | ((props: any) => ReactElement<any, any> | null) | (new (props: any) => Component<any, any, any>)> | ReactNodeArray | ReactPortal'.
Overload 2 of 2, '(props: DefaultComponentProps<ContainerTypeMap<{}, "div">>): Element', gave the following error.
Type 'ReactNode' is not assignable to type 'string | number | boolean | {} | ReactElement<any, string | ((props: any) => ReactElement<any, any> | null) | (new (props: any) => Component<any, any, any>)> | ReactNodeArray | ReactPortal'.
Type 'undefined' is not assignable to type 'string | number | boolean | {} | ReactElement<any, string | ((props: any) => ReactElement<any, any> | null) | (new (props: any) => Component<any, any, any>)> | ReactNodeArray | ReactPortal'. TS2769
65 | <div>
66 | <Container maxWidth="xl" className={classes.container}>
> 67 | {props.children}
| ^
68 | </Container>
69 | </div>
70 | )
## Google Chrome Browser Error Output:
TypeError [ERR_INVALID_ARG_TYPE]: The "path" argument must be of type string. Received undefined
at new NodeError (node:internal/errors:329:5)
at validateString (node:internal/validators:129:11)
at Object.join (node:path:1081:7)
at noopServiceWorkerMiddleware (/home/quid/Git/daml-rental/ui/node_modules/react-dev-utils/noopServiceWorkerMiddleware.js:14:26)
at Layer.handle [as handle_request] (/home/quid/Git/daml-rental/ui/node_modules/express/lib/router/layer.js:95:5)
at trim_prefix (/home/quid/Git/daml-rental/ui/node_modules/express/lib/router/index.js:317:13)
at /home/quid/Git/daml-rental/ui/node_modules/express/lib/router/index.js:284:7
at Function.process_params (/home/quid/Git/daml-rental/ui/node_modules/express/lib/router/index.js:335:12)
at next (/home/quid/Git/daml-rental/ui/node_modules/express/lib/router/index.js:275:10)
at launchEditorMiddleware (/home/quid/Git/daml-rental/ui/node_modules/react-dev-utils/errorOverlayMiddleware.js:20:7)
at Layer.handle [as handle_request] (/home/quid/Git/daml-rental/ui/node_modules/express/lib/router/layer.js:95:5)
at trim_prefix (/home/quid/Git/daml-rental/ui/node_modules/express/lib/router/index.js:317:13)
at /home/quid/Git/daml-rental/ui/node_modules/express/lib/router/index.js:284:7
at Function.process_params (/home/quid/Git/daml-rental/ui/node_modules/express/lib/router/index.js:335:12)
at next (/home/quid/Git/daml-rental/ui/node_modules/express/lib/router/index.js:275:10)
at handleWebpackInternalMiddleware (/home/quid/Git/daml-rental/ui/node_modules/react-dev-utils/evalSourceMapMiddleware.js:42:7)
## EOF
Otherwise, continue as per the instructions and it works great 
For those whom are interested:
Daml Rental app File Structure
daml_rental_fs_using_tree.daml (3.7 MB)
Anyone else who is interested in Rental Contracts and is happy to work together, to help Fabio extend this, please ping me.
Also @fabio.tudone I have forked the project, and submitted a very minor PR. More to follow.
EDIT: I removed the daml-rental-yarn error as a file, and included it as formatted code using the [Hide Details] function. I also went to do the same thing for the daml-rental/tree output
but I received a 413 Error size too big
from the blog.