Index: src/Clients/Angular/finki-chattery/src/app/app-routing.module.ts
===================================================================
--- src/Clients/Angular/finki-chattery/src/app/app-routing.module.ts	(revision 3b395c5e170f381fef5308d3acd7ddc5dc205fe3)
+++ src/Clients/Angular/finki-chattery/src/app/app-routing.module.ts	(revision 31c006c6d8b79b79af08703ba96b5f456e432e7f)
@@ -11,5 +11,5 @@
   {
     path: '**',
-    redirectTo: 'public/home'
+    redirectTo: 'questioning/preview'
   }
 ];
Index: src/Clients/Angular/finki-chattery/src/app/app.component.ts
===================================================================
--- src/Clients/Angular/finki-chattery/src/app/app.component.ts	(revision 3b395c5e170f381fef5308d3acd7ddc5dc205fe3)
+++ src/Clients/Angular/finki-chattery/src/app/app.component.ts	(revision 31c006c6d8b79b79af08703ba96b5f456e432e7f)
@@ -1,4 +1,4 @@
 import { Component, OnInit } from '@angular/core';
-import { AuthService, LoaderService, RedirectService } from './core/services';
+import { LoaderService, RedirectService } from './core/services';
 
 @Component({
Index: src/Clients/Angular/finki-chattery/src/app/core/core.module.ts
===================================================================
--- src/Clients/Angular/finki-chattery/src/app/core/core.module.ts	(revision 3b395c5e170f381fef5308d3acd7ddc5dc205fe3)
+++ src/Clients/Angular/finki-chattery/src/app/core/core.module.ts	(revision 31c006c6d8b79b79af08703ba96b5f456e432e7f)
@@ -16,4 +16,5 @@
 import { EffectsModule } from '@ngrx/effects';
 import { QuestionEffects } from './state/question-state/question.effects';
+import { CategoriesEffects } from './state/category-state/category.effects';
 
 @NgModule({
@@ -36,5 +37,5 @@
       logOnly: !environment.production
     }),
-    EffectsModule.forRoot([QuestionEffects])
+    EffectsModule.forRoot([QuestionEffects, CategoriesEffects])
   ],
   exports: [HttpClientModule, COMPONENTS]
Index: src/Clients/Angular/finki-chattery/src/app/core/state/category-facade.service.ts
===================================================================
--- src/Clients/Angular/finki-chattery/src/app/core/state/category-facade.service.ts	(revision 31c006c6d8b79b79af08703ba96b5f456e432e7f)
+++ src/Clients/Angular/finki-chattery/src/app/core/state/category-facade.service.ts	(revision 31c006c6d8b79b79af08703ba96b5f456e432e7f)
@@ -0,0 +1,50 @@
+import { HttpErrorResponse } from '@angular/common/http';
+import { Injectable } from '@angular/core';
+import { Action, Store } from '@ngrx/store';
+import { Observable, throwError } from 'rxjs';
+import { catchError, filter, map } from 'rxjs/operators';
+
+import { CategoryStateViewModel } from 'src/app/shared-app/models';
+import { EffectStartedWorking, GetCategoriesState } from './category-state/category.actions';
+import { categoriesStateQuery } from './category-state/category.selectors';
+import { CategoryState } from './category-state/category.state';
+
+@Injectable({
+  providedIn: 'root'
+})
+export class CategoryFacadeService {
+  effectWorking$: Observable<boolean | HttpErrorResponse>;
+
+  constructor(private store: Store<CategoryState>) {
+    this.effectWorking$ = this.store.select(categoriesStateQuery.effectWorking).pipe(
+      filter((effect) => effect !== null),
+      map((effect) => {
+        if (effect instanceof HttpErrorResponse) {
+          throw effect;
+        } else {
+          return effect;
+        }
+      }),
+      catchError((err) => {
+        return throwError(err);
+      })
+    );
+  }
+
+  public getCategories(): Observable<CategoryStateViewModel[]> {
+    return this.store.select(categoriesStateQuery.getCategories);
+  }
+
+  public fetchCategories(): void {
+    this.dispatchEffect(new GetCategoriesState());
+  }
+
+  private dispatch(action: Action): void {
+    this.store.dispatch(action);
+  }
+
+  private dispatchEffect(action: Action): void {
+    this.dispatch(new EffectStartedWorking());
+    this.dispatch(action);
+  }
+}
Index: src/Clients/Angular/finki-chattery/src/app/core/state/category-state/category-state.models.ts
===================================================================
--- src/Clients/Angular/finki-chattery/src/app/core/state/category-state/category-state.models.ts	(revision 31c006c6d8b79b79af08703ba96b5f456e432e7f)
+++ src/Clients/Angular/finki-chattery/src/app/core/state/category-state/category-state.models.ts	(revision 31c006c6d8b79b79af08703ba96b5f456e432e7f)
@@ -0,0 +1,4 @@
+export class CategoryStateResponse {
+  public uid!: string;
+  public name!: string;
+}
Index: src/Clients/Angular/finki-chattery/src/app/core/state/category-state/category.actions.ts
===================================================================
--- src/Clients/Angular/finki-chattery/src/app/core/state/category-state/category.actions.ts	(revision 31c006c6d8b79b79af08703ba96b5f456e432e7f)
+++ src/Clients/Angular/finki-chattery/src/app/core/state/category-state/category.actions.ts	(revision 31c006c6d8b79b79af08703ba96b5f456e432e7f)
@@ -0,0 +1,43 @@
+import { HttpErrorResponse } from '@angular/common/http';
+import { Action } from '@ngrx/store';
+import { CategoryStateResponse } from './category-state.models';
+
+export enum CategoryActionTypes {
+  GetCategoriesState = '[Category] Get state',
+  GetCategoriesStateSuccess = '[Category] Get state success',
+  EffectStartedWorking = '[Category] Effect Started Working',
+  EffectFinishedWorking = '[Category] Effect Finished Working',
+  EffectFinishedWorkingError = '[Category] Effect Finished Working error'
+}
+
+export class GetCategoriesState implements Action {
+  readonly type = CategoryActionTypes.GetCategoriesState;
+
+  constructor() {}
+}
+
+export class GetCategoriesStateSuccess implements Action {
+  readonly type = CategoryActionTypes.GetCategoriesStateSuccess;
+
+  constructor(public payload: CategoryStateResponse[]) {}
+}
+
+export class EffectStartedWorking implements Action {
+  readonly type = CategoryActionTypes.EffectStartedWorking;
+
+  constructor() {}
+}
+
+export class EffectFinishedWorking implements Action {
+  readonly type = CategoryActionTypes.EffectFinishedWorking;
+
+  constructor() {}
+}
+
+export class EffectFinishedWorkingError implements Action {
+  readonly type = CategoryActionTypes.EffectFinishedWorkingError;
+
+  constructor(public payload: HttpErrorResponse) {}
+}
+
+export type CategoryAction = GetCategoriesStateSuccess | EffectStartedWorking | EffectFinishedWorking | EffectFinishedWorkingError;
Index: src/Clients/Angular/finki-chattery/src/app/core/state/category-state/category.effects.ts
===================================================================
--- src/Clients/Angular/finki-chattery/src/app/core/state/category-state/category.effects.ts	(revision 31c006c6d8b79b79af08703ba96b5f456e432e7f)
+++ src/Clients/Angular/finki-chattery/src/app/core/state/category-state/category.effects.ts	(revision 31c006c6d8b79b79af08703ba96b5f456e432e7f)
@@ -0,0 +1,37 @@
+import { Injectable } from '@angular/core';
+import { Actions, createEffect, ofType } from '@ngrx/effects';
+import { catchError, switchMap } from 'rxjs/operators';
+import { TranslateFromJsonService } from 'src/app/shared-app/services';
+
+import { BaseApiService } from 'src/app/shared-app/services/base-api.service';
+import { CategoryStateResponse } from './category-state.models';
+import {
+  CategoryActionTypes,
+  EffectFinishedWorking,
+  EffectFinishedWorkingError,
+  GetCategoriesState,
+  GetCategoriesStateSuccess
+} from './category.actions';
+import { CategoriesMapper } from './category.mapper';
+
+@Injectable({
+  providedIn: 'root'
+})
+export class CategoriesEffects {
+  constructor(private actions$: Actions, private api: BaseApiService, private translate: TranslateFromJsonService) {}
+
+  getCategoriesState$ = createEffect(() => {
+    return this.actions$.pipe(
+      ofType<GetCategoriesState>(CategoryActionTypes.GetCategoriesState),
+      switchMap((action) => {
+        return this.api.get<CategoryStateResponse[]>(`v1/categories`).pipe(
+          switchMap((state) => [
+            new GetCategoriesStateSuccess(CategoriesMapper.ToCategoriesStateViewModel(state, this.translate)),
+            new EffectFinishedWorking()
+          ]),
+          catchError((err) => [new EffectFinishedWorkingError(err)])
+        );
+      })
+    );
+  });
+}
Index: src/Clients/Angular/finki-chattery/src/app/core/state/category-state/category.mapper.ts
===================================================================
--- src/Clients/Angular/finki-chattery/src/app/core/state/category-state/category.mapper.ts	(revision 31c006c6d8b79b79af08703ba96b5f456e432e7f)
+++ src/Clients/Angular/finki-chattery/src/app/core/state/category-state/category.mapper.ts	(revision 31c006c6d8b79b79af08703ba96b5f456e432e7f)
@@ -0,0 +1,12 @@
+import { CategoryStateViewModel } from 'src/app/shared-app/models';
+import { TranslateFromJsonService } from 'src/app/shared-app/services';
+import { CategoryStateResponse } from './category-state.models';
+
+export class CategoriesMapper {
+  public static ToCategoriesStateViewModel(
+    categoriesResponse: CategoryStateResponse[],
+    translate: TranslateFromJsonService
+  ): CategoryStateViewModel[] {
+    return categoriesResponse.map((x) => new CategoryStateViewModel(x.uid, x.name, translate.instant(x.name)));
+  }
+}
Index: src/Clients/Angular/finki-chattery/src/app/core/state/category-state/category.reducers.ts
===================================================================
--- src/Clients/Angular/finki-chattery/src/app/core/state/category-state/category.reducers.ts	(revision 31c006c6d8b79b79af08703ba96b5f456e432e7f)
+++ src/Clients/Angular/finki-chattery/src/app/core/state/category-state/category.reducers.ts	(revision 31c006c6d8b79b79af08703ba96b5f456e432e7f)
@@ -0,0 +1,38 @@
+import { CategoryAction, CategoryActionTypes } from './category.actions';
+import { CategoryState, initialState } from './category.state';
+
+export function reducer(state = initialState, action: CategoryAction): CategoryState {
+  switch (action.type) {
+    case CategoryActionTypes.GetCategoriesStateSuccess:
+      return {
+        ...state,
+        categories: action.payload
+      };
+    case CategoryActionTypes.EffectStartedWorking: {
+      return {
+        ...state,
+        effectWorking: true
+      };
+    }
+
+    case CategoryActionTypes.EffectFinishedWorking: {
+      return {
+        ...state,
+        effectWorking: false
+      };
+    }
+
+    case CategoryActionTypes.EffectFinishedWorkingError: {
+      return {
+        ...state,
+        effectWorking: action.payload
+      };
+    }
+
+    default: {
+      return {
+        ...state
+      };
+    }
+  }
+}
Index: src/Clients/Angular/finki-chattery/src/app/core/state/category-state/category.selectors.ts
===================================================================
--- src/Clients/Angular/finki-chattery/src/app/core/state/category-state/category.selectors.ts	(revision 31c006c6d8b79b79af08703ba96b5f456e432e7f)
+++ src/Clients/Angular/finki-chattery/src/app/core/state/category-state/category.selectors.ts	(revision 31c006c6d8b79b79af08703ba96b5f456e432e7f)
@@ -0,0 +1,12 @@
+import { createFeatureSelector, createSelector } from '@ngrx/store';
+import { CategoryState, categoryStateKey } from './category.state';
+
+export const getCategoriesState = createFeatureSelector<CategoryState>(categoryStateKey);
+
+const getCategories = createSelector(getCategoriesState, (state) => state.categories);
+const effectWorking = createSelector(getCategoriesState, (state) => state.effectWorking);
+
+export const categoriesStateQuery = {
+  effectWorking,
+  getCategories
+};
Index: src/Clients/Angular/finki-chattery/src/app/core/state/category-state/category.state.ts
===================================================================
--- src/Clients/Angular/finki-chattery/src/app/core/state/category-state/category.state.ts	(revision 31c006c6d8b79b79af08703ba96b5f456e432e7f)
+++ src/Clients/Angular/finki-chattery/src/app/core/state/category-state/category.state.ts	(revision 31c006c6d8b79b79af08703ba96b5f456e432e7f)
@@ -0,0 +1,14 @@
+import { HttpErrorResponse } from '@angular/common/http';
+import { CategoryStateViewModel } from 'src/app/shared-app/models';
+
+export const categoryStateKey = 'category';
+
+export interface CategoryState {
+  categories: CategoryStateViewModel[];
+  effectWorking: boolean | HttpErrorResponse;
+}
+
+export const initialState: CategoryState = {
+  categories: [],
+  effectWorking: false
+};
Index: src/Clients/Angular/finki-chattery/src/app/core/state/index.ts
===================================================================
--- src/Clients/Angular/finki-chattery/src/app/core/state/index.ts	(revision 3b395c5e170f381fef5308d3acd7ddc5dc205fe3)
+++ src/Clients/Angular/finki-chattery/src/app/core/state/index.ts	(revision 31c006c6d8b79b79af08703ba96b5f456e432e7f)
@@ -2,10 +2,14 @@
 import { QuestionState } from './question-state/question.state';
 import { reducer as questionReducer } from './question-state/question.reducers';
+import { CategoryState } from './category-state/category.state';
+import { reducer as categoryReducer } from './category-state/category.reducers';
 
 export interface State {
   question: QuestionState;
+  category: CategoryState;
 }
 
 export const reducers: ActionReducerMap<State, any> = {
-  question: questionReducer
+  question: questionReducer,
+  category: categoryReducer
 };
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 3b395c5e170f381fef5308d3acd7ddc5dc205fe3)
+++ src/Clients/Angular/finki-chattery/src/app/modules/questioning/components/questioning-components.ts	(revision 31c006c6d8b79b79af08703ba96b5f456e432e7f)
@@ -1,3 +1,4 @@
 import { QuestionPreviewGeneralComponent } from './question-preview-general/question-preview-general.component';
