Index: backend/routes/userRoutes.js
===================================================================
--- backend/routes/userRoutes.js	(revision 16237c49c48dec4a9921c2dd8bd19ccf9e9fb846)
+++ backend/routes/userRoutes.js	(revision ee056633af77f8879114a594a34f49f87fdf0765)
@@ -3,5 +3,5 @@
 import User from "../models/userModel.js";
 import bcrypt from "bcryptjs";
-import { generateToken } from "../utils.js";
+import { generateToken, isAuth } from "../utils.js";
 
 const userRouter = express.Router();
@@ -49,3 +49,31 @@
 );
 
+userRouter.put(
+  "/profile",
+  isAuth,
+  expressAsyncHandler(async (req, res) => {
+    const user = await User.findById(req.user._id);
+    if (user) {
+      user.name = req.body.name || user.name;
+      user.contact = req.body.contact || user.contact;
+      user.email = req.body.email || user.email;
+      if (req.body.password) {
+        user.password = bcrypt.hashSync(req.body.password, 8);
+      }
+
+      const updatedUser = await user.save();
+      res.send({
+        _id: updatedUser._id,
+        name: updatedUser.name,
+        contact: updatedUser.contact,
+        email: updatedUser.email,
+        isAdmin: updatedUser.isAdmin,
+        token: generateToken(updatedUser),
+      });
+    } else {
+      res.status(404).send({ message: "User Not Found" });
+    }
+  })
+);
+
 export default userRouter;
Index: frontend/src/App.js
===================================================================
--- frontend/src/App.js	(revision 16237c49c48dec4a9921c2dd8bd19ccf9e9fb846)
+++ frontend/src/App.js	(revision ee056633af77f8879114a594a34f49f87fdf0765)
@@ -20,4 +20,5 @@
 import CardPaymentScreen from "./screens/CardPaymentScreen";
 import OrderHistoryScreen from "./screens/OrderHistoryScreen";
+import ProfileScreen from "./screens/ProfileScreen";
 
 function App() {
@@ -40,4 +41,5 @@
         <Route path="placeorder/payment" element={<CardPaymentScreen />} />
         <Route path="/orderhistory" element={<OrderHistoryScreen />} />
+        <Route path="/profile" element={<ProfileScreen />} />
         <Route path="/order/:id" element={<OrderScreen />} />
         <Route path="/products" element={<CategoryScreen />} />
Index: frontend/src/components/Header.js
===================================================================
--- frontend/src/components/Header.js	(revision 16237c49c48dec4a9921c2dd8bd19ccf9e9fb846)
+++ frontend/src/components/Header.js	(revision ee056633af77f8879114a594a34f49f87fdf0765)
@@ -80,4 +80,5 @@
     localStorage.removeItem("shippingAddress");
     localStorage.removeItem("paymentMethod");
+    window.location.href = "/signin";
   };
 
@@ -547,5 +548,5 @@
 
               <NavDropdown.Divider />
-              <Link
+              <NavDropdown.Item
                 className="drowdown-item"
                 to="#signout"
@@ -553,5 +554,5 @@
               >
                 Одјави се
