Index: src/Clients/Angular/finki-chattery/package-lock.json
===================================================================
--- src/Clients/Angular/finki-chattery/package-lock.json	(revision f3c4950cc1a46557f6c15359e067de8c9e5e179a)
+++ src/Clients/Angular/finki-chattery/package-lock.json	(revision 6738cc08cebfbe351b250a75ae0aaf1295d2ff22)
@@ -7801,4 +7801,12 @@
       }
     },
+    "ngx-pipes": {
+      "version": "2.7.6",
+      "resolved": "https://registry.npmjs.org/ngx-pipes/-/ngx-pipes-2.7.6.tgz",
+      "integrity": "sha512-FAeMd1mI8jCnnrhUuNLXs+PaVT1ujhA0QD3KRBDuzGFcbnP7NMXR2EJ5KYbV39LDNuRCluhpfwZudQu/NvrVuA==",
+      "requires": {
+        "tslib": "^2.0.0"
+      }
+    },
     "ngx-toastr": {
       "version": "13.2.1",
Index: src/Clients/Angular/finki-chattery/package.json
===================================================================
--- src/Clients/Angular/finki-chattery/package.json	(revision f3c4950cc1a46557f6c15359e067de8c9e5e179a)
+++ src/Clients/Angular/finki-chattery/package.json	(revision 6738cc08cebfbe351b250a75ae0aaf1295d2ff22)
@@ -33,4 +33,5 @@
     "ng2-file-upload": "^1.4.0",
     "ngx-material-timepicker": "^5.5.3",
+    "ngx-pipes": "^2.7.6",
     "ngx-toastr": "^13.2.1",
     "oidc-client": "^1.11.5",
Index: src/Clients/Angular/finki-chattery/src/app/core/services/auth.service.ts
===================================================================
--- src/Clients/Angular/finki-chattery/src/app/core/services/auth.service.ts	(revision f3c4950cc1a46557f6c15359e067de8c9e5e179a)
+++ src/Clients/Angular/finki-chattery/src/app/core/services/auth.service.ts	(revision 6738cc08cebfbe351b250a75ae0aaf1295d2ff22)
@@ -107,3 +107,7 @@
     });
   }
+
+  public studentCheckedNotifications(): Observable<void> {
+    return this.baseApi.post('v1/students/checked-notifications');
+  }
 }
Index: src/Clients/Angular/finki-chattery/src/app/shared-app/components/generic/header/header.component.html
===================================================================
--- src/Clients/Angular/finki-chattery/src/app/shared-app/components/generic/header/header.component.html	(revision f3c4950cc1a46557f6c15359e067de8c9e5e179a)
+++ src/Clients/Angular/finki-chattery/src/app/shared-app/components/generic/header/header.component.html	(revision 6738cc08cebfbe351b250a75ae0aaf1295d2ff22)
@@ -19,4 +19,15 @@
       'header-student-questions' | translate
     }}</app-button>
+    <app-button
+      matBadge="{{ auth.selfUser?.student?.notifications?.length }}"
+      matBadgeHidden="{{ studentCheckedNotifications || auth.selfUser?.student?.notifications?.length === 0 }}"
+      [matMenuTriggerFor]="notificationMenu"
+      class="margin-y-xs"
+      *ngIf="auth.isStudent()"
+      (click)="studentCheckedNotificationsClick()"
+      [buttonType]="ButtonType.Basic"
+    >
+      <mat-icon>notifications</mat-icon>
+    </app-button>
     <app-button class="margin-y-xs" *ngIf="auth.isLoggedIn()" (action)="logout()" [buttonType]="ButtonType.Basic">{{
       'header-logout' | translate
@@ -34,2 +45,8 @@
   </button>
 </mat-menu>
+
+<mat-menu #notificationMenu="matMenu">
+  <div (click)="goToQuestion(q.questionUid)" mat-menu-item *ngFor="let q of auth.selfUser?.student?.notifications">
+    {{ q?.text }} <span class="time-ago">{{ q?.createdOn | timeAgo }}</span>
+  </div>
+</mat-menu>
Index: src/Clients/Angular/finki-chattery/src/app/shared-app/components/generic/header/header.component.scss
===================================================================
--- src/Clients/Angular/finki-chattery/src/app/shared-app/components/generic/header/header.component.scss	(revision f3c4950cc1a46557f6c15359e067de8c9e5e179a)
+++ src/Clients/Angular/finki-chattery/src/app/shared-app/components/generic/header/header.component.scss	(revision 6738cc08cebfbe351b250a75ae0aaf1295d2ff22)
@@ -14,2 +14,6 @@
   }
 }