+import { QuestionsPreviewGeneralComponent } from './questions-preview-general/questions-preview-general.component';
 
-export const QUESTIONING_COMPONENTS: any[] = [QuestionPreviewGeneralComponent];
+export const QUESTIONING_COMPONENTS: any[] = [QuestionPreviewGeneralComponent, QuestionsPreviewGeneralComponent];
Index: src/Clients/Angular/finki-chattery/src/app/modules/questioning/components/questions-preview-general/questions-preview-general.component.html
===================================================================
--- src/Clients/Angular/finki-chattery/src/app/modules/questioning/components/questions-preview-general/questions-preview-general.component.html	(revision 31c006c6d8b79b79af08703ba96b5f456e432e7f)
+++ src/Clients/Angular/finki-chattery/src/app/modules/questioning/components/questions-preview-general/questions-preview-general.component.html	(revision 31c006c6d8b79b79af08703ba96b5f456e432e7f)
@@ -0,0 +1,1 @@
+<p>questions-preview-general works!</p>
Index: src/Clients/Angular/finki-chattery/src/app/modules/questioning/components/questions-preview-general/questions-preview-general.component.spec.ts
===================================================================
--- src/Clients/Angular/finki-chattery/src/app/modules/questioning/components/questions-preview-general/questions-preview-general.component.spec.ts	(revision 31c006c6d8b79b79af08703ba96b5f456e432e7f)
+++ src/Clients/Angular/finki-chattery/src/app/modules/questioning/components/questions-preview-general/questions-preview-general.component.spec.ts	(revision 31c006c6d8b79b79af08703ba96b5f456e432e7f)
@@ -0,0 +1,25 @@
+import { ComponentFixture, TestBed } from '@angular/core/testing';
+
+import { QuestionsPreviewGeneralComponent } from './questions-preview-general.component';
+
+describe('QuestionsPreviewGeneralComponent', () => {
+  let component: QuestionsPreviewGeneralComponent;
+  let fixture: ComponentFixture<QuestionsPreviewGeneralComponent>;
+
+  beforeEach(async () => {
+    await TestBed.configureTestingModule({
+      declarations: [ QuestionsPreviewGeneralComponent ]
+    })
+    .compileComponents();
+  });
+
+  beforeEach(() => {
+    fixture = TestBed.createComponent(QuestionsPreviewGeneralComponent);
+    component = fixture.componentInstance;
+    fixture.detectChanges();
+  });
+
+  it('should create', () => {
+    expect(component).toBeTruthy();
+  });
+});
Index: src/Clients/Angular/finki-chattery/src/app/modules/questioning/components/questions-preview-general/questions-preview-general.component.ts
===================================================================
--- src/Clients/Angular/finki-chattery/src/app/modules/questioning/components/questions-preview-general/questions-preview-general.component.ts	(revision 31c006c6d8b79b79af08703ba96b5f456e432e7f)
+++ src/Clients/Angular/finki-chattery/src/app/modules/questioning/components/questions-preview-general/questions-preview-general.component.ts	(revision 31c006c6d8b79b79af08703ba96b5f456e432e7f)
@@ -0,0 +1,15 @@
+import { Component, OnInit } from '@angular/core';
+import { CategoryFacadeService } from 'src/app/core/state/category-facade.service';
+
+@Component({
+  selector: 'app-questions-preview-general',
+  templateUrl: './questions-preview-general.component.html',
+  styleUrls: ['./questions-preview-general.component.scss']
+})
+export class QuestionsPreviewGeneralComponent implements OnInit {
+  constructor(private categoriesFacade: CategoryFacadeService) {}
+
+  ngOnInit(): void {
+    this.categoriesFacade.fetchCategories();
+  }
+}
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 3b395c5e170f381fef5308d3acd7ddc5dc205fe3)
+++ src/Clients/Angular/finki-chattery/src/app/modules/questioning/questioning.module.ts	(revision 31c006c6d8b79b79af08703ba96b5f456e432e7f)
@@ -4,5 +4,4 @@
 import { QUESTIONING_COMPONENTS } from './components/questioning-components';
 import { SharedAppModule } from 'src/app/shared-app/shared-app.module';