-              </Link>
+              </NavDropdown.Item>
             </NavDropdown>
           ) : (
Index: frontend/src/screens/OrderHistoryScreen.js
===================================================================
--- frontend/src/screens/OrderHistoryScreen.js	(revision 16237c49c48dec4a9921c2dd8bd19ccf9e9fb846)
+++ frontend/src/screens/OrderHistoryScreen.js	(revision ee056633af77f8879114a594a34f49f87fdf0765)
@@ -75,5 +75,5 @@
             {orders.map((order) => (
               <tr key={order._id}>
-                <td>{order._id.substring(0, 6)}</td>
+                <td>{order._id.substring(0, 7)}</td>
                 <td>{order.createdAt.substring(0, 10)}</td>
                 <td>{order.totalPrice.toFixed(2)}</td>
Index: frontend/src/screens/ProfileScreen.js
===================================================================
--- frontend/src/screens/ProfileScreen.js	(revision ee056633af77f8879114a594a34f49f87fdf0765)
+++ frontend/src/screens/ProfileScreen.js	(revision ee056633af77f8879114a594a34f49f87fdf0765)
@@ -0,0 +1,122 @@
+import React, { useContext, useReducer, useState } from "react";
+import { Helmet } from "react-helmet-async";
+import { Store } from "../Store";
+import Form from "react-bootstrap/Form";
+import Button from "react-bootstrap/Button";
+import { toast } from "react-toastify";
+import { getError } from "../components/utils";
+import axios from "axios";
+
+const reducer = (state, action) => {
+  switch (action.type) {
+    case "UPDATE_REQUEST":
+      return { ...state, loadingUpdate: true };
+    case "UPDATE_SUCCSS":
+      return { ...state, loadingUpdate: false };
+    case "UPDATE_FAIL":
+      return { ...state, loadingUpdate: false };
+    default:
+      return state;
+  }
+};
+
+function ProfileScreen() {
+  const { state, dispatch: ctxDispatch } = useContext(Store);
+  const { userInfo } = state;
+
+  const [name, setName] = useState(userInfo.name);
+  const [contact, setContact] = useState(userInfo.contact);
+  const [email, setEmail] = useState(userInfo.email);
+  const [password, setPassword] = useState("");
+  const [confirmPassword, setConfirmPassword] = useState("");
+
+  const [{ loadingUpdate }, dispatch] = useReducer(reducer, {
+    loadingUpdate: false,
+  });
+
+  const submitHandler = async (e) => {
+    e.preventDefault();
+    try {
+      const { data } = await axios.put(
+        "/api/users/profile",
+        {
+          name,
+          contact,
+          email,
+          password,
+        },
+        {
+          headers: { Authorization: `Bearer ${userInfo.token}` },
+        }
+      );
+      dispatch({ type: "UPDATE_SUCCESS" });
+      ctxDispatch({ type: "USER_SIGNIN", payload: data });
+      localStorage.setItem("userInfo", JSON.stringify(data));
+      toast.success("Успешно ажурирање");
+    } catch (err) {
+      dispatch({ type: "FETCH_FAIL" });
+      toast.error(getError(err));
+    }
+  };
+
+  return (
+    <div className="pageContainer shipPC">
+      <Helmet>
+        <title>Мој профил</title>
+      </Helmet>
+      <h1>Моите податоци</h1>
+      <Form onSubmit={submitHandler} className="formCointainer">
+        <Form.Group controlId="name">
+          <Form.Label>Име и Презиме</Form.Label>
+          <Form.Control
+            value={name}
+            style={{ textAlign: "left" }}
+            required
+            onChange={(e) => setName(e.target.value)}
+          />
+        </Form.Group>
+        <Form.Group controlId="contact">
+          <Form.Label>Телефон</Form.Label>
+          <Form.Control
+            value={contact}
+            type="text"
+            required
+            onChange={(e) => setContact(e.target.value)}
+          />
+        </Form.Group>
+        <Form.Group controlId="email">
+          <Form.Label>Email</Form.Label>
+          <Form.Control
+            value={email}
+            type="email"
+            required
+            onChange={(e) => setEmail(e.target.value)}
+          />
+        </Form.Group>
+        <Form.Group controlId="password">
+          <Form.Label>Лозинка</Form.Label>
+          <Form.Control
+            type="password"
+            required
+            onChange={(e) => setPassword(e.target.value)}
+          />
+        </Form.Group>
+        <Form.Group controlId="confirmPassword">
+          <Form.Label>Потврди Лозинка</Form.Label>
+          <Form.Control
+            type="password"
+            required
+            onChange={(e) => setConfirmPassword(e.target.value)}
+          />
+        </Form.Group>
+        <div className="submitBtnContainer">
+          <Button variant="danger" size="lg" type="submit">
+            Ажурирај
+          </Button>
+        </div>
+      </Form>
+    </div>
+  );
+}
+
+export default ProfileScreen;
