diff --git a/.gitignore b/.gitignore
index d39eb1d2a80ebaf318efda96ed92ee8a35d18ad1..5eab1a953054b7ff8f1351fd806642aab6872ac2 100644
--- a/.gitignore
+++ b/.gitignore
@@ -138,4 +138,5 @@ npm-debug.log*
 yarn-debug.log*
 yarn-error.log*
 yarn.lock
-.docz/
\ No newline at end of file
+.docz/
+._.DS_Store
\ No newline at end of file
diff --git a/README.md b/README.md
index 5a14922c2dcfce233562b1b292fdc162c061488a..39b360a1e7a8a396baf2b0b094867eaf1f0081a9 100644
--- a/README.md
+++ b/README.md
@@ -48,3 +48,4 @@ yarn start
 
 [react calendar app](https://codesandbox.io/s/kkyvoj97pv?from-embed=&file=/src/index.js)
 
+[Typescript cheatsheet](https://github.com/typescript-cheatsheets/react/blob/main/README.md#hooks)
\ No newline at end of file
diff --git a/package.json b/package.json
index 99e22163dac6a4904005dfcd5ffbd20c7c02e327..fd27481a7b3b71e544d4793bce5f8c66fca1236b 100644
--- a/package.json
+++ b/package.json
@@ -3,6 +3,7 @@
   "version": "0.1.0",
   "private": true,
   "dependencies": {
+    "@hookform/devtools": "^2.2.1",
     "@material-ui/core": "^4.11.3",
     "@testing-library/jest-dom": "^5.11.4",
     "@testing-library/react": "^11.1.0",
@@ -12,10 +13,13 @@
     "@types/react": "^17.0.0",
     "@types/react-dom": "^17.0.0",
     "@types/react-router-dom": "^5.1.7",
+    "axios": "^0.21.1",
     "docz": "^2.3.1",
     "eslint-config-airbnb-typescript": "^12.3.1",
     "react": "^17.0.1",
     "react-dom": "^17.0.1",
+    "react-hook-form": "^6.15.5",
+    "react-intl": "^5.15.5",
     "react-router-dom": "^5.2.0",
     "react-scripts": "4.0.3",
     "typescript": "^4.1.2"
diff --git a/src/App.tsx b/src/App.tsx
index 694bde22cb58786ad40a699c6ee61b0fa05d1e3d..458470b04401c6a1593bef169628b611cd9916d9 100644
--- a/src/App.tsx
+++ b/src/App.tsx
@@ -1,15 +1,17 @@
 import React, { FC } from 'react';
 import { BrowserRouter as Router, Switch, Route } from 'react-router-dom';
+import { HomePage } from './components/HomePage/HomePage';
 import { AuthUser } from './components/AuthUser/AuthUser';
+import { LandingPage } from './components/LandingPage/LandingPage';
 
 export const App: FC = () => (
   <Router>
-    <Switch>
-      <Route path="/">
-        <div data-testid="App">
-          <AuthUser />
-        </div>
-      </Route>
-    </Switch>
+    <div data-testid="App">
+      <Switch>
+        <Route path="/auth" component={AuthUser} />
+        <Route exact path="/" component={LandingPage} />
+        <Route exact path="/home" component={HomePage} />
+      </Switch>
+    </div>
   </Router>
 );
diff --git a/src/components/AuthUser/AuthUser.tsx b/src/components/AuthUser/AuthUser.tsx
index a802575dadc71c3805fc994c76f4639ca05f6cb9..51621049d7d74beaf16d4e6a60f0933d454b2bdd 100644
--- a/src/components/AuthUser/AuthUser.tsx
+++ b/src/components/AuthUser/AuthUser.tsx
@@ -1,12 +1,17 @@
 import React, { FC, useEffect } from 'react';
+import axios from 'axios';
 import Container from '@material-ui/core/Container';
 import { SignInForm } from './SignInForm/SignInForm';
 
 export const AuthUser: FC = () => {
   useEffect(() => {
-    fetch('/api/web/csrf')
-      .then((response) => response.json())
-      .then((data) => sessionStorage.setItem('token', data.token));
+    axios
+      .get('api/web/csrf')
+      .then((response) => {
+        // Check this https://stackoverflow.com/questions/39254562/csrf-with-django-reactredux-using-axios
+        axios.defaults.headers.common['X-CSRFTOKEN'] = response.data.token;
+      })
+      .catch((error) => error);
   }, []);
   return (
     <Container maxWidth="sm">
diff --git a/src/components/AuthUser/SignInForm/InputField.tsx b/src/components/AuthUser/SignInForm/InputField.tsx
new file mode 100644
index 0000000000000000000000000000000000000000..a0093c9c7bacc5ab2a82c2a924b83e12100332f8
--- /dev/null
+++ b/src/components/AuthUser/SignInForm/InputField.tsx
@@ -0,0 +1,46 @@
+import React, { FC } from 'react';
+import { TextField } from '@material-ui/core';
+import { Control, Controller, FieldValues } from 'react-hook-form';
+
+type Props = {
+  /**
+   * Name of the elemement. ex. email, password
+   */
+  name: string;
+  label: string;
+  error: boolean;
+  errorMessage: string;
+  /**
+   * react-hook-form control
+   */
+  control: Control<FieldValues> | undefined;
+  rules: Partial<unknown>;
+};
+
+export const InputField: FC<Props> = (props: Props) => {
+  const { name, label, error, errorMessage, control, rules } = props;
+  return (
+    <Controller
+      name={name}
+      control={control}
+      rules={rules}
+      render={({ onChange, value }) => (
+        <TextField
+          variant="outlined"
+          margin="normal"
+          required
+          fullWidth
+          id={name}
+          label={label}
+          name={name}
+          onChange={onChange}
+          value={value}
+          autoComplete={name}
+          autoFocus
+          error={error}
+          helperText={error && errorMessage}
+        />
+      )}
+    />
+  );
+};
diff --git a/src/components/AuthUser/SignInForm/SignInForm.tsx b/src/components/AuthUser/SignInForm/SignInForm.tsx
index 344b6bfe2b02c9faee2b32f3d7babef32ca63a02..bdb8ad4c499af5173b5d9de5aedb4e55817093e8 100644
--- a/src/components/AuthUser/SignInForm/SignInForm.tsx
+++ b/src/components/AuthUser/SignInForm/SignInForm.tsx
@@ -1,8 +1,11 @@
-import React, { useState } from 'react';
+import React, { FC } from 'react';
+import axios from 'axios';
+import { SubmitHandler, useForm } from 'react-hook-form';
+import { useIntl } from 'react-intl';
 import { createStyles, makeStyles, Theme } from '@material-ui/core/styles';
-import TextField from '@material-ui/core/TextField';
-import Button from '@material-ui/core/Button';
-import { isEmailValid } from './emailValidator';
+import { Button } from '@material-ui/core';
+import { DevTool } from '@hookform/devtools';
+import { InputField } from './InputField';
 
 const useStyles = makeStyles((theme: Theme) =>
   createStyles({
@@ -21,68 +24,87 @@ const useStyles = makeStyles((theme: Theme) =>
   }),
 );
 
-export const SignInForm: React.FC = () => {
-  interface formData {
+// TODO: real time form validation
+export const SignInForm: FC = () => {
+  interface FormData {
     email: string;
     password: string;
-    errors: Array<string>;
   }
 
-  const defaultValues: formData = {
+  const defaultValues: FormData = {
     email: '',
     password: '',
-    errors: [],
   };
-  const [formValues, setFormValues] = useState<formData>(defaultValues);
 
-  const handleSubmit = (event: React.FormEvent): void => {
-    event.preventDefault();
-    const errors: Array<string> = [];
-    if (!isEmailValid(formValues.email)) errors.push('email');
-  };
+  const { control, errors, handleSubmit } = useForm<FormData>({
+    defaultValues,
+  });
 
+  const onSubmit: SubmitHandler<FormData> = (values: FormData) => {
+    axios
+      .post('/api/web/login', {
+        values,
+      })
+      .then((response) => {
+        // Handle server reponse
+      })
+      .catch((error) => {
+        // Handle error
+      });
+  };
+  const intl = useIntl();
   const classes = useStyles();
-
   return (
-    <form className={classes.form} onSubmit={handleSubmit} data-testid="Form">
-      <TextField
-        variant="outlined"
-        margin="normal"
-        required
-        fullWidth
-        id="email"
-        label="Email Address"
-        name="email"
-        autoComplete="email"
-        autoFocus
-        onChange={(event) =>
-          setFormValues({ ...formValues, email: String(event.target.value) })
-        }
-      />
-      <TextField
-        variant="outlined"
-        margin="normal"
-        required
-        fullWidth
-        name="password"
-        label="Password"
-        type="password"
-        id="password"
-        autoComplete="current-password"
-        onChange={(event) =>
-          setFormValues({ ...formValues, password: String(event.target.value) })
-        }
-      />
-      <Button
-        type="submit"
-        fullWidth
-        variant="contained"
-        color="primary"
-        data-testid="Submit"
-        className={classes.submit}
+    <>
+      <form
+        className={classes.form}
+        onSubmit={handleSubmit(onSubmit)}
+        data-testid="Form"
       >
-        Sign In
-      </Button>
-    </form>
+        <InputField
+          name="email"
+          control={control}
+          rules={{
+            validate: (value: string) =>
+              /^[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,}$/i.test(value),
+            required: {
+              value: true,
+              message: intl.formatMessage({ id: 'email' }),
+            },
+          }}
+          label={intl.formatMessage({ id: 'email' })}
+          error={!!errors.email}
+          errorMessage={intl.formatMessage({ id: 'email-error' })}
+        />
+
+        <InputField
+          name="password"
+          control={control}
+          rules={{
+            minLength: 8,
+            maxLength: 60,
+            required: {
+              value: true,
+              message: intl.formatMessage({ id: 'password' }),
+            },
+          }}
+          label={intl.formatMessage({ id: 'password' })}
+          error={!!errors.password}
+          errorMessage={intl.formatMessage({ id: 'password-error' })}
+        />
+
+        <Button
+          type="submit"
+          fullWidth
+          variant="contained"
+          color="primary"
+          data-testid="Submit"
+          className={classes.submit}
+        >
+          Sign In
+        </Button>
+      </form>
+      <DevTool control={control} /> {/* set up the dev tool */}
+    </>
   );
 };
diff --git a/src/components/HomePage/HomePage.tsx b/src/components/HomePage/HomePage.tsx
new file mode 100644
index 0000000000000000000000000000000000000000..99b3448459007f960afbfdacbfefac747d0e5d9a
--- /dev/null
+++ b/src/components/HomePage/HomePage.tsx
@@ -0,0 +1,104 @@
+import React, { FC } from 'react';
+import { createStyles, Theme, makeStyles } from '@material-ui/core/styles';
+import Drawer from '@material-ui/core/Drawer';
+import AppBar from '@material-ui/core/AppBar';
+import CssBaseline from '@material-ui/core/CssBaseline';
+import Toolbar from '@material-ui/core/Toolbar';
+import List from '@material-ui/core/List';
+import Typography from '@material-ui/core/Typography';
+import ListItem from '@material-ui/core/ListItem';
+import ListItemText from '@material-ui/core/ListItemText';
+
+const drawerWidth = 240;
+
+const useStyles = makeStyles((theme: Theme) =>
+  createStyles({
+    root: {
+      display: 'flex',
+    },
+    appBar: {
+      zIndex: theme.zIndex.drawer + 1,
+    },
+    drawer: {
+      width: drawerWidth,
+      flexShrink: 0,
+    },
+    drawerPaper: {
+      width: drawerWidth,
+    },
+    drawerContainer: {
+      overflow: 'auto',
+    },
+    content: {
+      flexGrow: 1,
+      padding: theme.spacing(3),
+    },
+  }),
+);
+
+export const HomePage: FC = () => {
+  const classes = useStyles();
+
+  return (
+    <div className={classes.root}>
+      <CssBaseline />
+      <AppBar position="fixed" className={classes.appBar}>
+        <Toolbar>
+          <Typography variant="h6" noWrap>
+            Moveaid
+          </Typography>
+        </Toolbar>
+      </AppBar>
+      <Drawer
+        className={classes.drawer}
+        variant="permanent"
+        classes={{
+          paper: classes.drawerPaper,
+        }}
+      >
+        <Toolbar />
+        <div className={classes.drawerContainer}>
+          <List>
+            {['Reservation'].map((text) => (
+              <ListItem button key={text}>
+                <ListItemText primary={text} />
+              </ListItem>
+            ))}
+          </List>
+        </div>
+      </Drawer>
+      <main className={classes.content}>
+        <Toolbar />
+        <Typography paragraph>
+          Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do
+          eiusmod tempor incididunt ut labore et dolore magna aliqua. Rhoncus
+          dolor purus non enim praesent elementum facilisis leo vel. Risus at
+          ultrices mi tempus imperdiet. Semper risus in hendrerit gravida rutrum
+          quisque non tellus. Convallis convallis tellus id interdum velit
+          laoreet id donec ultrices. Odio morbi quis commodo odio aenean sed
+          adipiscing. Amet nisl suscipit adipiscing bibendum est ultricies
+          integer quis. Cursus euismod quis viverra nibh cras. Metus vulputate
+          eu scelerisque felis imperdiet proin fermentum leo. Mauris commodo
+          quis imperdiet massa tincidunt. Cras tincidunt lobortis feugiat
+          vivamus at augue. At augue eget arcu dictum varius duis at consectetur
+          lorem. Velit sed ullamcorper morbi tincidunt. Lorem donec massa sapien
+          faucibus et molestie ac.
+        </Typography>
+        <Typography paragraph>
+          Consequat mauris nunc congue nisi vitae suscipit. Fringilla est
+          ullamcorper eget nulla facilisi etiam dignissim diam. Pulvinar
+          elementum integer enim neque volutpat ac tincidunt. Ornare suspendisse
+          sed nisi lacus sed viverra tellus. Purus sit amet volutpat consequat
+          mauris. Elementum eu facilisis sed odio morbi. Euismod lacinia at quis
+          risus sed vulputate odio. Morbi tincidunt ornare massa eget egestas
+          purus viverra accumsan in. In hendrerit gravida rutrum quisque non
+          tellus orci ac. Pellentesque nec nam aliquam sem et tortor. Habitant
+          morbi tristique senectus et. Adipiscing elit duis tristique
+          sollicitudin nibh sit. Ornare aenean euismod elementum nisi quis
+          eleifend. Commodo viverra maecenas accumsan lacus vel facilisis. Nulla
+          posuere sollicitudin aliquam ultrices sagittis orci a.
+        </Typography>
+      </main>
+    </div>
+  );
+};
diff --git a/src/components/LandingPage/LandingPage.tsx b/src/components/LandingPage/LandingPage.tsx
new file mode 100644
index 0000000000000000000000000000000000000000..5567be0bdcc3aa06af023345824b31163ce6288a
--- /dev/null
+++ b/src/components/LandingPage/LandingPage.tsx
@@ -0,0 +1,41 @@
+import React, { FC } from 'react';
+
+export const LandingPage: FC = () => (
+  <>
+    <section>
+      <h2>What is MoveAid?</h2>
+
+      <p>
+        MoveAid is a project born in order to satisfy a specific problem. There
+        are many senior citizens who are not able to drive and move from a place
+        to another easily, because of this they sometimes need to take private
+        Taxis or public means of transport which could be expensive and not
+        simple. MoveAid wants to be the solution to this problem offering free
+        drives (carried out by voulunteers) for those who need them to reach
+        medical visit, to go to the supermarket or to satisfy any other need.
+      </p>
+    </section>
+
+    <section>
+      <h2>How will MoveAid work?</h2>
+
+      <p>
+        MoveAid will be the platform that will allow people to ask for a drive
+        (either by phone or online) and organizations of voulenteers to organise
+        and accept drives.
+      </p>
+    </section>
+
+    <p>
+      <br />
+    </p>
+
+    <footer>
+      <p>
+        Authors: Alberto Defendi, Andrea Esposito, Marco Marinello, Francesco
+        Mazzini
+      </p>
+      <p>&copy 2021 - All right reserved</p>
+    </footer>
+  </>
+);
diff --git a/src/components/LandingPage/TeamPage.tsx b/src/components/LandingPage/TeamPage.tsx
new file mode 100644
index 0000000000000000000000000000000000000000..b0a945e8347fdc1b4c1027ea1cf3a03df91eb95d
--- /dev/null
+++ b/src/components/LandingPage/TeamPage.tsx
@@ -0,0 +1,86 @@
+import React, { FC } from 'react';
+
+export const TeamPage: FC = () => (
+  <>
+    <section>
+      <h2>These are the students of the MoveAid project</h2>
+
+      <div>
+        <h3>Alberto Defendi</h3>
+        <table>
+          <tr>
+            <td> </td>
+            <td>
+              <p>
+                Age: 19 <br />
+                Role: Front End Developer
+                <br />
+                Hobbys: Sports, maths
+                <br />
+              </p>
+            </td>
+          </tr>
+        </table>
+      </div>
+
+      <div>
+        <h3>Andrea Esposito</h3>
+        <table>
+          <tr>
+            <td> </td>
+            <td>
+              <p>
+                Age: 19 <br />
+                Role: xxxxx
+                <br />
+                Hobbys: xxxxxxxxx
+                <br />
+              </p>
+            </td>
+          </tr>
+        </table>
+      </div>
+
+      <div>
+        <h3>Marco Marinello</h3>
+        <table>
+          <tr>
+            <td> </td>
+            <td>
+              <p>
+                Age: 19 <br />
+                Role: xxxxx
+                <br />
+                Hobbys: xxxxxxxxx
+                <br />
+              </p>
+            </td>
+          </tr>
+        </table>
+      </div>
+
+      <div>
+        <h3>Francesco Mazzini</h3>
+        <table>
+          <tr>
+            <td> </td>
+            <td>
+              <p>
+                <strong>Age:</strong> 19 <br />
+                <br />
+                <strong>Role:</strong> Front End Developer
+                <br />
+                <br />
+                <strong>Hobbys:</strong> I like Graphic and Programing.
+                <br />
+                I also like playing videogames, hanging out <br />
+                with friends, watching tv series and <br />
+                training in gym!
+              </p>
+            </td>
+          </tr>
+        </table>
+      </div>
+    </section>
+  </>
+);
diff --git a/src/components/LandingPage/assets/alberto.png b/src/components/LandingPage/assets/alberto.png
new file mode 100644
index 0000000000000000000000000000000000000000..a4030b2bda405381ab60d5ba68b7ea7c057ebefe
Binary files /dev/null and b/src/components/LandingPage/assets/alberto.png differ
diff --git a/src/components/LandingPage/assets/logo04Circle.png b/src/components/LandingPage/assets/logo04Circle.png
new file mode 100644
index 0000000000000000000000000000000000000000..4e5a76b9f51d9580a7f6b6b78f076f0a4a821f48
Binary files /dev/null and b/src/components/LandingPage/assets/logo04Circle.png differ
diff --git a/src/components/LandingPage/assets/pp.jpg b/src/components/LandingPage/assets/pp.jpg
new file mode 100644
index 0000000000000000000000000000000000000000..593205f4d623a459904abdcfb13c8517e4ccf666
Binary files /dev/null and b/src/components/LandingPage/assets/pp.jpg differ
diff --git a/src/index.css b/src/index.css
deleted file mode 100644
index ec2585e8c0bb8188184ed1e0703c4c8f2a8419b0..0000000000000000000000000000000000000000
--- a/src/index.css
+++ /dev/null
@@ -1,13 +0,0 @@
-body {
-  margin: 0;
-  font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', 'Oxygen',
-    'Ubuntu', 'Cantarell', 'Fira Sans', 'Droid Sans', 'Helvetica Neue',
-    sans-serif;
-  -webkit-font-smoothing: antialiased;
-  -moz-osx-font-smoothing: grayscale;
-}
-
-code {
-  font-family: source-code-pro, Menlo, Monaco, Consolas, 'Courier New',
-    monospace;
-}
diff --git a/src/index.tsx b/src/index.tsx
index bc4d4a8f3962b9d567a53d5191d2d81cc29dae00..0fccccb0ddf325834eeac345df5804ae6cae64ef 100644
--- a/src/index.tsx
+++ b/src/index.tsx
@@ -1,11 +1,17 @@
 import React from 'react';
 import ReactDOM from 'react-dom';
-import './index.css';
+import { IntlProvider } from 'react-intl';
+import CssBaseline from '@material-ui/core/CssBaseline';
+import MESSAGES_EN from './intl/en.json';
 import { App } from './App';
 
 ReactDOM.render(
   <React.StrictMode>
-    <App />
+    <IntlProvider locale="en" messages={MESSAGES_EN}>
+      <CssBaseline />
+      <App />
+    </IntlProvider>
+    ,
   </React.StrictMode>,
   document.getElementById('root'),
 );
diff --git a/src/intl/en.json b/src/intl/en.json
new file mode 100644
index 0000000000000000000000000000000000000000..347550bbe2d981d469c98efa089b3f5a97b1aaed
--- /dev/null
+++ b/src/intl/en.json
@@ -0,0 +1,6 @@
+{
+    "email": "Email address",
+    "password": "Password",
+    "email-error": "Insert valid email address",
+    "password-error": "Insert valid password"
+}
\ No newline at end of file
diff --git a/yarn.lock b/yarn.lock
index 28d326ad701ecc03222f109d83b70ff5c6c57cb4..a9e35e86bda131c31b8776ce06d60839c4108b07 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -1512,7 +1512,7 @@
     "@emotion/utils" "0.11.3"
     "@emotion/weak-memoize" "0.2.5"
 
-"@emotion/core@^10.0.14", "@emotion/core@^10.0.16":
+"@emotion/core@^10.0.14", "@emotion/core@^10.0.16", "@emotion/core@^10.0.28":
   version "10.1.1"
   resolved "https://registry.yarnpkg.com/@emotion/core/-/core-10.1.1.tgz#c956c1365f2f2481960064bcb8c4732e5fb612c3"
   integrity sha512-ZMLG6qpXR8x031NXD8HJqugy/AZSkAuMxxqB46pmAR7ze47MhNJ56cdoX243QPZdGctrdfo+s08yZTiwaUcRKA==
@@ -1576,7 +1576,7 @@
     "@emotion/serialize" "^0.11.15"
     "@emotion/utils" "0.11.3"
 
-"@emotion/styled@^10.0.14":
+"@emotion/styled@^10.0.14", "@emotion/styled@^10.0.27":
   version "10.0.27"
   resolved "https://registry.yarnpkg.com/@emotion/styled/-/styled-10.0.27.tgz#12cb67e91f7ad7431e1875b1d83a94b814133eaf"
   integrity sha512-iK/8Sh7+NLJzyp9a5+vIQIXTYxfT4yB/OJbjzQanB2RZpvmzBQOHZWhpAMZWYEKRNNbsD6WfBw5sVWkb6WzS/Q==
@@ -1629,6 +1629,59 @@
     minimatch "^3.0.4"
     strip-json-comments "^3.1.1"
 
+"@formatjs/ecma402-abstract@1.6.4":
+  version "1.6.4"
+  resolved "https://registry.yarnpkg.com/@formatjs/ecma402-abstract/-/ecma402-abstract-1.6.4.tgz#cff5ef03837fb6bae70b16d04940213c17e87884"
+  integrity sha512-ukFjGD9dLsxcD9D5AEshJqQElPQeUAlTALT/lzIV6OcYojyuU81gw/uXDUOrs6XW79jtOJwQDkLqHbCJBJMOTw==
+  dependencies:
+    tslib "^2.1.0"
+
+"@formatjs/icu-messageformat-parser@1.1.2":
+  version "1.1.2"
+  resolved "https://registry.yarnpkg.com/@formatjs/icu-messageformat-parser/-/icu-messageformat-parser-1.1.2.tgz#e0d41edcfd031c0627b0f40dfcce5883d765df5d"
+  integrity sha512-AgwoQ2XUL+bQ/v7t4TBJh9vsob8zXgfM3RNe3MvJBCVOEZ+9z8mszsqeae/DmJgLK6SDezJex5O9Vdiny58Pwg==
+  dependencies:
+    "@formatjs/ecma402-abstract" "1.6.4"
+    "@formatjs/icu-skeleton-parser" "1.1.1"
+    tslib "^2.1.0"
+
+"@formatjs/icu-skeleton-parser@1.1.1":
+  version "1.1.1"
+  resolved "https://registry.yarnpkg.com/@formatjs/icu-skeleton-parser/-/icu-skeleton-parser-1.1.1.tgz#b2c39a7817816d68d31272947dded970f6d1d1c7"
+  integrity sha512-hkRJhjr9G0IE730Kxwq65+rz/2fdCckSJTPrKmViMxLNtRmIt6Hx67tffElr9/QSlpzGlXw9XAMdFOa1ylRrJQ==
+  dependencies:
+    "@formatjs/ecma402-abstract" "1.6.4"
+    tslib "^2.1.0"
+
+"@formatjs/intl-displaynames@4.0.12":
+  version "4.0.12"
+  resolved "https://registry.yarnpkg.com/@formatjs/intl-displaynames/-/intl-displaynames-4.0.12.tgz#9af9992e544aa96b32c3a4994d6fef878e0376c9"
+  integrity sha512-2f3nf5IcPYk2SCS83rJoV5y47OTL+YtHDa5G42KDgSA8ZgmgkN5OaYs3WF6a2RweMG9jp4LCTUmqS42LcAhJSw==
+  dependencies:
+    "@formatjs/ecma402-abstract" "1.6.4"
+    tslib "^2.1.0"
+
+"@formatjs/intl-listformat@5.0.13":
+  version "5.0.13"
+  resolved "https://registry.yarnpkg.com/@formatjs/intl-listformat/-/intl-listformat-5.0.13.tgz#5b13057a12642089108ddf4316bab976319fd941"
+  integrity sha512-z4vZ5FX6dsL2fbO7NCmmJXKXH9p0gubzZVSsmCOUBIuy6rODLD8kE2LVnefd4wnXEJi5/fAnwGT2NMjirWa71g==
+  dependencies:
+    "@formatjs/ecma402-abstract" "1.6.4"
+    tslib "^2.1.0"
+
+"@formatjs/intl@1.9.5":
+  version "1.9.5"
+  resolved "https://registry.yarnpkg.com/@formatjs/intl/-/intl-1.9.5.tgz#02bc32ab9e52b7f0201c964a696609b6d455cca2"
+  integrity sha512-PEvdDuppTHW23B4s1nzKCY1wku3HYEgmV2ip02RspSUKl8p3t/TCwb1/U3Qwhgj3EUsjYdiaF1uyMj61eChAow==
+  dependencies:
+    "@formatjs/ecma402-abstract" "1.6.4"
+    "@formatjs/icu-messageformat-parser" "1.1.2"
+    "@formatjs/intl-displaynames" "4.0.12"
+    "@formatjs/intl-listformat" "5.0.13"
+    fast-memoize "^2.5.2"
+    intl-messageformat "9.6.4"
+    tslib "^2.1.0"
+
 "@graphql-tools/batch-execute@^7.0.0":
   version "7.0.0"
   resolved "https://registry.yarnpkg.com/@graphql-tools/batch-execute/-/batch-execute-7.0.0.tgz#e79d11bd5b39f29172f6ec2eafa71103c6a6c85b"
@@ -1805,6 +1858,18 @@
   dependencies:
     "@hapi/hoek" "^9.0.0"
 
+"@hookform/devtools@^2.2.1":
+  version "2.2.1"
+  resolved "https://registry.yarnpkg.com/@hookform/devtools/-/devtools-2.2.1.tgz#2d88414d375199e193c2611b770b194b7752a623"
+  integrity sha512-VQh4kqwUOpz9LCDzIP0aJ4qnD/ob8Gp09L8gDy++9XtL66z6g8kbCynUvBrJm4qbCNdH0M7/Spm3AUjJqUuFlA==
+  dependencies:
+    "@emotion/core" "^10.0.28"
+    "@emotion/styled" "^10.0.27"
+    "@types/lodash" "^4.14.152"
+    little-state-machine "^3.0.1"
+    lodash "^4.17.15"
+    react-simple-animate "^3.3.8"
+
 "@hutson/parse-repository-url@^3.0.0":
   version "3.0.2"
   resolved "https://registry.yarnpkg.com/@hutson/parse-repository-url/-/parse-repository-url-3.0.2.tgz#98c23c950a3d9b6c8f0daed06da6c3af06981340"
@@ -2662,6 +2727,14 @@
   resolved "https://registry.yarnpkg.com/@types/history/-/history-4.7.8.tgz#49348387983075705fe8f4e02fb67f7daaec4934"
   integrity sha512-S78QIYirQcUoo6UJZx9CSP0O2ix9IaeAXwQi26Rhr/+mg7qqPy8TzaxHSUut7eGjL8WmLccT7/MXf304WjqHcA==
 
+"@types/hoist-non-react-statics@^3.3.1":
+  version "3.3.1"
+  resolved "https://registry.yarnpkg.com/@types/hoist-non-react-statics/-/hoist-non-react-statics-3.3.1.tgz#1124aafe5118cb591977aeb1ceaaed1070eb039f"
+  integrity sha512-iMIqiko6ooLrTh1joXodJK5X9xeEALT1kM5G3ZLhD3hszxBdIEd5C75U834D9mLcINgD4OyZf5uQXjkuYydWvA==
+  dependencies:
+    "@types/react" "*"
+    hoist-non-react-statics "^3.3.0"
+
 "@types/html-minifier-terser@^5.0.0":
   version "5.1.1"
   resolved "https://registry.yarnpkg.com/@types/html-minifier-terser/-/html-minifier-terser-5.1.1.tgz#3c9ee980f1a10d6021ae6632ca3e79ca2ec4fb50"
@@ -2731,7 +2804,7 @@
   dependencies:
     "@types/node" "*"
 
-"@types/lodash@^4.14.92":
+"@types/lodash@^4.14.152", "@types/lodash@^4.14.92":
   version "4.14.168"
   resolved "https://registry.yarnpkg.com/@types/lodash/-/lodash-4.14.168.tgz#fe24632e79b7ade3f132891afff86caa5e5ce008"
   integrity sha512-oVfRvqHV/V6D1yifJbVRU3TMp8OT6o6BG+U9MkwuJ3U8/CsDHvalRpsxBqivn71ztOFZBTfJMvETbqHiaNSj7Q==
@@ -7639,7 +7712,7 @@ fast-levenshtein@^2.0.6, fast-levenshtein@~2.0.6:
   resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917"
   integrity sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=
 
-fast-memoize@^2.5.1:
+fast-memoize@^2.5.1, fast-memoize@^2.5.2:
   version "2.5.2"
   resolved "https://registry.yarnpkg.com/fast-memoize/-/fast-memoize-2.5.2.tgz#79e3bb6a4ec867ea40ba0e7146816f6cdce9b57e"
   integrity sha512-Ue0LwpDYErFbmNnZSF0UH6eImUwDmogUO1jyE+JbN2gsQz/jICm1Ve7t9QT0rNSsfJt+Hs4/S3GnsDVjL4HVrw==
@@ -9877,6 +9950,15 @@ interpret@^1.0.0:
   resolved "https://registry.yarnpkg.com/interpret/-/interpret-1.4.0.tgz#665ab8bc4da27a774a40584e812e3e0fa45b1a1e"
   integrity sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA==
 
+intl-messageformat@9.6.4:
+  version "9.6.4"
+  resolved "https://registry.yarnpkg.com/intl-messageformat/-/intl-messageformat-9.6.4.tgz#6ee964235c37b864359dc848b3dd5ea984cc8065"
+  integrity sha512-NCstnz4qiRYHRiFwAadptARV0XGv8dFtC6ZcDfjKlFePvyyQ9zkPXq28Tg7UPTfUZnOfGjnxgi0mMem/5/TbDw==
+  dependencies:
+    "@formatjs/icu-messageformat-parser" "1.1.2"
+    fast-memoize "^2.5.2"
+    tslib "^2.1.0"
+
 into-stream@^3.1.0:
   version "3.1.0"
   resolved "https://registry.yarnpkg.com/into-stream/-/into-stream-3.1.0.tgz#96fb0a936c12babd6ff1752a17d05616abd094c6"
@@ -11423,6 +11505,11 @@ listr2@^3.2.2:
     through "^2.3.8"
     wrap-ansi "^7.0.0"
 
+little-state-machine@^3.0.1:
+  version "3.1.4"
+  resolved "https://registry.yarnpkg.com/little-state-machine/-/little-state-machine-3.1.4.tgz#b29c396f732976cc327a612ef9a7a53f3f3520ab"
+  integrity sha512-gYlLCj6oUME0NG34/2O0Ljy52qYYyYDJ5yiAuq2ijbaRlBKIqtQQkKkEYn0KfjYXCE693j+bdY22EyZin25Bhw==
+
 load-cfg@^2.1.0:
   version "2.1.0"
   resolved "https://registry.yarnpkg.com/load-cfg/-/load-cfg-2.1.0.tgz#230ef6950466df59be934363988d35eee48ce8b9"
@@ -15135,6 +15222,11 @@ react-helmet-async@^1.0.4:
     react-fast-compare "^3.2.0"
     shallowequal "^1.1.0"
 
+react-hook-form@^6.15.5:
+  version "6.15.5"
+  resolved "https://registry.yarnpkg.com/react-hook-form/-/react-hook-form-6.15.5.tgz#c2578f9ce6a6df7b33015587d40cd880dc13e2db"
+  integrity sha512-so2jEPYKdVk1olMo+HQ9D9n1hVzaPPFO4wsjgSeZ964R7q7CHsYRbVF0PGBi83FcycA5482WHflasdwLIUVENg==
+
 react-hot-loader@^4.12.21:
   version "4.13.0"
   resolved "https://registry.yarnpkg.com/react-hot-loader/-/react-hot-loader-4.13.0.tgz#c27e9408581c2a678f5316e69c061b226dc6a202"
@@ -15149,6 +15241,21 @@ react-hot-loader@^4.12.21:
     shallowequal "^1.1.0"
     source-map "^0.7.3"
 
+react-intl@^5.15.5:
+  version "5.15.5"
+  resolved "https://registry.yarnpkg.com/react-intl/-/react-intl-5.15.5.tgz#a475445f7e9d9085040d622528ed18a082b03b5d"
+  integrity sha512-TdjMVU0xkH5hKonv/g5x2sD94iojErqlDMbLADsTmz1dgRDc6iLRP5b7mtp0//pkK/psrb283B8HL1wp1vhpiQ==
+  dependencies:
+    "@formatjs/ecma402-abstract" "1.6.4"
+    "@formatjs/icu-messageformat-parser" "1.1.2"
+    "@formatjs/intl" "1.9.5"
+    "@formatjs/intl-displaynames" "4.0.12"
+    "@formatjs/intl-listformat" "5.0.13"
+    "@types/hoist-non-react-statics" "^3.3.1"
+    hoist-non-react-statics "^3.3.2"
+    intl-messageformat "9.6.4"
+    tslib "^2.1.0"
+
 react-is@^16.12.0, react-is@^16.6.0, react-is@^16.7.0, react-is@^16.8.1:
   version "16.13.1"
   resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.13.1.tgz#789729a4dc36de2999dc156dd6c1d9c18cea56a4"
@@ -15288,6 +15395,11 @@ react-scripts@4.0.3:
   optionalDependencies:
     fsevents "^2.1.3"
 
+react-simple-animate@^3.3.8:
+  version "3.3.11"
+  resolved "https://registry.yarnpkg.com/react-simple-animate/-/react-simple-animate-3.3.11.tgz#04bb03ffe707e4e7cab4e22a03a93f20415b39de"
+  integrity sha512-kt2SKJ4Gw3klTmRbik/9R741fPiVRVlxkXvV0c3uu8NqOtdc5ITis62WcdiKH6U5QhCjXNfLW9lrbQ4cAYujyA==
+
 react-simple-code-editor@^0.10.0:
   version "0.10.0"
   resolved "https://registry.yarnpkg.com/react-simple-code-editor/-/react-simple-code-editor-0.10.0.tgz#73e7ac550a928069715482aeb33ccba36efe2373"
@@ -17820,7 +17932,7 @@ tslib@^1.10.0, tslib@^1.8.1, tslib@^1.9.0:
   resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00"
   integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==
 
-tslib@^2, tslib@^2.0.0, tslib@^2.0.3, tslib@~2.1.0:
+tslib@^2, tslib@^2.0.0, tslib@^2.0.3, tslib@^2.1.0, tslib@~2.1.0:
   version "2.1.0"
   resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.1.0.tgz#da60860f1c2ecaa5703ab7d39bc05b6bf988b97a"
   integrity sha512-hcVC3wYEziELGGmEEXue7D75zbwIIVUMWAVbHItGPx0ziyXxrOMQx4rQEVEV45Ut/1IotuEvwqPopzIOkDMf0A==