-
 @NgModule({
   declarations: [QUESTIONING_COMPONENTS],
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 3b395c5e170f381fef5308d3acd7ddc5dc205fe3)
+++ src/Clients/Angular/finki-chattery/src/app/modules/questioning/questioning.routes.ts	(revision 31c006c6d8b79b79af08703ba96b5f456e432e7f)
@@ -2,6 +2,12 @@
 import { Routes, RouterModule } from '@angular/router';
 import { QuestionPreviewGeneralComponent } from './components/question-preview-general/question-preview-general.component';
+import { QuestionsPreviewGeneralComponent } from './components/questions-preview-general/questions-preview-general.component';
 
 const routes: Routes = [
+  {
+    path: 'preview',
+    pathMatch: 'full',
+    component: QuestionsPreviewGeneralComponent
+  },
   {
     path: ':questionUid',
Index: src/Clients/Angular/finki-chattery/src/app/shared-app/models/category-state-view-models.models.ts
===================================================================
--- src/Clients/Angular/finki-chattery/src/app/shared-app/models/category-state-view-models.models.ts	(revision 31c006c6d8b79b79af08703ba96b5f456e432e7f)
+++ src/Clients/Angular/finki-chattery/src/app/shared-app/models/category-state-view-models.models.ts	(revision 31c006c6d8b79b79af08703ba96b5f456e432e7f)
@@ -0,0 +1,3 @@
+export class CategoryStateViewModel {
+  constructor(public uid: string, public name: string, public translatedName: 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 3b395c5e170f381fef5308d3acd7ddc5dc205fe3)
+++ src/Clients/Angular/finki-chattery/src/app/shared-app/models/index.ts	(revision 31c006c6d8b79b79af08703ba96b5f456e432e7f)
@@ -2,2 +2,3 @@
 export * from './user.models';
 export * from './question-state-view-models.models';
+export * from './category-state-view-models.models';
Index: src/Clients/Angular/finki-chattery/src/assets/translations/en.json
===================================================================
--- src/Clients/Angular/finki-chattery/src/assets/translations/en.json	(revision 3b395c5e170f381fef5308d3acd7ddc5dc205fe3)
+++ src/Clients/Angular/finki-chattery/src/assets/translations/en.json	(revision 31c006c6d8b79b79af08703ba96b5f456e432e7f)
@@ -24,4 +24,8 @@
   "vote-correct-answer": "This has been accepted as the correct answer by the owner of the question",
   "answer-sort-oldest": "Oldest",
-  "answer-sort-votes": "Votes"
+  "answer-sort-votes": "Votes",
+  "internet-techologies": "Internet technologies",
+  "software-engineering": "Software engineering",
+  "visual-programming": "Visual programming",
+  "operating-systems": "Operating systems"
 }
Index: src/FinkiChattery/FinkiChattery.Api/ApplicationServices/Questioning/Mapper/CategoryMapper.cs
===================================================================
--- src/FinkiChattery/FinkiChattery.Api/ApplicationServices/Questioning/Mapper/CategoryMapper.cs	(revision 31c006c6d8b79b79af08703ba96b5f456e432e7f)
+++ src/FinkiChattery/FinkiChattery.Api/ApplicationServices/Questioning/Mapper/CategoryMapper.cs	(revision 31c006c6d8b79b79af08703ba96b5f456e432e7f)
@@ -0,0 +1,22 @@
+﻿using FinkiChattery.Contracts.Questioning.GetCategories;
+using FinkiChattery.Persistence.Models;
+using System.Collections.Generic;
+using System.Linq;
+
+namespace FinkiChattery.Api.ApplicationServices.Questioning
+{
+    public static class CategoryMapper
+    {
+        public static List<CategoryDto> ToCategoryDtos(this IEnumerable<Category> categories)
+        {
+            var categoryDtos = new List<CategoryDto>();
+
+            if (categories.Any())
+            {
+                categoryDtos = categories.Select(x => new CategoryDto(x.Uid, x.Name)).ToList();
+            }
+
+            return categoryDtos;
+        }
+    }
+}
Index: src/FinkiChattery/FinkiChattery.Api/Controllers/v1/CategoriesController.cs
===================================================================
--- src/FinkiChattery/FinkiChattery.Api/Controllers/v1/CategoriesController.cs	(revision 3b395c5e170f381fef5308d3acd7ddc5dc205fe3)
+++ src/FinkiChattery/FinkiChattery.Api/Controllers/v1/CategoriesController.cs	(revision 31c006c6d8b79b79af08703ba96b5f456e432e7f)
@@ -1,12 +1,7 @@
-﻿using FinkiChattery.Api.ApplicationServices.Authentication;
-using FinkiChattery.Api.ApplicationServices.Questioning;
-using FinkiChattery.Commands.Questioning;
+﻿using FinkiChattery.Api.ApplicationServices.Questioning;
 using FinkiChattery.Common.Mediator.Interfaces;
-using FinkiChattery.Contracts.Questioning;
 using FinkiChattery.Queries.Questioning;
-using IdentityServer4.AccessTokenValidation;
 using Microsoft.AspNetCore.Authorization;
 using Microsoft.AspNetCore.Mvc;
-using System;
 using System.Threading.Tasks;
 
@@ -29,5 +24,6 @@
         public async Task<IActionResult> GetCategories()
         {
-            return Ok();
+            var categoriesList = await MediatorService.SendQueryAsync(new GetCategoriesQuery());
+            return Ok(categoriesList.ToCategoryDtos());
         }
     }
Index: src/FinkiChattery/FinkiChattery.Contracts/Questioning/GetCategories/CategoryDto.cs
===================================================================
--- src/FinkiChattery/FinkiChattery.Contracts/Questioning/GetCategories/CategoryDto.cs	(revision 31c006c6d8b79b79af08703ba96b5f456e432e7f)
+++ src/FinkiChattery/FinkiChattery.Contracts/Questioning/GetCategories/CategoryDto.cs	(revision 31c006c6d8b79b79af08703ba96b5f456e432e7f)
@@ -0,0 +1,16 @@
+﻿using System;
+
+namespace FinkiChattery.Contracts.Questioning.GetCategories
+{
+    public class CategoryDto
+    {
+        public CategoryDto(Guid uid, string name)
+        {
+            Uid = uid;
+            Name = name;
+        }
+
+        public Guid Uid { get; }
+        public string Name { get; }
+    }
+}
Index: src/FinkiChattery/FinkiChattery.Queries/Questioning/GetCategories/GetCategoriesQuery.cs
===================================================================
--- src/FinkiChattery/FinkiChattery.Queries/Questioning/GetCategories/GetCategoriesQuery.cs	(revision 31c006c6d8b79b79af08703ba96b5f456e432e7f)
+++ src/FinkiChattery/FinkiChattery.Queries/Questioning/GetCategories/GetCategoriesQuery.cs	(revision 31c006c6d8b79b79af08703ba96b5f456e432e7f)
@@ -0,0 +1,32 @@
+﻿using FinkiChattery.Common.Mediator.Contracs;
+using FinkiChattery.Persistence.Models;
+using FinkiChattery.Persistence.UnitOfWork;
+using Microsoft.EntityFrameworkCore;
+using System.Collections.Generic;
+using System.Threading;
+using System.Threading.Tasks;
+
+namespace FinkiChattery.Queries.Questioning
+{
+    public class GetCategoriesQuery : IQuery<List<Category>>
+    {
+        public GetCategoriesQuery()
+        {
+        }
+    }
+
+    public class GetCategories : IQueryHandler<GetCategoriesQuery, List<Category>>
+    {
+        public GetCategories(IUnitOfWork unitOfWork)
+        {
+            UnitOfWork = unitOfWork;
+        }
+
+        public IUnitOfWork UnitOfWork { get; }
+
+        public async Task<List<Category>> Handle(GetCategoriesQuery request, CancellationToken cancellationToken)
+        {
+            return await UnitOfWork.Categories.All().ToListAsync();
+        }
+    }
+}
