diff --git a/pairent_backend/requirements.txt b/pairent_backend/requirements.txt
index fb3ac95..d495564 100644
--- a/pairent_backend/requirements.txt
+++ b/pairent_backend/requirements.txt
@@ -3,4 +3,5 @@ django
djangorestframework
django-cors-headers
Pillow
-requests
\ No newline at end of file
+requests
+oidc-client
\ No newline at end of file
diff --git a/pairent_frontend_react/public/images/avatar-test.jpg b/pairent_frontend_react/public/images/avatar-test.jpg
new file mode 100644
index 0000000..88a0230
Binary files /dev/null and b/pairent_frontend_react/public/images/avatar-test.jpg differ
diff --git a/pairent_frontend_react/public/images/icons/camera.svg b/pairent_frontend_react/public/images/icons/camera.svg
new file mode 100644
index 0000000..e76a820
--- /dev/null
+++ b/pairent_frontend_react/public/images/icons/camera.svg
@@ -0,0 +1,3 @@
+
diff --git a/pairent_frontend_react/src/pages/PersonalCabinet/index.jsx b/pairent_frontend_react/src/pages/PersonalCabinet/index.jsx
new file mode 100644
index 0000000..02a6c37
--- /dev/null
+++ b/pairent_frontend_react/src/pages/PersonalCabinet/index.jsx
@@ -0,0 +1,360 @@
+import React, { useEffect, useState }from 'react';
+import styled, { keyframes } from 'styled-components';
+import SVGIcon from "../../components/UI/Icon/SVGIcon";
+import { User } from '../../API/User';
+
+import { useFetching } from '../../hooks/useFetching';
+
+import { Row, Col, Stack } from 'react-bootstrap';
+
+const BackButton = styled.button`
+ border: 1px solid #c2c4c2;
+ display: inline-block;
+ padding: 12px 16px;
+ border-radius: 14px;
+
+ background: #ffffff;
+ color: gray;
+ box-shadow: 0 2px 1px #00000010;
+
+ font-size: 12pt;
+ float: left;
+
+ & ${SVGIcon} {
+ transform: translate(-4px, 2px)
+ }
+`;
+
+const Title = styled.div`
+ height: 100px;
+ padding-top: 32px;
+ z-index: 1;
+ position: relative;
+ display: flex;
+ align-items: center;
+ top: 0;
+
+ & h2 {
+ margin-left: 28px;
+ font-weight: 600;
+ padding: 0;
+ display: inline-block;
+ transform: translateY(4px);
+ }
+
+ & span {
+ margin-left: 14px;
+ font-weight: 500;
+ font-size: 18px;
+ line-height: 19px;
+ }
+`;
+
+const CabinetSection = styled.div`
+ width: 1270px;
+ height: 650px;
+
+ background: #FFFFFF;
+ box-shadow: 0px 0px 12px rgba(0, 0, 0, 0.25);
+ border-radius: 20px;
+ margin: 27px auto;
+`;
+
+const CabinetContainer = styled(Row)`
+ padding: 30px 26px 30px 36px;
+`;
+
+const Avatar = styled.img`
+ width: 256px;
+ height: 256px;
+
+ margin: 25px 0px 0px 65px;
+
+ border-radius: 50%;
+ box-shadow: 0px 0px 12px 2px rgba(0, 0, 0, 0.34);
+`;
+
+const UploadPhoto = styled.button`
+ display: flex;
+ align-items: center;
+ justify-content: center;
+
+ width: 192px;
+ height: 32px;
+
+ margin: 16px auto 0px;
+
+ font-weight: 700;
+ font-size: 16px;
+ line-height: 19px;
+ color: #FFFFFF;
+
+ background: #007EFF;
+ border-radius: 12px;
+`;
+
+const WelcomeText = styled.p`
+ font-weight: 700;
+ font-size: 20px;
+ line-height: 24px;
+`;
+
+const MainText = styled.p`
+ font-weight: 500;
+ font-size: 14px;
+ line-height: 24px;
+`;
+
+const InputBlock = styled.input`
+ border: 1px solid #CCCCCC;
+ border-radius: 12px;
+
+ width: ${props => props.width}px;
+ height: ${props => props.height}px;
+
+ padding-left: 10px;
+
+ font-weight: 500;
+ font-size: 14px;
+ line-height: 18px;
+ color: #000000;
+
+ &::placeholder {
+ font-weight: 500;
+ font-size: 12px;
+ line-height: 24px;
+ color: #CCCCCC;
+ }
+`;
+
+const TextAreaBlock = styled.textarea`
+ border: 1px solid #CCCCCC;
+ border-radius: 12px;
+
+ margin: 16px 0px 0px 55px;
+ resize: none;
+
+ padding: 8px;
+
+ font-weight: 500;
+ font-size: 14px;
+ line-height: 18px;
+ color: #000000;
+
+ &::placeholder {
+ font-weight: 500;
+ font-size: 14px;
+ line-height: 24px;
+ color: #CCCCCC;
+ }
+`;
+
+const CharacterTraitBlock = styled.div`
+ width: calc(100% + 15px);
+ height: 28px;
+
+ padding: 0;
+
+ font-size: 14px;
+ line-height: 28px;
+ display: inline-block;
+ align-items: center;
+ text-align: center;
+ color: #FFFFFF;
+
+ background: ${props => props.background};
+ border-radius: 20px;
+`;
+
+const ButtonCircleChangeTrait = styled.button`
+ width: 28px;
+ height: 28px;
+
+ padding: 0px;
+
+ font-weight: 700;
+ font-size: 20px;
+
+ display: flex;
+ flex-direction: column;
+ justify-content: center;
+ align-items: center;
+ text-align: center;
+ border-radius: 70%;
+
+ color: #FFFFFF;
+ background: #D9D9D9;
+`;
+
+const ButtonChangeTrait = styled.button`
+ margin-top: 14px;
+
+ width: auto;
+ height: 27px;
+
+ padding: 0;
+
+ font-weight: 500;
+ font-size: 14px;
+ line-height: 17px;
+
+ text-align: left;
+
+ color: #007EFF;
+ background: none;
+`;
+
+const InformationBlock = (props) => {
+ return (
+ <>
+