Index: src/Clients/Angular/finki-chattery/src/app/app-routing.module.ts
===================================================================
--- src/Clients/Angular/finki-chattery/src/app/app-routing.module.ts	(revision e6a6d9ae11319e7403580bef69b0f68e2cddd3ef)
+++ src/Clients/Angular/finki-chattery/src/app/app-routing.module.ts	(revision 31a867268fbe5280d237b5abf2cdf5346242d6dc)
@@ -6,4 +6,8 @@
     path: '**',
     redirectTo: 'public/home'
+  },
+  {
+    path: 'questions',
+    loadChildren: () => import('./modules/questioning/questioning.module').then((x) => x.QuestioningModule)
   }
 ];
Index: src/Clients/Angular/finki-chattery/src/app/app.component.html
===================================================================
--- src/Clients/Angular/finki-chattery/src/app/app.component.html	(revision e6a6d9ae11319e7403580bef69b0f68e2cddd3ef)
+++ src/Clients/Angular/finki-chattery/src/app/app.component.html	(revision 31a867268fbe5280d237b5abf2cdf5346242d6dc)
@@ -2,4 +2,3 @@
   <mat-progress-bar class="global-loader" [class.hidden]="!(loader.isLoading | async)" mode="indeterminate"></mat-progress-bar>
   <router-outlet></router-outlet>
-  <button (click)="login()">LOGIN</button>
 </main>
Index: src/Clients/Angular/finki-chattery/src/app/app.component.ts
===================================================================
--- src/Clients/Angular/finki-chattery/src/app/app.component.ts	(revision e6a6d9ae11319e7403580bef69b0f68e2cddd3ef)
+++ src/Clients/Angular/finki-chattery/src/app/app.component.ts	(revision 31a867268fbe5280d237b5abf2cdf5346242d6dc)
@@ -1,4 +1,4 @@
 import { Component, OnInit } from '@angular/core';
-import { AuthService, LoaderService, RedirectService } from './core/services';
+import { LoaderService, RedirectService } from './core/services';
 
 @Component({
@@ -8,12 +8,8 @@
 })
 export class AppComponent implements OnInit {
-  constructor(public loader: LoaderService, private redirect: RedirectService, private auth: AuthService) {}
+  constructor(public loader: LoaderService, private redirect: RedirectService) {}
 
   ngOnInit(): void {
     this.redirect.redirectLoggedInUser();
   }
-
-  public login(): void {
-    this.auth.login();
-  }
 }
