diff --git a/API/db/app.db b/API/db/app.db
index b9f76f706498f88f8a0278596752a3792021fdff..56182c95bd846eb45693d59fe952a2c56c3ec843 100644
Binary files a/API/db/app.db and b/API/db/app.db differ
diff --git a/API/src/database/Database.ts b/API/src/database/Database.ts
index 17402400abcfe1549f4af64efdf4b267defc258e..5a94f6f558107a7ebaf69204dd23555c5c5fd056 100644
--- a/API/src/database/Database.ts
+++ b/API/src/database/Database.ts
@@ -93,8 +93,7 @@ class DBHandler {
         const a = req.body as User_t;
 
         const request = "UPDATE users \
-                        SET username = '"+ a.username +"', password = '"+ a.password +"' \
-                        WHERE id = " + req.params.id;
+                        SET username = '"+ a.username + "', type = '" + a.type + "' WHERE id = " + req.params.id;
 
         asyncdb.all(request)
         .then(() => res.status(StatusCodes.OK).end())
diff --git a/frontend/src/app/admin/admin.component.html b/frontend/src/app/admin/admin.component.html
index e1119cd890019ef0d22613e92683d42c0b2c0e1a..10f953898fb6dacc3ced2bc8983abf3fcb5b40aa 100644
--- a/frontend/src/app/admin/admin.component.html
+++ b/frontend/src/app/admin/admin.component.html
@@ -1,3 +1,5 @@
+<button (click)="modalCreate=true;">Create User</button>
+
 <table>
     <thead>
         <th>Username</th>
@@ -7,7 +9,7 @@
         <tr *ngFor="let user of users">
             <td>{{user.username}}</td>
             <td>{{user.type}}</td>
-            <td><button>UPDATE</button></td>
+            <td><button (click)="showUpdateModal(user)">UPDATE</button></td>
             <td><button (click)="deleteUser(user)">DELETE</button></td>
         </tr>
     </tbody>
@@ -26,4 +28,14 @@
             <td><button (click)="deleteQuestion(question)">DELETE</button></td>
         </tr>
     </tbody>
-</table>
\ No newline at end of file
+</table>
+
+
+
+<div *ngIf="modalUpdate">
+    <app-update-user [user]="userToEdit" (closeModal)="modalUpdate=false;"></app-update-user>
+</div>
+
+<div *ngIf="modalCreate">
+    <app-create-user (closeModal)="modalCreate=false;"></app-create-user>
+</div>
\ No newline at end of file
diff --git a/frontend/src/app/admin/admin.component.ts b/frontend/src/app/admin/admin.component.ts
index d1c2fc1aa94b912f2ec7fedca65e9bebb4680534..a46e7de366c5ccacc68566d52d378991dbf46489 100644
--- a/frontend/src/app/admin/admin.component.ts
+++ b/frontend/src/app/admin/admin.component.ts
@@ -3,6 +3,7 @@ import { HttpClient } from '@angular/common/http';
 import { Answer, QandA, Question, User } from '../Types/types';
 import { UsersService } from '../services/users.service';
 import { QuestionsService } from '../services/questions.service';
+import { Subscription } from 'rxjs';
 
 @Component({
   selector: 'app-admin',
@@ -11,9 +12,14 @@ import { QuestionsService } from '../services/questions.service';
 })
 export class AdminComponent implements OnInit {
     public data;
-    public users: User[] = [];
-    public questions: Question[] = [];
-    public answers: Answer[] = [];
+    public users!: User[];
+    public questions!: Question[];
+    public answers!: Answer[];
+    private usersSub!: Subscription;
+    userToEdit!: User;
+
+    modalUpdate: boolean = false;
+    modalCreate: boolean = false;
 
     constructor(
       private http: HttpClient,
@@ -21,12 +27,15 @@ export class AdminComponent implements OnInit {
       private questionController: QuestionsService) { }
 
     ngOnInit(): void {
-      
-      this.http.get("http://0.0.0.0:30992/API/v1/user")
-      .subscribe(users => {
-        this.users = users as User[];
+
+      this.usersSub = this.userController.users.subscribe(userList => {
+        this.users = userList;
       });
 
+      this.userController.fetchUsers();
+
+      
+
       this.http.get("http://0.0.0.0:30992/API/v1/question")
       .subscribe(res => {
         let questions = res as QandA;
@@ -42,4 +51,14 @@ export class AdminComponent implements OnInit {
     deleteQuestion(question: Question) {
       this.questionController.deleteQuestion(question);
     }
-}
+
+    showUpdateModal(user: User){
+      this.userToEdit = user;
+      this.modalUpdate = true;
+    }
+
+    showCreateModal(){
+      this.modalCreate = true;
+    }
+
+  }
diff --git a/frontend/src/app/app.module.ts b/frontend/src/app/app.module.ts
index 0e5776eaec7ebc577e095b00aabfc7a637d21750..e32444d79e9375f47cced09e88739426cbb3b87c 100644
--- a/frontend/src/app/app.module.ts
+++ b/frontend/src/app/app.module.ts
@@ -9,13 +9,17 @@ import { LoginComponent } from './login/login.component';
 import { ReactiveFormsModule } from '@angular/forms';
 import { TokenInterceptor } from './interceptors/token-interceptor';
 import { SignupComponent } from './signup/signup.component';
+import { CreateUserComponent } from './create-user/create-user.component';
+import { UpdateUserComponent } from './update-user/update-user.component';
 
 @NgModule({
   declarations: [
     AppComponent,
     AdminComponent,
     LoginComponent,
-    SignupComponent
+    SignupComponent,
+    CreateUserComponent,
+    UpdateUserComponent
   ],
   imports: [
     BrowserModule,
diff --git a/frontend/src/app/create-user/create-user.component.css b/frontend/src/app/create-user/create-user.component.css
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/frontend/src/app/create-user/create-user.component.html b/frontend/src/app/create-user/create-user.component.html
new file mode 100644
index 0000000000000000000000000000000000000000..04fbabb3468744578475b64bd306eaf077551671
--- /dev/null
+++ b/frontend/src/app/create-user/create-user.component.html
@@ -0,0 +1,10 @@
+<h1>Create User</h1>
+<form [formGroup]="createUser" (ngSubmit)="onSubmit()">
+    <input type="text" placeholder="Username" formControlName="username">
+    <br>
+    <input type="password" placeholder="Password" formControlName="password">
+    <br>
+    <input type="type" placeholder="player" formControlName="type">
+    <br>
+    <button type="submit">Create</button>
+</form>
\ No newline at end of file
diff --git a/frontend/src/app/create-user/create-user.component.spec.ts b/frontend/src/app/create-user/create-user.component.spec.ts
new file mode 100644
index 0000000000000000000000000000000000000000..0078050c96e2cc87c42b8a762e2e496664b6ac95
--- /dev/null
+++ b/frontend/src/app/create-user/create-user.component.spec.ts
@@ -0,0 +1,21 @@
+import { ComponentFixture, TestBed } from '@angular/core/testing';
+
+import { CreateUserComponent } from './create-user.component';
+
+describe('CreateUserComponent', () => {
+  let component: CreateUserComponent;
+  let fixture: ComponentFixture<CreateUserComponent>;
+
+  beforeEach(() => {
+    TestBed.configureTestingModule({
+      declarations: [CreateUserComponent]
+    });
+    fixture = TestBed.createComponent(CreateUserComponent);
+    component = fixture.componentInstance;
+    fixture.detectChanges();
+  });
+
+  it('should create', () => {
+    expect(component).toBeTruthy();
+  });
+});
diff --git a/frontend/src/app/create-user/create-user.component.ts b/frontend/src/app/create-user/create-user.component.ts
new file mode 100644
index 0000000000000000000000000000000000000000..2c197a5c3e6b5c3c171a066975e1e5e98f00420a
--- /dev/null
+++ b/frontend/src/app/create-user/create-user.component.ts
@@ -0,0 +1,41 @@
+import { Component, EventEmitter, Input, Output } from '@angular/core';
+import { FormControl, FormGroup, Validators } from '@angular/forms';
+import { User } from '../Types/types';
+import { UsersService } from '../services/users.service';
+
+@Component({
+  selector: 'app-create-user',
+  templateUrl: './create-user.component.html',
+  styleUrls: ['./create-user.component.css']
+})
+export class CreateUserComponent {
+  createUser: FormGroup
+
+  @Output() closeModal: EventEmitter<string> = new EventEmitter<string>();
+
+  constructor(private userController: UsersService) { }
+
+  ngOnInit(): void {
+    this.createUser = new FormGroup({
+      username: new FormControl('', Validators.required),
+      password: new FormControl('', Validators.required),
+      type: new FormControl('player', Validators.required)
+    });
+  }
+
+  onSubmit() {
+    const username = this.createUser.get("username")!.value;
+    const password = this.createUser.get("password")!.value;
+    const type = this.createUser.get("type")!.value;
+
+    const user: User = {
+      id: undefined,
+      username : username,
+      password: password,
+      type: type
+    }
+
+    this.userController.addUserAdmin(user);
+    this.closeModal.emit();
+  }
+}
diff --git a/frontend/src/app/services/users.service.ts b/frontend/src/app/services/users.service.ts
index ec04eb78ca20c210cf96b7fefbf4054c8aa922b5..16331c66ba0064962daedf7423143bc09cea81ff 100644
--- a/frontend/src/app/services/users.service.ts
+++ b/frontend/src/app/services/users.service.ts
@@ -2,6 +2,7 @@ import { Injectable } from '@angular/core';
 import { User } from '../Types/types';
 import { HttpClient } from '@angular/common/http';
 import { AuthenticationService } from './authentication.service';
+import { BehaviorSubject } from 'rxjs';
 
 const ROUTE = "http://0.0.0.0:30992/API/v1/user"
 
@@ -10,13 +11,15 @@ const ROUTE = "http://0.0.0.0:30992/API/v1/user"
 })
 export class UsersService {
 
+  private _users = new BehaviorSubject<User[]>([])
+
   constructor(
     private http: HttpClient,
     private auth: AuthenticationService) { }
 
   deleteUser(user: User) {
     this.http.delete(ROUTE + "/" + user.id.toString()).subscribe(res => {
-      console.log("PLZ REFRESH")
+      this.fetchUsers();
     });
   }
 
@@ -26,4 +29,25 @@ export class UsersService {
     });
   }
 
+  get users() {
+    return this._users.asObservable();
+  }
+
+  fetchUsers() {
+    this.http.get("http://0.0.0.0:30992/API/v1/user")
+      .subscribe(users => {
+        this._users.next(users as User[]);
+      });
+  }
+
+  addUserAdmin(user: User) {
+    this.http.post<User>(ROUTE, user).subscribe(res => {
+      this.fetchUsers();
+    });
+  }
+
+  updateUser(user:User) {
+    this.http.patch<User>(ROUTE + "/" + user.id.toString(), user).subscribe(res => this.fetchUsers())
+  }
+
 }
diff --git a/frontend/src/app/update-user/update-user.component.css b/frontend/src/app/update-user/update-user.component.css
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/frontend/src/app/update-user/update-user.component.html b/frontend/src/app/update-user/update-user.component.html
new file mode 100644
index 0000000000000000000000000000000000000000..a30c17a58eca26f3609ce4bdf9f170df94b1c096
--- /dev/null
+++ b/frontend/src/app/update-user/update-user.component.html
@@ -0,0 +1,8 @@
+<h1>Update User</h1>
+<form [formGroup]="updateUser" (ngSubmit)="onSubmit()">
+    <input type="text" formControlName="username">
+    <br>
+    <input type="text" formControlName="type">
+    <br>
+    <button type="submit">Update</button>
+</form>
\ No newline at end of file
diff --git a/frontend/src/app/update-user/update-user.component.spec.ts b/frontend/src/app/update-user/update-user.component.spec.ts
new file mode 100644
index 0000000000000000000000000000000000000000..70d9289856ca3f305d90fe7b5c0043bf4fa6e0f9
--- /dev/null
+++ b/frontend/src/app/update-user/update-user.component.spec.ts
@@ -0,0 +1,21 @@
+import { ComponentFixture, TestBed } from '@angular/core/testing';
+
+import { UpdateUserComponent } from './update-user.component';
+
+describe('UpdateUserComponent', () => {
+  let component: UpdateUserComponent;
+  let fixture: ComponentFixture<UpdateUserComponent>;
+
+  beforeEach(() => {
+    TestBed.configureTestingModule({
+      declarations: [UpdateUserComponent]
+    });
+    fixture = TestBed.createComponent(UpdateUserComponent);
+    component = fixture.componentInstance;
+    fixture.detectChanges();
+  });
+
+  it('should create', () => {
+    expect(component).toBeTruthy();
+  });
+});
diff --git a/frontend/src/app/update-user/update-user.component.ts b/frontend/src/app/update-user/update-user.component.ts
new file mode 100644
index 0000000000000000000000000000000000000000..f1fa46d3da3a8a62a9dbb459e1794713acf6aa20
--- /dev/null
+++ b/frontend/src/app/update-user/update-user.component.ts
@@ -0,0 +1,41 @@
+import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';
+import { FormControl, FormGroup, Validators } from '@angular/forms';
+import { User } from '../Types/types';
+import { UsersService } from '../services/users.service';
+
+@Component({
+  selector: 'app-update-user',
+  templateUrl: './update-user.component.html',
+  styleUrls: ['./update-user.component.css']
+})
+export class UpdateUserComponent implements OnInit {
+
+  updateUser: FormGroup
+
+  @Input() user!: User;
+  @Output() closeModal: EventEmitter<void> = new EventEmitter<void>();
+
+  constructor(private userController: UsersService) { }
+
+  ngOnInit(): void {
+    this.updateUser = new FormGroup({
+      username: new FormControl(this.user.username, Validators.required),
+      type: new FormControl(this.user.type, Validators.required)
+    });
+  }
+
+  onSubmit() {
+    const username = this.updateUser.get("username")!.value;
+    const type = this.updateUser.get("type")!.value;
+
+    const userToEdit: User = {
+      id: this.user.id,
+      username : username,
+      password: undefined,
+      type: type
+    }
+
+    this.userController.updateUser(userToEdit);
+    this.closeModal.emit();
+  }
+}