diff --git a/core/auth/memberships/group.html b/core/auth/memberships/group.html
index ac432d8..f923232 100644
--- a/core/auth/memberships/group.html
+++ b/core/auth/memberships/group.html
@@ -43,7 +43,7 @@
         </tr>
         {{- range .Owners }}
         <tr>
-            <td>{{ . }}</td>
+            <td><a href="/user/{{ . }}">{{ . }}</a></td>
             <td>Delete</td>
         </tr>
         {{- end }}
@@ -56,7 +56,7 @@
         </tr>
         {{- range .Members }}
         <tr>
-            <td>{{ . }}</td>
+            <td><a href="/user/{{ . }}">{{ . }}</a></td>
             <td>Delete</td>
         </tr>
         {{- end }}
diff --git a/core/auth/memberships/index.html b/core/auth/memberships/index.html
index 03ee299..cd3cf50 100644
--- a/core/auth/memberships/index.html
+++ b/core/auth/memberships/index.html
@@ -7,7 +7,8 @@
     <link rel="stylesheet" href="/static/pico.2.0.6.min.css">
 </head>
 <body class="container">
-    <h1>Groups Managment</h1>
+    <h1>User: {{ .CurrentUser }}</h1>
+    {{ if .LoggedInUserPage }}
     <form action="/create-group" method="post">
         <label for="group-name">Group Name:</label>
         <input type="text" id="group-name" name="group-name" required>
@@ -15,6 +16,7 @@
         <input type="text" id="description" name="description">
         <button type="submit">Create Group</button>
     </form>
+    {{ end }}
     <h4>Owner</h4>
     <table>
         <tr>
diff --git a/core/auth/memberships/main.go b/core/auth/memberships/main.go
index bc8f384..a645777 100644
--- a/core/auth/memberships/main.go
+++ b/core/auth/memberships/main.go
@@ -484,6 +484,7 @@
 		r := mux.NewRouter()
 		r.PathPrefix("/static/").Handler(http.FileServer(http.FS(staticResources)))
 		r.HandleFunc("/group/{group-name}", s.groupHandler)
+		r.HandleFunc("/user/{username}", s.userHandler)
 		r.HandleFunc("/create-group", s.createGroupHandler)
 		r.HandleFunc("/add-user", s.addUserHandler)
 		r.HandleFunc("/add-child-group", s.addChildGroupHandler)
@@ -523,12 +524,25 @@
 		http.Error(w, "User Not Logged In", http.StatusUnauthorized)
 		return
 	}
-	ownerGroups, err := s.store.GetGroupsOwnedBy(loggedInUser)
+	http.Redirect(w, r, "/user/"+loggedInUser, http.StatusSeeOther)
+}
+
+func (s *Server) userHandler(w http.ResponseWriter, r *http.Request) {
+	loggedInUser, err := getLoggedInUser(r)
+	if err != nil {
+		http.Error(w, "User Not Logged In", http.StatusUnauthorized)
+		return
+	}
+	vars := mux.Vars(r)
+	user := strings.ToLower(vars["username"])
+	// TODO(dtabidze): should check if username exists or not.
+	loggedInUserPage := loggedInUser == user
+	ownerGroups, err := s.store.GetGroupsOwnedBy(user)
 	if err != nil {
 		http.Error(w, err.Error(), http.StatusInternalServerError)
 		return
 	}
-	membershipGroups, err := s.store.GetGroupsUserBelongsTo(loggedInUser)
+	membershipGroups, err := s.store.GetGroupsUserBelongsTo(user)
 	if err != nil {
 		http.Error(w, err.Error(), http.StatusInternalServerError)
 		return
@@ -538,7 +552,7 @@
 		http.Error(w, err.Error(), http.StatusInternalServerError)
 		return
 	}
-	transitiveGroups, err := s.store.GetAllTransitiveGroupsForUser(loggedInUser)
+	transitiveGroups, err := s.store.GetAllTransitiveGroupsForUser(user)
 	if err != nil {
 		http.Error(w, err.Error(), http.StatusInternalServerError)
 		return
@@ -547,10 +561,14 @@
 		OwnerGroups      []Group
 		MembershipGroups []Group
 		TransitiveGroups []Group
+		LoggedInUserPage bool
+		CurrentUser      string
 	}{
 		OwnerGroups:      ownerGroups,
 		MembershipGroups: membershipGroups,
 		TransitiveGroups: transitiveGroups,
+		LoggedInUserPage: loggedInUserPage,
+		CurrentUser:      user,
 	}
 	w.Header().Set("Content-Type", "text/html")
 	if err := tmpl.Execute(w, data); err != nil {