+
+::ng-deep.mat-menu-panel {
+  max-width: none !important;
+}
Index: src/Clients/Angular/finki-chattery/src/app/shared-app/components/generic/header/header.component.ts
===================================================================
--- src/Clients/Angular/finki-chattery/src/app/shared-app/components/generic/header/header.component.ts	(revision f3c4950cc1a46557f6c15359e067de8c9e5e179a)
+++ src/Clients/Angular/finki-chattery/src/app/shared-app/components/generic/header/header.component.ts	(revision 6738cc08cebfbe351b250a75ae0aaf1295d2ff22)
@@ -11,4 +11,6 @@
 export class HeaderComponent implements OnInit {
   ButtonType = ButtonType;
+
+  public studentCheckedNotifications = false;
 
   constructor(public auth: AuthService, private router: Router) {}
@@ -36,3 +38,10 @@
     this.router.navigateByUrl(`questioning/${questionUid}`);
   }
+
+  studentCheckedNotificationsClick(): void {
+    if (!this.studentCheckedNotifications) {
+      this.auth.studentCheckedNotifications().subscribe();
+    }
+    this.studentCheckedNotifications = true;
+  }
 }
Index: src/Clients/Angular/finki-chattery/src/app/shared-app/models/user.models.ts
===================================================================
--- src/Clients/Angular/finki-chattery/src/app/shared-app/models/user.models.ts	(revision f3c4950cc1a46557f6c15359e067de8c9e5e179a)
+++ src/Clients/Angular/finki-chattery/src/app/shared-app/models/user.models.ts	(revision 6738cc08cebfbe351b250a75ae0aaf1295d2ff22)
@@ -1,2 +1,4 @@
+import * as moment from 'moment';
+
 export class ApplicationUser {
   constructor(
@@ -30,4 +32,19 @@
   public questions!: StudentQuestionResponse[];
   public teams!: StudentTeamResponse[];
+  public notifications!: StudentNotificationResponse[];
+}
+
+export class StudentNotificationResponse {
+  public uid!: string;
+  public createdOn!: moment.Moment;
+  public questionUid!: string;
+  public text!: string;
+
+  constructor(uid: string, createdOn: moment.Moment, questionUid: string, text: string) {
+    this.uid = uid;
+    this.createdOn = createdOn;
+    this.questionUid = questionUid;
+    this.text = text;
+  }
 }
 
Index: src/Clients/Angular/finki-chattery/src/app/shared-app/services/base-api.service.ts
===================================================================
--- src/Clients/Angular/finki-chattery/src/app/shared-app/services/base-api.service.ts	(revision f3c4950cc1a46557f6c15359e067de8c9e5e179a)
+++ src/Clients/Angular/finki-chattery/src/app/shared-app/services/base-api.service.ts	(revision 6738cc08cebfbe351b250a75ae0aaf1295d2ff22)
@@ -4,5 +4,7 @@
 
 import { environment } from '@env/environment';
-import { SelfUserResponse } from '../models';
+import { SelfUserResponse, StudentNotificationResponse } from '../models';
+import { map } from 'rxjs/operators';
+import * as moment from 'moment';
 
 @Injectable({
@@ -19,5 +21,15 @@
 
   public getSelfUser(): Observable<SelfUserResponse> {
-    return this.get<SelfUserResponse>('v1/self');
+    return this.get<SelfUserResponse>('v1/self').pipe(
+      map((x) => {
+        if (x.student) {
+          x.student.notifications = x.student.notifications.map(
+            (y) => new StudentNotificationResponse(y.uid, moment(y.createdOn), y.questionUid, y.text)
+          );
+        }
+
+        return x;
+      })
+    );
   }
 
Index: src/Clients/Angular/finki-chattery/src/app/shared-app/shared-app.module.ts
===================================================================
--- src/Clients/Angular/finki-chattery/src/app/shared-app/shared-app.module.ts	(revision f3c4950cc1a46557f6c15359e067de8c9e5e179a)
+++ src/Clients/Angular/finki-chattery/src/app/shared-app/shared-app.module.ts	(revision 6738cc08cebfbe351b250a75ae0aaf1295d2ff22)
@@ -14,4 +14,5 @@
 import { SERVICES } from './services/services';
 import { PIPES } from './pipes/pipes';
+import { NgPipesModule } from 'ngx-pipes';
 
 @NgModule({
@@ -27,5 +28,6 @@
     FileUploadModule,
     NgxMaterialTimepickerModule,
-    EditorModule
+    EditorModule,
+    NgPipesModule
   ],
   exports: [
@@ -41,5 +43,6 @@
     PIPES,
     SharedMaterialModule,
-    EditorModule
+    EditorModule,
+    NgPipesModule
   ]
 })