Index: src/Clients/Angular/finki-chattery/src/app/core/guards/authorized-student.guard.ts
===================================================================
--- src/Clients/Angular/finki-chattery/src/app/core/guards/authorized-student.guard.ts	(revision 31a867268fbe5280d237b5abf2cdf5346242d6dc)
+++ src/Clients/Angular/finki-chattery/src/app/core/guards/authorized-student.guard.ts	(revision 31a867268fbe5280d237b5abf2cdf5346242d6dc)
@@ -0,0 +1,25 @@
+import { Injectable } from '@angular/core';
+import { CanActivate, ActivatedRouteSnapshot, RouterStateSnapshot, UrlTree } from '@angular/router';
+import { Observable } from 'rxjs';
+import { map } from 'rxjs/operators';
+import { ApplicationUserType } from 'src/app/shared-app/models';
+import { AuthService } from '../services';
+
+@Injectable({
+  providedIn: 'root'
+})
+export class AuthorizedStudentGuard implements CanActivate {
+  constructor(private auth: AuthService) {}
+
+  canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): Observable<boolean> {
+    return this.auth.currentUser().pipe(
+      map((user) => {
+        if (user?.userType === ApplicationUserType.Student) {
+          return true;
+        }
+        this.auth.login();
+        return false;
+      })
+    );
+  }
+}
Index: src/Clients/Angular/finki-chattery/src/app/modules/group-management/group-management.module.ts
===================================================================
--- src/Clients/Angular/finki-chattery/src/app/modules/group-management/group-management.module.ts	(revision 31a867268fbe5280d237b5abf2cdf5346242d6dc)
+++ src/Clients/Angular/finki-chattery/src/app/modules/group-management/group-management.module.ts	(revision 31a867268fbe5280d237b5abf2cdf5346242d6dc)
@@ -0,0 +1,12 @@
+import { NgModule } from '@angular/core';
+import { CommonModule } from '@angular/common';
+
+
+
+@NgModule({
+  declarations: [],
+  imports: [
+    CommonModule
+  ]
+})
+export class GroupManagementModule { }
Index: src/Clients/Angular/finki-chattery/src/app/modules/profile-management/profile-management.module.ts
===================================================================
--- src/Clients/Angular/finki-chattery/src/app/modules/profile-management/profile-management.module.ts	(revision 31a867268fbe5280d237b5abf2cdf5346242d6dc)
+++ src/Clients/Angular/finki-chattery/src/app/modules/profile-management/profile-management.module.ts	(revision 31a867268fbe5280d237b5abf2cdf5346242d6dc)
@@ -0,0 +1,12 @@
+import { NgModule } from '@angular/core';
+import { CommonModule } from '@angular/common';
+
+
+
+@NgModule({
+  declarations: [],
+  imports: [
+    CommonModule
+  ]
+})
+export class ProfileManagementModule { }
Index: src/Clients/Angular/finki-chattery/src/app/modules/questioning/components/ask-question/ask-question.component.html
===================================================================
--- src/Clients/Angular/finki-chattery/src/app/modules/questioning/components/ask-question/ask-question.component.html	(revision 31a867268fbe5280d237b5abf2cdf5346242d6dc)
+++ src/Clients/Angular/finki-chattery/src/app/modules/questioning/components/ask-question/ask-question.component.html	(revision 31a867268fbe5280d237b5abf2cdf5346242d6dc)
@@ -0,0 +1,36 @@
+<form class="example-container" [formGroup]="questionFormGroup">
+  <mat-form-field class="full-width" appearance="standard" appHandleInputFormErrors>
+    <mat-label>STAVI TRANSLATE</mat-label>
+    <input matInput [formControl]="titleForm" />
+  </mat-form-field>
+
+  <editor
+    matInput
+    [formControl]="textForm"
+    [init]="{
+      menubar: false,
+      plugins: [
+        'advlist autolink lists link image charmap print preview anchor',
+        'searchreplace visualblocks code fullscreen',
+        'insertdatetime media table paste code help wordcount'
+      ],
+      toolbar:
+        'undo redo | formatselect | bold italic backcolor | \
+        alignleft aligncenter alignright alignjustify | \
+        bullist numlist outdent indent | removeformat | help'
+    }"
+  ></editor>
+  <mat-error *ngIf="textForm?.touched && textForm?.errors?.required">{{ 'not-found' | translate }}</mat-error>
+  <mat-error *ngIf="textForm?.touched && textForm?.errors?.maxlength">STAVI TRANSL ATE MAX LENGTH</mat-error>
+
+  <mat-form-field class="full-width" appearance="standard" appHandleInputFormErrors>
+    <mat-label>STAVI TRANSLATE</mat-label>
+    <mat-select [formControl]="categoriesForm" multiple>
+      <mat-option *ngFor="let category of categoriesList" [value]="category.uid">{{ category.name }}</mat-option>
+    </mat-select>
+  </mat-form-field>
+
+  <app-button [disabled]="questionFormGroup.invalid" [buttonType]="ButtonType.CallToAction" (action)="askQuestion()">
+    {{ 'not-found' | translate }}
+  </app-button>
+</form>
Index: src/Clients/Angular/finki-chattery/src/app/modules/questioning/components/ask-question/ask-question.component.scss
===================================================================
--- src/Clients/Angular/finki-chattery/src/app/modules/questioning/components/ask-question/ask-question.component.scss	(revision 31a867268fbe5280d237b5abf2cdf5346242d6dc)
+++ src/Clients/Angular/finki-chattery/src/app/modules/questioning/components/ask-question/ask-question.component.scss	(revision 31a867268fbe5280d237b5abf2cdf5346242d6dc)
@@ -0,0 +1,3 @@
+.full-width {
+  width: 100%;
+}
Index: src/Clients/Angular/finki-chattery/src/app/modules/questioning/components/ask-question/ask-question.component.spec.ts
===================================================================
--- src/Clients/Angular/finki-chattery/src/app/modules/questioning/components/ask-question/ask-question.component.spec.ts	(revision 31a867268fbe5280d237b5abf2cdf5346242d6dc)
+++ src/Clients/Angular/finki-chattery/src/app/modules/questioning/components/ask-question/ask-question.component.spec.ts	(revision 31a867268fbe5280d237b5abf2cdf5346242d6dc)
@@ -0,0 +1,25 @@
+import { ComponentFixture, TestBed } from '@angular/core/testing';
+
+import { AskQuestionComponent } from './ask-question.component';
+
+describe('AskQuestionComponent', () => {
+  let component: AskQuestionComponent;
+  let fixture: ComponentFixture<AskQuestionComponent>;
+
+  beforeEach(async () => {
+    await TestBed.configureTestingModule({
+      declarations: [ AskQuestionComponent ]
+    })
+    .compileComponents();
+  });
+
+  beforeEach(() => {
+    fixture = TestBed.createComponent(AskQuestionComponent);
+    component = fixture.componentInstance;
+    fixture.detectChanges();
+  });
+
+  it('should create', () => {
+    expect(component).toBeTruthy();
+  });
+});
Index: src/Clients/Angular/finki-chattery/src/app/modules/questioning/components/ask-question/ask-question.component.ts
===================================================================
--- src/Clients/Angular/finki-chattery/src/app/modules/questioning/components/ask-question/ask-question.component.ts	(revision 31a867268fbe5280d237b5abf2cdf5346242d6dc)
+++ src/Clients/Angular/finki-chattery/src/app/modules/questioning/components/ask-question/ask-question.component.ts	(revision 31a867268fbe5280d237b5abf2cdf5346242d6dc)
@@ -0,0 +1,45 @@
+import { Component, OnInit } from '@angular/core';
+import { FormControl, FormGroup, Validators } from '@angular/forms';
+
+import { ButtonType } from 'src/app/shared-app/components/generic/button/button.models';
+import { CategoryViewModel } from 'src/app/shared-app/models';
+import { AskQuestionRequest } from '../../models/questioning-request.models';
+import { QuestioningApiService } from '../../services/questioning-api.service';
+
+@Component({
+  selector: 'app-ask-question',
+  templateUrl: './ask-question.component.html',
+  styleUrls: ['./ask-question.component.scss']
+})
+export class AskQuestionComponent implements OnInit {
+  public titleForm = new FormControl('', [Validators.required, Validators.maxLength(500)]);
+  public textForm = new FormControl('', [Validators.required, Validators.maxLength(4000)]);
+  public categoriesForm = new FormControl([]);
+
+  public questionFormGroup: FormGroup;
+  public ButtonType = ButtonType;
+
+  // TODO: PULL FROM ENDPOINT
+  public categoriesList: CategoryViewModel[] = [
+    new CategoryViewModel('123', 'test'),
+    new CategoryViewModel('345', 'test 2'),
+    new CategoryViewModel('345', 'test 3'),
+    new CategoryViewModel('345', 'test 4'),
+    new CategoryViewModel('345', 'test 5')
+  ];
+
+  constructor(private api: QuestioningApiService) {
+    this.questionFormGroup = new FormGroup({
+      title: this.titleForm,
+      text: this.textForm,
+      categories: this.categoriesForm
+    });
+  }
+
+  ngOnInit(): void {}
+
+  public askQuestion(): void {
+    const body = new AskQuestionRequest(this.titleForm.value, this.textForm.value, this.categoriesForm.value);
+    this.api.askQuestion(body).subscribe(() => {});
+  }
+}
Index: src/Clients/Angular/finki-chattery/src/app/modules/questioning/components/questioning-components.ts
===================================================================
--- src/Clients/Angular/finki-chattery/src/app/modules/questioning/components/questioning-components.ts	(revision 31a867268fbe5280d237b5abf2cdf5346242d6dc)
+++ src/Clients/Angular/finki-chattery/src/app/modules/questioning/components/questioning-components.ts	(revision 31a867268fbe5280d237b5abf2cdf5346242d6dc)
@@ -0,0 +1,3 @@
+import { AskQuestionComponent } from './ask-question/ask-question.component';
+
+export const QUESTIONING_COMPONENTS: any[] = [AskQuestionComponent];
Index: src/Clients/Angular/finki-chattery/src/app/modules/questioning/models/questioning-request.models.ts
===================================================================
--- src/Clients/Angular/finki-chattery/src/app/modules/questioning/models/questioning-request.models.ts	(revision 31a867268fbe5280d237b5abf2cdf5346242d6dc)
+++ src/Clients/Angular/finki-chattery/src/app/modules/questioning/models/questioning-request.models.ts	(revision 31a867268fbe5280d237b5abf2cdf5346242d6dc)
@@ -0,0 +1,3 @@
+export class AskQuestionRequest {
+  constructor(public title: string, public text: string, public categories: string[]) {}
+}
Index: src/Clients/Angular/finki-chattery/src/app/modules/questioning/questioning.module.ts
===================================================================
--- src/Clients/Angular/finki-chattery/src/app/modules/questioning/questioning.module.ts	(revision 31a867268fbe5280d237b5abf2cdf5346242d6dc)
+++ src/Clients/Angular/finki-chattery/src/app/modules/questioning/questioning.module.ts	(revision 31a867268fbe5280d237b5abf2cdf5346242d6dc)
@@ -0,0 +1,11 @@
+import { NgModule } from '@angular/core';
+
+import { QUESTIONING_COMPONENTS } from './components/questioning-components';
+import { SharedAppModule } from 'src/app/shared-app/shared-app.module';
+import { QuestioningRoutingModule } from './questioning.routes';
+
+@NgModule({
+  declarations: [QUESTIONING_COMPONENTS],
+  imports: [SharedAppModule, QuestioningRoutingModule]
+})
+export class QuestioningModule {}
Index: src/Clients/Angular/finki-chattery/src/app/modules/questioning/questioning.routes.ts
===================================================================
--- src/Clients/Angular/finki-chattery/src/app/modules/questioning/questioning.routes.ts	(revision 31a867268fbe5280d237b5abf2cdf5346242d6dc)
+++ src/Clients/Angular/finki-chattery/src/app/modules/questioning/questioning.routes.ts	(revision 31a867268fbe5280d237b5abf2cdf5346242d6dc)
@@ -0,0 +1,18 @@
+import { NgModule } from '@angular/core';
+import { Routes, RouterModule } from '@angular/router';
+import { AuthorizedStudentGuard } from 'src/app/core/guards/authorized-student.guard';
+import { AskQuestionComponent } from './components/ask-question/ask-question.component';
+
+const routes: Routes = [
+  {
+    path: 'ask',
+    component: AskQuestionComponent,
+    canActivate: [AuthorizedStudentGuard]
+  }
+];
+
+@NgModule({
+  imports: [RouterModule.forChild(routes)],
+  exports: [RouterModule]
+})
+export class QuestioningRoutingModule {}
Index: src/Clients/Angular/finki-chattery/src/app/modules/questioning/services/questioning-api.service.ts
===================================================================
--- src/Clients/Angular/finki-chattery/src/app/modules/questioning/services/questioning-api.service.ts	(revision 31a867268fbe5280d237b5abf2cdf5346242d6dc)
+++ src/Clients/Angular/finki-chattery/src/app/modules/questioning/services/questioning-api.service.ts	(revision 31a867268fbe5280d237b5abf2cdf5346242d6dc)
@@ -0,0 +1,18 @@
+import { HttpClient } from '@angular/common/http';
+import { Injectable } from '@angular/core';
+import { Observable } from 'rxjs';
+import { BaseApiService } from 'src/app/shared-app/services/base-api.service';
+import { AskQuestionRequest } from '../models/questioning-request.models';
+
+@Injectable({
+  providedIn: 'root'
+})
+export class QuestioningApiService extends BaseApiService {
+  constructor(protected http: HttpClient) {
+    super(http);
+  }
+
+  askQuestion(body: AskQuestionRequest): Observable<void> {
+    return this.post('v1/questions', body);
+  }
+}
Index: src/Clients/Angular/finki-chattery/src/app/shared-app/models/categories.models.ts
===================================================================
--- src/Clients/Angular/finki-chattery/src/app/shared-app/models/categories.models.ts	(revision 31a867268fbe5280d237b5abf2cdf5346242d6dc)
+++ src/Clients/Angular/finki-chattery/src/app/shared-app/models/categories.models.ts	(revision 31a867268fbe5280d237b5abf2cdf5346242d6dc)
@@ -0,0 +1,3 @@
+export class CategoryViewModel {
+  constructor(public uid: string, public name: string) {}
+}
Index: src/Clients/Angular/finki-chattery/src/app/shared-app/models/index.ts
===================================================================
--- src/Clients/Angular/finki-chattery/src/app/shared-app/models/index.ts	(revision e6a6d9ae11319e7403580bef69b0f68e2cddd3ef)
+++ src/Clients/Angular/finki-chattery/src/app/shared-app/models/index.ts	(revision 31a867268fbe5280d237b5abf2cdf5346242d6dc)
@@ -1,2 +1,3 @@
 export * from './error.models';
 export * from './user.models';
+export * from './categories.models';
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 e6a6d9ae11319e7403580bef69b0f68e2cddd3ef)
+++ src/Clients/Angular/finki-chattery/src/app/shared-app/shared-app.module.ts	(revision 31a867268fbe5280d237b5abf2cdf5346242d6dc)
@@ -7,4 +7,5 @@
 import { NgxMaterialTimepickerModule } from 'ngx-material-timepicker';
 import { FileUploadModule } from 'ng2-file-upload';
+import { EditorModule } from '@tinymce/tinymce-angular';
 
 import { COMPONENTS } from './components/generic/components';
@@ -27,5 +28,6 @@
     FlexLayoutModule,
     FileUploadModule,
-    NgxMaterialTimepickerModule
+    NgxMaterialTimepickerModule,
+    EditorModule
   ],
   exports: [
@@ -39,5 +41,7 @@
     COMPONENTS,
     DIRECTIVES,
-    PIPES
+    PIPES,
+    SharedMaterialModule,
+    EditorModule
   ]
 })
