Index: src/FinkiChattery/FinkiChattery.Api/ApplicationServices/Questioning/Mapper/QuestionMapper.cs
===================================================================
--- src/FinkiChattery/FinkiChattery.Api/ApplicationServices/Questioning/Mapper/QuestionMapper.cs	(revision b25b9eaf967e2b5c021b6243500e9528c6e5084a)
+++ src/FinkiChattery/FinkiChattery.Api/ApplicationServices/Questioning/Mapper/QuestionMapper.cs	(revision b25b9eaf967e2b5c021b6243500e9528c6e5084a)
@@ -0,0 +1,57 @@
+﻿#nullable enable
+
+using FinkiChattery.Contracts.Questioning.GetQuestionState;
+using FinkiChattery.Persistence.Repositories.Contracts;
+using System.Collections.Generic;
+using System.Linq;
+
+namespace FinkiChattery.Api.ApplicationServices.Questioning
+{
+    public static class QuestionMapper
+    {
+        public static QuestionStateResponse ToQuestionStateResponse(this QuestionStateDto questionState)
+        {
+            IEnumerable<AnswerQuestionStateResponse> answers = Enumerable.Empty<AnswerQuestionStateResponse>();
+
+            if (questionState.AnswersDto.Any())
+            {
+                answers = questionState.AnswersDto.Select(x =>
+                {
+                    IEnumerable<AnswerResponseQuestionStateResponse> answerResponses = Enumerable.Empty<AnswerResponseQuestionStateResponse>();
+
+                    if (x.AnswerResponsesDto.Any())
+                    {
+                        answerResponses = x.AnswerResponsesDto.Select(y =>
+                        {
+                            var answerResponseStudent = new AnswerResponseStudentQuestionStateResponse(y.StudentDto.Id, y.StudentDto.Uid, y.StudentDto.Index, y.StudentDto.ImageUrl);
+
+                            return new AnswerResponseQuestionStateResponse(y.Id, y.Uid, y.Text, y.CreatedOn, answerResponseStudent);
+                        });
+                    }
+
+                    var answerStudent = new AnswerStudentQuestionStateResponse(x.StudentDto.Id, x.StudentDto.Uid, x.StudentDto.Index, x.StudentDto.ImageUrl);
+
+                    return new AnswerQuestionStateResponse(x.Id, x.Uid, x.Text, x.CorrectAnswer, x.CreatedOn, x.UpvotesCount, answerStudent, answerResponses);
+                });
+            }
+
+            IEnumerable<QuestionCategoryQuestionStateResponse> questionCategories = Enumerable.Empty<QuestionCategoryQuestionStateResponse>();
+
+            if (questionState.CategoriesDto.Any())
+            {
+                questionCategories = questionState.CategoriesDto.Select(x => new QuestionCategoryQuestionStateResponse(x.Id, x.Uid, x.Name));
+            }
+
+            TeamQuestionStateResponse? team = null;
+
+            if (questionState.TeamDto != null)
+            {
+                team = new TeamQuestionStateResponse(questionState.TeamDto.Id, questionState.TeamDto.Uid, questionState.TeamDto.Name);
+            }
+
+            var student = new StudentQuestionStateResponse(questionState.StudentDto.Id, questionState.StudentDto.Uid, questionState.StudentDto.Index, questionState.StudentDto.ImageUrl);
+
+            return new QuestionStateResponse(questionState.Id, questionState.Uid, questionState.Title, questionState.Text, questionState.CreatedOn, questionState.Views, questionState.LastActiveOn, student, answers, questionCategories, team);
+        }
+    }
+}
Index: src/FinkiChattery/FinkiChattery.Api/Controllers/v1/QuestionsController.cs
===================================================================
--- src/FinkiChattery/FinkiChattery.Api/Controllers/v1/QuestionsController.cs	(revision 7dd2ea2a208bd53152525d720e2f64e2eb165729)
+++ src/FinkiChattery/FinkiChattery.Api/Controllers/v1/QuestionsController.cs	(revision b25b9eaf967e2b5c021b6243500e9528c6e5084a)
@@ -1,9 +1,12 @@
 ﻿using FinkiChattery.Api.ApplicationServices.Authentication;
+using FinkiChattery.Api.ApplicationServices.Questioning;
 using FinkiChattery.Commands.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,4 +32,12 @@
             return Ok();
         }
+
+        [HttpGet("{questionUid:Guid}")]
+        [Authorize]
+        public async Task<IActionResult> GetQuestionState([FromRoute]Guid questionUid)
+        {
+            var questionDto = await MediatorService.SendQueryAsync(new GetQuestionStateQuery(questionUid));
+            return Ok(questionDto.ToQuestionStateResponse());
+        }
     }
 }
Index: src/FinkiChattery/FinkiChattery.Api/FinkiChattery.Api.csproj
===================================================================
--- src/FinkiChattery/FinkiChattery.Api/FinkiChattery.Api.csproj	(revision 7dd2ea2a208bd53152525d720e2f64e2eb165729)
+++ src/FinkiChattery/FinkiChattery.Api/FinkiChattery.Api.csproj	(revision b25b9eaf967e2b5c021b6243500e9528c6e5084a)
@@ -26,4 +26,5 @@
     <ProjectReference Include="..\FinkiChattery.Contracts\FinkiChattery.Contracts.csproj" />
     <ProjectReference Include="..\FinkiChattery.Persistence\FinkiChattery.Persistence.csproj" />
+    <ProjectReference Include="..\FinkiChattery.Queries\FinkiChattery.Queries.csproj" />
   </ItemGroup>
 
Index: src/FinkiChattery/FinkiChattery.Api/Services/RegisterServices.cs
===================================================================
--- src/FinkiChattery/FinkiChattery.Api/Services/RegisterServices.cs	(revision 7dd2ea2a208bd53152525d720e2f64e2eb165729)
+++ src/FinkiChattery/FinkiChattery.Api/Services/RegisterServices.cs	(revision b25b9eaf967e2b5c021b6243500e9528c6e5084a)
@@ -9,4 +9,5 @@
 using FinkiChattery.Persistence.Models;
 using FinkiChattery.Persistence.Repositories;
+using FinkiChattery.Queries.Questioning;
 using Hangfire;
 using Hangfire.SqlServer;
@@ -29,5 +30,5 @@
             services.AddScoped<IEventService, EventService>();
             services.AddTransient(typeof(IPipelineBehavior<,>), typeof(ValidationBehavior<,>));
-            services.AddMediatR(typeof(AskQuestionCommand));
+            services.AddMediatR(typeof(AskQuestionCommand), typeof(GetQuestionStateQuery));
         }
 
@@ -143,6 +144,4 @@
                         services.AddScoped<IStorageService, AwsStorageService>();*/
         }
-
-        // TODO: ADD HANGFIRE AND SCAFOLD DB IN HANGFIREDB
     }
 
Index: src/FinkiChattery/FinkiChattery.Common/Mediator/Contracs/IQuery.cs
===================================================================
--- src/FinkiChattery/FinkiChattery.Common/Mediator/Contracs/IQuery.cs	(revision b25b9eaf967e2b5c021b6243500e9528c6e5084a)
+++ src/FinkiChattery/FinkiChattery.Common/Mediator/Contracs/IQuery.cs	(revision b25b9eaf967e2b5c021b6243500e9528c6e5084a)
@@ -0,0 +1,8 @@
+﻿using MediatR;
+
+namespace FinkiChattery.Common.Mediator.Contracs
+{
+    public interface IQuery<TResult> : IRequest<TResult>
+    {
+    }
+}
Index: src/FinkiChattery/FinkiChattery.Common/Mediator/Contracs/IQueryHandler.cs
===================================================================
--- src/FinkiChattery/FinkiChattery.Common/Mediator/Contracs/IQueryHandler.cs	(revision b25b9eaf967e2b5c021b6243500e9528c6e5084a)
+++ src/FinkiChattery/FinkiChattery.Common/Mediator/Contracs/IQueryHandler.cs	(revision b25b9eaf967e2b5c021b6243500e9528c6e5084a)
@@ -0,0 +1,9 @@
+﻿using MediatR;
+
+namespace FinkiChattery.Common.Mediator.Contracs
+{
+    public interface IQueryHandler<TQuery, TResult> : IRequestHandler<TQuery, TResult>
+        where TQuery : IQuery<TResult>
+    {
+    }
+}
Index: src/FinkiChattery/FinkiChattery.Common/Mediator/Interfaces/IMediatorService.cs
===================================================================
--- src/FinkiChattery/FinkiChattery.Common/Mediator/Interfaces/IMediatorService.cs	(revision 7dd2ea2a208bd53152525d720e2f64e2eb165729)
+++ src/FinkiChattery/FinkiChattery.Common/Mediator/Interfaces/IMediatorService.cs	(revision b25b9eaf967e2b5c021b6243500e9528c6e5084a)
@@ -11,4 +11,8 @@
         Task<TResponse> SendAsync<TResponse>(ICommand<TResponse> request);
 
+        Task<TResponse> SendQueryAsync<TResponse>(IQuery<TResponse> request, CancellationToken cancellationToken);
+
+        Task<TResponse> SendQueryAsync<TResponse>(IQuery<TResponse> request);
+
         Task PublishAsync<TNotification>(TNotification notification) where TNotification : IEvent;
 
Index: src/FinkiChattery/FinkiChattery.Common/Mediator/MediatorService.cs
===================================================================
--- src/FinkiChattery/FinkiChattery.Common/Mediator/MediatorService.cs	(revision 7dd2ea2a208bd53152525d720e2f64e2eb165729)
+++ src/FinkiChattery/FinkiChattery.Common/Mediator/MediatorService.cs	(revision b25b9eaf967e2b5c021b6243500e9528c6e5084a)
@@ -37,4 +37,14 @@
             await mediator.Publish(notification, default);
         }
+
+        public async Task<TResponse> SendQueryAsync<TResponse>(IQuery<TResponse> request, CancellationToken cancellationToken)
+        {
+            return await mediator.Send(request, cancellationToken);
+        }
+
+        public async Task<TResponse> SendQueryAsync<TResponse>(IQuery<TResponse> request)
+        {
+            return await mediator.Send(request);
+        }
     }
 }
Index: src/FinkiChattery/FinkiChattery.Contracts/Questioning/GetQuestionState/QuestionStateResponse.cs
===================================================================
--- src/FinkiChattery/FinkiChattery.Contracts/Questioning/GetQuestionState/QuestionStateResponse.cs	(revision b25b9eaf967e2b5c021b6243500e9528c6e5084a)
+++ src/FinkiChattery/FinkiChattery.Contracts/Questioning/GetQuestionState/QuestionStateResponse.cs	(revision b25b9eaf967e2b5c021b6243500e9528c6e5084a)
@@ -0,0 +1,164 @@
+﻿#nullable enable
+
+using System;
+using System.Collections.Generic;
+using System.Text.Json.Serialization;
+
+namespace FinkiChattery.Contracts.Questioning.GetQuestionState
+{
+    public class QuestionStateResponse
+    {
+        public QuestionStateResponse(long id, Guid uid, string title, string text, DateTime createdOn, long views, DateTime lastActiveOn, StudentQuestionStateResponse studentResponse, IEnumerable<AnswerQuestionStateResponse> answersResponse, IEnumerable<QuestionCategoryQuestionStateResponse> categoriesResponse, TeamQuestionStateResponse? teamResponse)
+        {
+            Id = id;
+            Uid = uid;
+            Title = title;
+            Text = text;
+            CreatedOn = createdOn;
+            Views = views;
+            LastActiveOn = lastActiveOn;
+            StudentResponse = studentResponse;
+            AnswersResponse = answersResponse;
+            CategoriesResponse = categoriesResponse;
+            TeamResponse = teamResponse;
+        }
+
+        [JsonIgnore]
+        public long Id { get; }
+        public Guid Uid { get; }
+        public string Title { get; }
+        public string Text { get; }
+        public DateTime CreatedOn { get; }
+        public long Views { get; }
+        public DateTime LastActiveOn { get; }
+        public StudentQuestionStateResponse StudentResponse { get; }
+        public IEnumerable<AnswerQuestionStateResponse> AnswersResponse { get; }
+        public IEnumerable<QuestionCategoryQuestionStateResponse> CategoriesResponse { get; }
+        public TeamQuestionStateResponse? TeamResponse { get; }
+    }
+
+    public class StudentQuestionStateResponse
+    {
+        public StudentQuestionStateResponse(long id, Guid uid, string index, string imageUrl)
+        {
+            Id = id;
+            Uid = uid;
+            Index = index;
+            ImageUrl = imageUrl;
+        }
+
+        [JsonIgnore]
+        public long Id { get; }
+        public Guid Uid { get; }
+        public string Index { get; }
+        public string ImageUrl { get; }
+    }
+
+    public class TeamQuestionStateResponse
+    {
+        public TeamQuestionStateResponse(long id, Guid uid, string name)
+        {
+            Id = id;
+            Uid = uid;
+            Name = name;
+        }
+
+        [JsonIgnore]
+        public long Id { get; }
+        public Guid Uid { get; }
+        public string Name { get; }
+    }
+
+    public class QuestionCategoryQuestionStateResponse
+    {
+        public QuestionCategoryQuestionStateResponse(long id, Guid uid, string name)
+        {
+            Id = id;
+            Uid = uid;
+            Name = name;
+        }
+
+        [JsonIgnore]
+        public long Id { get; }
+        public Guid Uid { get; }
+        public string Name { get; }
+    }
+
+    public class AnswerQuestionStateResponse
+    {
+        public AnswerQuestionStateResponse(long id, Guid uid, string text, bool correctAnswer, DateTime createdOn, long upvotesCount, AnswerStudentQuestionStateResponse studentResponse, IEnumerable<AnswerResponseQuestionStateResponse> answerResponsesResponse)
+        {
+            Id = id;
+            Uid = uid;
+            Text = text;
+            CorrectAnswer = correctAnswer;
+            CreatedOn = createdOn;
+            UpvotesCount = upvotesCount;
+            StudentResponse = studentResponse;
+            AnswerResponsesResponse = answerResponsesResponse;
+        }
+
+        [JsonIgnore]
+        public long Id { get; }
+        public Guid Uid { get; }
+        public string Text { get; }
+        public bool CorrectAnswer { get; }
+        public DateTime CreatedOn { get; }
+        public long UpvotesCount { get; }
+        public AnswerStudentQuestionStateResponse StudentResponse { get; }
+        public IEnumerable<AnswerResponseQuestionStateResponse> AnswerResponsesResponse { get; }
+    }
+
+    public class AnswerStudentQuestionStateResponse
+    {
+        public AnswerStudentQuestionStateResponse(long id, Guid uid, string index, string imageUrl)
+        {
+            Id = id;
+            Uid = uid;
+            Index = index;
+            ImageUrl = imageUrl;
+        }
+
+        [JsonIgnore]
+        public long Id { get; }
+        public Guid Uid { get; }
+        public string Index { get; }
+        public string ImageUrl { get; }
+    }
+
+    public class AnswerResponseQuestionStateResponse
+    {
+        public AnswerResponseQuestionStateResponse(long id, Guid uid, string text, DateTime createdOn, AnswerResponseStudentQuestionStateResponse studentResponse)
+        {
+            Id = id;
+            Uid = uid;
+            Text = text;
+            CreatedOn = createdOn;
+            StudentResponse = studentResponse;
+        }
+
+        [JsonIgnore]
+        public long Id { get; }
+        public Guid Uid { get; }
+        public string Text { get; }
+        public DateTime CreatedOn { get; }
+        public AnswerResponseStudentQuestionStateResponse StudentResponse { get; }
+    }
+
+    public class AnswerResponseStudentQuestionStateResponse
+    {
+        public AnswerResponseStudentQuestionStateResponse(long id, Guid uid, string index, string imageUrl)
+        {
+            Id = id;
+            Uid = uid;
+            Index = index;
+            ImageUrl = imageUrl;
+        }
+
+        [JsonIgnore]
+        public long Id { get; }
+        public Guid Uid { get; }
+        public string Index { get; }
+        public string ImageUrl { get; }
+    }
+}
Index: src/FinkiChattery/FinkiChattery.Database/FinkiChattery.Database.refactorlog
===================================================================
--- src/FinkiChattery/FinkiChattery.Database/FinkiChattery.Database.refactorlog	(revision b25b9eaf967e2b5c021b6243500e9528c6e5084a)
+++ src/FinkiChattery/FinkiChattery.Database/FinkiChattery.Database.refactorlog	(revision b25b9eaf967e2b5c021b6243500e9528c6e5084a)
@@ -0,0 +1,1 @@
+﻿
Index: src/FinkiChattery/FinkiChattery.Database/FinkiChattery.Database.sqlproj
===================================================================
--- src/FinkiChattery/FinkiChattery.Database/FinkiChattery.Database.sqlproj	(revision 7dd2ea2a208bd53152525d720e2f64e2eb165729)
+++ src/FinkiChattery/FinkiChattery.Database/FinkiChattery.Database.sqlproj	(revision b25b9eaf967e2b5c021b6243500e9528c6e5084a)
@@ -70,14 +70,15 @@
     <Folder Include="dbo\Tables\Student" />
     <Folder Include="FullTextSearch" />
+    <Folder Include="dbo\Tables\Answer" />
+    <Folder Include="dbo\Tables\AnswerResponse" />
+    <Folder Include="dbo\Tables\Question" />
+    <Folder Include="dbo\Tables\QuestionCategory" />
+    <Folder Include="Snapshots" />
   </ItemGroup>
   <ItemGroup>
     <Build Include="dbo\Tables\Moderator.sql" />
     <Build Include="dbo\Tables\Teacher.sql" />
-    <Build Include="dbo\Tables\Question.sql" />
     <Build Include="dbo\Tables\StudentTeam.sql" />
     <Build Include="dbo\Tables\TeacherTeam.sql" />
-    <Build Include="dbo\Tables\Answer.sql" />
-    <Build Include="dbo\Tables\QuestionCategory.sql" />
-    <Build Include="dbo\Tables\AnswerResponse.sql" />
     <Build Include="dbo\Tables\Upvote.sql" />
     <Build Include="dbo\Tables\User\AspNetRoleClaims.sql" />
@@ -91,4 +92,12 @@
     <Build Include="FullTextSearch\FullTextIndexQuestion.sql" />
     <Build Include="FullTextSearch\QuestionFullTextCatalog.sql" />
+    <Build Include="dbo\Tables\Question\Question.sql" />
+    <None Include="dbo\Tables\Question\Question.Debug.Seed.sql" />
+    <Build Include="dbo\Tables\Answer\Answer.sql" />
+    <None Include="dbo\Tables\Answer\Answer.Debug.Seed.sql" />
+    <Build Include="dbo\Tables\AnswerResponse\AnswerResponse.sql" />
+    <None Include="dbo\Tables\AnswerResponse\AnswerResponse.Debug.Seed.sql" />
+    <Build Include="dbo\Tables\QuestionCategory\QuestionCategory.sql" />
+    <None Include="dbo\Tables\QuestionCategory\QuestionCategory.Debug.Seed.sql" />
   </ItemGroup>
   <ItemGroup>
@@ -97,4 +106,5 @@
     <PreDeploy Include="dbo\Scripts\Script.PreDeployment.sql" />
     <None Include="FinkiChattery.Database.publish.xml" />
+    <None Include="Snapshots\FinkiChattery.Database_20210922_17-47-58.dacpac" />
   </ItemGroup>
   <ItemGroup>
@@ -120,3 +130,6 @@
     </SqlCmdVariable>
   </ItemGroup>
+  <ItemGroup>
+    <RefactorLog Include="FinkiChattery.Database.refactorlog" />
+  </ItemGroup>
 </Project>
Index: src/FinkiChattery/FinkiChattery.Database/dbo/Scripts/PostDeploymentScripts/Debug.PostDeployment.sql
===================================================================
--- src/FinkiChattery/FinkiChattery.Database/dbo/Scripts/PostDeploymentScripts/Debug.PostDeployment.sql	(revision 7dd2ea2a208bd53152525d720e2f64e2eb165729)
+++ src/FinkiChattery/FinkiChattery.Database/dbo/Scripts/PostDeploymentScripts/Debug.PostDeployment.sql	(revision b25b9eaf967e2b5c021b6243500e9528c6e5084a)
@@ -1,3 +1,7 @@
-﻿:r .\..\..\Tables\User\Seed\Users.Debug.Seed.sql
-:r .\..\..\Tables\Category\Category.Seed.sql
-:r .\..\..\Tables\Student\Student.Debug.Seed.sql
+﻿:r ./../../Tables/User/Seed/Users.Debug.Seed.sql
+:r ./../../Tables/Category/Category.Seed.sql
+:r ./../../Tables/Student/Student.Debug.Seed.sql
+:r ./../../Tables/Question/Question.Debug.Seed.sql
+:r ./../../Tables/Answer/Answer.Debug.Seed.sql
+:r ./../../Tables/AnswerResponse/AnswerResponse.Debug.Seed.sql
+:r ./../../Tables/QuestionCategory/QuestionCategory.Debug.Seed.sql
Index: src/FinkiChattery/FinkiChattery.Database/dbo/Scripts/PostDeploymentScripts/Production.PostDeployment.sql
===================================================================
--- src/FinkiChattery/FinkiChattery.Database/dbo/Scripts/PostDeploymentScripts/Production.PostDeployment.sql	(revision 7dd2ea2a208bd53152525d720e2f64e2eb165729)
+++ src/FinkiChattery/FinkiChattery.Database/dbo/Scripts/PostDeploymentScripts/Production.PostDeployment.sql	(revision b25b9eaf967e2b5c021b6243500e9528c6e5084a)
@@ -1,1 +1,1 @@
-﻿:r .\..\..\Tables\Category\Category.Seed.sql
+﻿:r ./../../Tables/Category/Category.Seed.sql
Index: src/FinkiChattery/FinkiChattery.Database/dbo/Scripts/Script.PostDeployment.sql
===================================================================
--- src/FinkiChattery/FinkiChattery.Database/dbo/Scripts/Script.PostDeployment.sql	(revision 7dd2ea2a208bd53152525d720e2f64e2eb165729)
+++ src/FinkiChattery/FinkiChattery.Database/dbo/Scripts/Script.PostDeployment.sql	(revision b25b9eaf967e2b5c021b6243500e9528c6e5084a)
@@ -4,5 +4,5 @@
 		PRINT 'Deploying DEBUG scripts';
 	END
-	:r .\PostDeploymentScripts\Debug.PostDeployment.sql
+	:r ./PostDeploymentScripts/Debug.PostDeployment.sql
 	BEGIN --Run scripts 
 		PRINT 'End deploying DEBUG scripts';
@@ -15,5 +15,5 @@
 		PRINT 'Deploying PRODUCTION scripts' 
 	END
-		:r .\PostDeploymentScripts\Production.PostDeployment.sql
+		:r ./PostDeploymentScripts/Production.PostDeployment.sql
 		BEGIN --Run scripts 
 		PRINT 'End deploying PRODUCTION scripts' 
Index: src/FinkiChattery/FinkiChattery.Database/dbo/Scripts/Script.PreDeployment.sql
===================================================================
--- src/FinkiChattery/FinkiChattery.Database/dbo/Scripts/Script.PreDeployment.sql	(revision 7dd2ea2a208bd53152525d720e2f64e2eb165729)
+++ src/FinkiChattery/FinkiChattery.Database/dbo/Scripts/Script.PreDeployment.sql	(revision b25b9eaf967e2b5c021b6243500e9528c6e5084a)
@@ -4,5 +4,5 @@
 		PRINT 'Deploying DEBUG pre deployment scripts';
 	END
-	:r .\PreDeploymentScripts\Debug.PreDeployment.sql
+	:r ./PreDeploymentScripts/Debug.PreDeployment.sql
 	BEGIN --Run scripts 
 		PRINT 'End deploying DEBUG pre deployment scripts';
@@ -15,5 +15,5 @@
 		PRINT 'Deploying PRODUCTION pre deployment scripts' 
 	END
-	:r .\PreDeploymentScripts\Production.PreDeployment.sql
+	:r ./PreDeploymentScripts/Production.PreDeployment.sql
 	BEGIN --Run scripts 
 		PRINT 'End deploying PRODUCTION pre deployment scripts' 
Index: c/FinkiChattery/FinkiChattery.Database/dbo/Tables/Answer.sql
===================================================================
--- src/FinkiChattery/FinkiChattery.Database/dbo/Tables/Answer.sql	(revision 7dd2ea2a208bd53152525d720e2f64e2eb165729)
+++ 	(revision )
@@ -1,23 +1,0 @@
-﻿CREATE TABLE [dbo].[Answer] (
-    [Id]            BIGINT           IDENTITY (1, 1) NOT NULL,
-    [Uid]           UNIQUEIDENTIFIER NOT NULL,
-    [Text]          NVARCHAR (4000)  NOT NULL,
-    [QuestionFk]    BIGINT           NOT NULL,
-    [StudentFk]     BIGINT           NOT NULL,
-    [CorrectAnswer] BIT              NOT NULL,
-    [CreatedOn]     SMALLDATETIME    NOT NULL,
-    CONSTRAINT [PK_Answer] PRIMARY KEY CLUSTERED ([Id] ASC),
-    CONSTRAINT [FK_Answer_Question_QuestionFk] FOREIGN KEY ([QuestionFk]) REFERENCES [dbo].[Question] ([Id]),
-    CONSTRAINT [FK_Answer_Student_StudentFk] FOREIGN KEY ([StudentFk]) REFERENCES [dbo].[Student] ([Id])
-);
-
-
-GO
-CREATE NONCLUSTERED INDEX [IX_Answer_QuestionFk]
-    ON [dbo].[Answer]([QuestionFk] ASC);
-
-
-GO
-CREATE NONCLUSTERED INDEX [IX_Answer_StudentFk]
-    ON [dbo].[Answer]([StudentFk] ASC);
-
Index: src/FinkiChattery/FinkiChattery.Database/dbo/Tables/Answer/Answer.Debug.Seed.sql
===================================================================
--- src/FinkiChattery/FinkiChattery.Database/dbo/Tables/Answer/Answer.Debug.Seed.sql	(revision b25b9eaf967e2b5c021b6243500e9528c6e5084a)
+++ src/FinkiChattery/FinkiChattery.Database/dbo/Tables/Answer/Answer.Debug.Seed.sql	(revision b25b9eaf967e2b5c021b6243500e9528c6e5084a)
@@ -0,0 +1,39 @@
+﻿BEGIN
+    SET IDENTITY_INSERT [dbo].[Answer] ON
+    MERGE [dbo].[Answer] AS T
+    USING
+    (
+        SELECT *
+        FROM
+    (
+        VALUES
+            (1, N'aee193c3-9d36-4ed8-81b2-15eb4ff305f1', N'Answer 1', 1, 1, 1, GETUTCDATE(), 5),
+            (2, N'bee193c3-9d36-4ed8-81b2-15eb4ff305f1', N'Answer 2', 1, 1, 0, GETUTCDATE(), 5),
+            (3, N'cee193c3-9d36-4ed8-81b2-15eb4ff305f1', N'Answer 3', 2, 1, 1, GETUTCDATE(), 5),
+            (4, N'dee193c3-9d36-4ed8-81b2-15eb4ff305f1', N'Answer 4', 2, 1, 0, GETUTCDATE(), 5)
+    ) AS temp ([Id], [Uid], [Text], [QuestionFk], [StudentFk], [CorrectAnswer], [CreatedOn], [UpvotesCount])
+    ) AS S
+    ON T.[ID] = S.[ID]
+    WHEN MATCHED THEN
+        UPDATE SET T.[Uid] = S.[Uid],
+                   T.[Text] = S.[Text],
+                   T.[QuestionFk] = S.[QuestionFk],
+                   T.[StudentFk] = S.[StudentFk],
+                   T.[CorrectAnswer] = S.[CorrectAnswer],
+                   T.[UpvotesCount] = S.[UpvotesCount]
+    WHEN NOT MATCHED THEN
+        INSERT
+        (
+            [Id],
+            [Uid],
+            [Text],
+            [QuestionFk],
+            [StudentFk],
+            [CorrectAnswer],
+            [CreatedOn],
+            [UpvotesCount]
+        )
+        VALUES
+        (S.[Id], S.[Uid], S.[Text], S.[QuestionFk], S.[StudentFk], S.[CorrectAnswer], S.[CreatedOn], S.[UpvotesCount]);
+    SET IDENTITY_INSERT [dbo].[Answer] OFF
+END
Index: src/FinkiChattery/FinkiChattery.Database/dbo/Tables/Answer/Answer.sql
===================================================================
--- src/FinkiChattery/FinkiChattery.Database/dbo/Tables/Answer/Answer.sql	(revision b25b9eaf967e2b5c021b6243500e9528c6e5084a)
+++ src/FinkiChattery/FinkiChattery.Database/dbo/Tables/Answer/Answer.sql	(revision b25b9eaf967e2b5c021b6243500e9528c6e5084a)
@@ -0,0 +1,24 @@
+﻿CREATE TABLE [dbo].[Answer] (
+    [Id]            BIGINT           IDENTITY (1, 1) NOT NULL,
+    [Uid]           UNIQUEIDENTIFIER NOT NULL,
+    [Text]          NVARCHAR (4000)  NOT NULL,
+    [QuestionFk]    BIGINT           NOT NULL,
+    [StudentFk]     BIGINT           NOT NULL,
+    [CorrectAnswer] BIT              NOT NULL,
+    [CreatedOn]     SMALLDATETIME    NOT NULL,
+    [UpvotesCount] BIGINT NOT NULL DEFAULT 0, 
+    CONSTRAINT [PK_Answer] PRIMARY KEY CLUSTERED ([Id] ASC),
+    CONSTRAINT [FK_Answer_Question_QuestionFk] FOREIGN KEY ([QuestionFk]) REFERENCES [dbo].[Question] ([Id]),
+    CONSTRAINT [FK_Answer_Student_StudentFk] FOREIGN KEY ([StudentFk]) REFERENCES [dbo].[Student] ([Id])
+);
+
+
+GO
+CREATE NONCLUSTERED INDEX [IX_Answer_QuestionFk]
+    ON [dbo].[Answer]([QuestionFk] ASC);
+
+
+GO
+CREATE NONCLUSTERED INDEX [IX_Answer_StudentFk]
+    ON [dbo].[Answer]([StudentFk] ASC);
+
Index: c/FinkiChattery/FinkiChattery.Database/dbo/Tables/AnswerResponse.sql
===================================================================
--- src/FinkiChattery/FinkiChattery.Database/dbo/Tables/AnswerResponse.sql	(revision 7dd2ea2a208bd53152525d720e2f64e2eb165729)
+++ 	(revision )
@@ -1,17 +1,0 @@
-﻿CREATE TABLE [dbo].[AnswerResponse] (
-    [Id]        BIGINT           IDENTITY (1, 1) NOT NULL,
-    [Uid]       UNIQUEIDENTIFIER NOT NULL,
-    [Text]      NVARCHAR (4000)  NOT NULL,
-    [AnswerFk]  BIGINT           NOT NULL,
-    [StudentFk] BIGINT           NOT NULL,
-    [CreatedOn] SMALLDATETIME    NOT NULL,
-    CONSTRAINT [PK_AnswerResponse] PRIMARY KEY CLUSTERED ([Id] ASC),
-    CONSTRAINT [FK_AnswerResponse_Answer_AnswerFk] FOREIGN KEY ([AnswerFk]) REFERENCES [dbo].[Answer] ([Id]),
-    CONSTRAINT [FK_AnswerResponse_Student_AnswerFk] FOREIGN KEY ([AnswerFk]) REFERENCES [dbo].[Student] ([Id])
-);
-
-
-GO
-CREATE NONCLUSTERED INDEX [IX_AnswerResponse_AnswerFk]
-    ON [dbo].[AnswerResponse]([AnswerFk] ASC);
-
Index: src/FinkiChattery/FinkiChattery.Database/dbo/Tables/AnswerResponse/AnswerResponse.Debug.Seed.sql
===================================================================
--- src/FinkiChattery/FinkiChattery.Database/dbo/Tables/AnswerResponse/AnswerResponse.Debug.Seed.sql	(revision b25b9eaf967e2b5c021b6243500e9528c6e5084a)
+++ src/FinkiChattery/FinkiChattery.Database/dbo/Tables/AnswerResponse/AnswerResponse.Debug.Seed.sql	(revision b25b9eaf967e2b5c021b6243500e9528c6e5084a)
@@ -0,0 +1,40 @@
+﻿BEGIN
+    SET IDENTITY_INSERT [dbo].[AnswerResponse] ON
+    MERGE [dbo].[AnswerResponse] AS T
+    USING
+    (
+        SELECT *
+        FROM
+    (
+        VALUES
+            (1, N'aee193c3-9d36-4ed8-81b2-15eb4ff305f1', N'Answer response 1', 1, 1, GETUTCDATE()),
+            (2, N'bee193c3-9d36-4ed8-81b2-15eb4ff305f1', N'Answer response 2', 1, 1, GETUTCDATE()),
+            (3, N'cee193c3-9d36-4ed8-81b2-15eb4ff305f1', N'Answer response 3', 2, 1, GETUTCDATE()),
+            (4, N'dee193c3-9d36-4ed8-81b2-15eb4ff305f1', N'Answer response 4', 2, 1, GETUTCDATE()),
+            (5, N'f0486b3e-39d0-4350-81dc-7583c7a6be28', N'Answer response 5', 3, 1, GETUTCDATE()),
+            (6, N'378bcf7e-012a-413a-9493-aa2dc590ca65', N'Answer response 6', 3, 1, GETUTCDATE()),
+            (7, N'a8f5a8bb-3c35-4866-a981-44bb4200873b', N'Answer response 7', 4, 1, GETUTCDATE()),
+            (8, N'8b1b8b78-2baa-4112-99c4-af3c9991c47d', N'Answer response 8', 4, 1, GETUTCDATE())
+    ) AS temp ([Id], [Uid], [Text], [AnswerFk], [StudentFk], [CreatedOn])
+    ) AS S
+    ON T.[ID] = S.[ID]
+    WHEN MATCHED THEN
+        UPDATE SET T.[Uid] = S.[Uid],
+                   T.[Text] = S.[Text],
+                   T.[AnswerFk] = S.[AnswerFk],
+                   T.[StudentFk] = S.[StudentFk],
+                   T.[CreatedOn] = S.[CreatedOn]
+    WHEN NOT MATCHED THEN
+        INSERT
+        (
+            [Id],
+            [Uid],
+            [Text],
+            [AnswerFk],
+            [StudentFk],
+            [CreatedOn]
+        )
+        VALUES
+        (S.[Id], S.[Uid], S.[Text], S.[AnswerFk], S.[StudentFk], S.[CreatedOn]);
+    SET IDENTITY_INSERT [dbo].[AnswerResponse] OFF
+END
Index: src/FinkiChattery/FinkiChattery.Database/dbo/Tables/AnswerResponse/AnswerResponse.sql
===================================================================
--- src/FinkiChattery/FinkiChattery.Database/dbo/Tables/AnswerResponse/AnswerResponse.sql	(revision b25b9eaf967e2b5c021b6243500e9528c6e5084a)
+++ src/FinkiChattery/FinkiChattery.Database/dbo/Tables/AnswerResponse/AnswerResponse.sql	(revision b25b9eaf967e2b5c021b6243500e9528c6e5084a)
@@ -0,0 +1,17 @@
+﻿CREATE TABLE [dbo].[AnswerResponse] (
+    [Id]        BIGINT           IDENTITY (1, 1) NOT NULL,
+    [Uid]       UNIQUEIDENTIFIER NOT NULL,
+    [Text]      NVARCHAR (4000)  NOT NULL,
+    [AnswerFk]  BIGINT           NOT NULL,
+    [StudentFk] BIGINT           NOT NULL,
+    [CreatedOn] SMALLDATETIME    NOT NULL,
+    CONSTRAINT [PK_AnswerResponse] PRIMARY KEY CLUSTERED ([Id] ASC),
+    CONSTRAINT [FK_AnswerResponse_Answer_AnswerFk] FOREIGN KEY ([AnswerFk]) REFERENCES [dbo].[Answer] ([Id]),
+    CONSTRAINT [FK_AnswerResponse_Student_AnswerFk] FOREIGN KEY ([StudentFk]) REFERENCES [dbo].[Student] ([Id])
+);
+
+
+GO
+CREATE NONCLUSTERED INDEX [IX_AnswerResponse_AnswerFk]
+    ON [dbo].[AnswerResponse]([AnswerFk] ASC);
+
Index: c/FinkiChattery/FinkiChattery.Database/dbo/Tables/Question.sql
===================================================================
--- src/FinkiChattery/FinkiChattery.Database/dbo/Tables/Question.sql	(revision 7dd2ea2a208bd53152525d720e2f64e2eb165729)
+++ 	(revision )
@@ -1,26 +1,0 @@
-﻿CREATE TABLE [dbo].[Question] (
-    [Id]           BIGINT           IDENTITY (1, 1) NOT NULL,
-    [Uid]          UNIQUEIDENTIFIER NOT NULL,
-    [Title]        NVARCHAR (500)   NOT NULL,
-    [Text]         NVARCHAR (MAX)   NULL,
-    [StudentFk]    BIGINT           NOT NULL,
-    [CreatedOn]    SMALLDATETIME    NOT NULL,
-    [TeamFk]       BIGINT           NULL,
-    [Views]        BIGINT           DEFAULT (CONVERT([bigint],(0))) NOT NULL,
-    [LastActiveOn] SMALLDATETIME    NOT NULL,
-    [Search]       AS ([Title] + ' ' + [Text]), 
-    CONSTRAINT [PK_Question] PRIMARY KEY CLUSTERED ([Id] ASC),
-    CONSTRAINT [FK_Question_Student_StudentFk] FOREIGN KEY ([StudentFk]) REFERENCES [dbo].[Student] ([Id]),
-    CONSTRAINT [FK_Question_Team_TeamFk] FOREIGN KEY ([TeamFk]) REFERENCES [dbo].[Team] ([Id])
-);
-
-
-GO
-CREATE NONCLUSTERED INDEX [IX_Question_StudentFk]
-    ON [dbo].[Question]([StudentFk] ASC);
-
-
-GO
-CREATE NONCLUSTERED INDEX [IX_Question_TeamFk]
-    ON [dbo].[Question]([TeamFk] ASC);
-
Index: src/FinkiChattery/FinkiChattery.Database/dbo/Tables/Question/Question.Debug.Seed.sql
===================================================================
--- src/FinkiChattery/FinkiChattery.Database/dbo/Tables/Question/Question.Debug.Seed.sql	(revision b25b9eaf967e2b5c021b6243500e9528c6e5084a)
+++ src/FinkiChattery/FinkiChattery.Database/dbo/Tables/Question/Question.Debug.Seed.sql	(revision b25b9eaf967e2b5c021b6243500e9528c6e5084a)
@@ -0,0 +1,44 @@
+﻿BEGIN
+    SET IDENTITY_INSERT [dbo].[Question] ON
+    MERGE [dbo].[Question] AS T
+    USING
+    (
+        SELECT *
+        FROM
+    (
+        VALUES
+            (1, N'aee193c3-9d36-4ed8-81b2-15eb4ff305f1', N'Question 1', 'Question 1 text', 1, GETUTCDATE(), NULL, 0,
+             GETUTCDATE()
+            ),
+            (2, N'bee193c3-9d36-4ed8-81b2-15eb4ff305f1', N'Question 2', 'Question 2 text', 1, GETUTCDATE(), NULL, 0,
+             GETUTCDATE()
+            )
+    ) AS temp ([ID], [Uid], [Title], [Text], [StudentFk], [CreatedOn], [TeamFk], [Views], [LastActiveOn])
+    ) AS S
+    ON T.[ID] = S.[ID]
+    WHEN MATCHED THEN
+        UPDATE SET T.[Uid] = S.[Uid],
+                   T.[Title] = S.[Title],
+                   T.[Text] = S.[Text],
+                   T.[StudentFk] = S.[StudentFk],
+                   T.[CreatedOn] = S.[CreatedOn],
+                   T.[TeamFk] = S.[TeamFk],
+                   T.[Views] = S.[Views],
+                   T.[LastActiveOn] = S.[LastActiveOn]
+    WHEN NOT MATCHED THEN
+        INSERT
+        (
+            [ID],
+            [Uid],
+            [Title],
+            [Text],
+            [StudentFk],
+            [CreatedOn],
+            [TeamFk],
+            [Views],
+            [LastActiveOn]
+        )
+        VALUES
+        (S.[ID], S.[Uid], S.[Title], S.[Text], S.[StudentFk], S.[CreatedOn], S.[TeamFk], S.[Views], S.[LastActiveOn]);
+    SET IDENTITY_INSERT [dbo].[Question] OFF
+END
Index: src/FinkiChattery/FinkiChattery.Database/dbo/Tables/Question/Question.sql
===================================================================
--- src/FinkiChattery/FinkiChattery.Database/dbo/Tables/Question/Question.sql	(revision b25b9eaf967e2b5c021b6243500e9528c6e5084a)
+++ src/FinkiChattery/FinkiChattery.Database/dbo/Tables/Question/Question.sql	(revision b25b9eaf967e2b5c021b6243500e9528c6e5084a)
@@ -0,0 +1,26 @@
+﻿CREATE TABLE [dbo].[Question] (
+    [Id]           BIGINT           IDENTITY (1, 1) NOT NULL,
+    [Uid]          UNIQUEIDENTIFIER NOT NULL,
+    [Title]        NVARCHAR (500)   NOT NULL,
+    [Text]         NVARCHAR (MAX)   NULL,
+    [StudentFk]    BIGINT           NOT NULL,
+    [CreatedOn]    SMALLDATETIME    NOT NULL,
+    [TeamFk]       BIGINT           NULL,
+    [Views]        BIGINT           DEFAULT (CONVERT([bigint],(0))) NOT NULL,
+    [LastActiveOn] SMALLDATETIME    NOT NULL,
+    [Search]       AS ([Title] + ' ' + [Text]), 
+    CONSTRAINT [PK_Question] PRIMARY KEY CLUSTERED ([Id] ASC),
+    CONSTRAINT [FK_Question_Student_StudentFk] FOREIGN KEY ([StudentFk]) REFERENCES [dbo].[Student] ([Id]),
+    CONSTRAINT [FK_Question_Team_TeamFk] FOREIGN KEY ([TeamFk]) REFERENCES [dbo].[Team] ([Id])
+);
+
+
+GO
+CREATE NONCLUSTERED INDEX [IX_Question_StudentFk]
+    ON [dbo].[Question]([StudentFk] ASC);
+
+
+GO
+CREATE NONCLUSTERED INDEX [IX_Question_TeamFk]
+    ON [dbo].[Question]([TeamFk] ASC);
+
Index: c/FinkiChattery/FinkiChattery.Database/dbo/Tables/QuestionCategory.sql
===================================================================
--- src/FinkiChattery/FinkiChattery.Database/dbo/Tables/QuestionCategory.sql	(revision 7dd2ea2a208bd53152525d720e2f64e2eb165729)
+++ 	(revision )
@@ -1,15 +1,0 @@
-﻿CREATE TABLE [dbo].[QuestionCategory] (
-    [Id]         BIGINT           IDENTITY (1, 1) NOT NULL,
-    [Uid]        UNIQUEIDENTIFIER NOT NULL,
-    [QuestionFk] BIGINT           NOT NULL,
-    [CategoryFk] BIGINT           NOT NULL,
-    CONSTRAINT [PK_QuestionCategory] PRIMARY KEY CLUSTERED ([Id] ASC),
-    CONSTRAINT [FK_QuestionCategory_Category_QuestionFk] FOREIGN KEY ([QuestionFk]) REFERENCES [dbo].[Category] ([Id]),
-    CONSTRAINT [FK_QuestionCategory_Question_QuestionFk] FOREIGN KEY ([QuestionFk]) REFERENCES [dbo].[Question] ([Id])
-);
-
-
-GO
-CREATE NONCLUSTERED INDEX [IX_QuestionCategory_QuestionFk]
-    ON [dbo].[QuestionCategory]([QuestionFk] ASC);
-
Index: src/FinkiChattery/FinkiChattery.Database/dbo/Tables/QuestionCategory/QuestionCategory.Debug.Seed.sql
===================================================================
--- src/FinkiChattery/FinkiChattery.Database/dbo/Tables/QuestionCategory/QuestionCategory.Debug.Seed.sql	(revision b25b9eaf967e2b5c021b6243500e9528c6e5084a)
+++ src/FinkiChattery/FinkiChattery.Database/dbo/Tables/QuestionCategory/QuestionCategory.Debug.Seed.sql	(revision b25b9eaf967e2b5c021b6243500e9528c6e5084a)
@@ -0,0 +1,31 @@
+﻿BEGIN
+    SET IDENTITY_INSERT [dbo].[QuestionCategory] ON
+    MERGE [dbo].[QuestionCategory] AS T
+    USING
+    (
+        SELECT *
+        FROM
+    (
+        VALUES
+            (1, N'aee193c3-9d36-4ed8-81b2-15eb4ff305f1', 1, 1),
+            (2, N'bee193c3-9d36-4ed8-81b2-15eb4ff305f1', 1, 2),
+            (3, N'cee193c3-9d36-4ed8-81b2-15eb4ff305f1', 1, 3)
+    ) AS temp ([Id], [Uid], [QuestionFk], [CategoryFk])
+    ) AS S
+    ON T.[ID] = S.[ID]
+    WHEN MATCHED THEN
+        UPDATE SET T.[Uid] = S.[Uid],
+                   T.[QuestionFk] = S.[QuestionFk],
+                   T.[CategoryFk] = S.[CategoryFk]
+    WHEN NOT MATCHED THEN
+        INSERT
+        (
+            [Id],
+            [Uid],
+            [QuestionFk],
+            [CategoryFk]
+        )
+        VALUES
+        (S.[Id], S.[Uid], S.[QuestionFk], S.[CategoryFk]);
+    SET IDENTITY_INSERT [dbo].[QuestionCategory] OFF
+END
Index: src/FinkiChattery/FinkiChattery.Database/dbo/Tables/QuestionCategory/QuestionCategory.sql
===================================================================
--- src/FinkiChattery/FinkiChattery.Database/dbo/Tables/QuestionCategory/QuestionCategory.sql	(revision b25b9eaf967e2b5c021b6243500e9528c6e5084a)
+++ src/FinkiChattery/FinkiChattery.Database/dbo/Tables/QuestionCategory/QuestionCategory.sql	(revision b25b9eaf967e2b5c021b6243500e9528c6e5084a)
@@ -0,0 +1,15 @@
+﻿CREATE TABLE [dbo].[QuestionCategory] (
+    [Id]         BIGINT           IDENTITY (1, 1) NOT NULL,
+    [Uid]        UNIQUEIDENTIFIER NOT NULL,
+    [QuestionFk] BIGINT           NOT NULL,
+    [CategoryFk] BIGINT           NOT NULL,
+    CONSTRAINT [PK_QuestionCategory] PRIMARY KEY CLUSTERED ([Id] ASC),
+    CONSTRAINT [FK_QuestionCategory_Category_CategoryFk] FOREIGN KEY ([CategoryFk]) REFERENCES [dbo].[Category] ([Id]),
+    CONSTRAINT [FK_QuestionCategory_Question_QuestionFk] FOREIGN KEY ([QuestionFk]) REFERENCES [dbo].[Question] ([Id])
+);
+
+
+GO
+CREATE NONCLUSTERED INDEX [IX_QuestionCategory_QuestionFk]
+    ON [dbo].[QuestionCategory]([QuestionFk] ASC);
+
Index: src/FinkiChattery/FinkiChattery.Persistence/Configurations/AnswerConfig.cs
===================================================================
--- src/FinkiChattery/FinkiChattery.Persistence/Configurations/AnswerConfig.cs	(revision 7dd2ea2a208bd53152525d720e2f64e2eb165729)
+++ src/FinkiChattery/FinkiChattery.Persistence/Configurations/AnswerConfig.cs	(revision b25b9eaf967e2b5c021b6243500e9528c6e5084a)
@@ -22,4 +22,5 @@
             builder.Property(x => x.CorrectAnswer).HasColumnName(@"CorrectAnswer").HasColumnType("bit").IsRequired();
             builder.Property(x => x.CreatedOn).HasColumnName(@"CreatedOn").HasColumnType("smalldatetime").IsRequired();
+            builder.Property(x => x.UpvotesCount).HasColumnName(@"UpvotesCount").HasColumnType("bigint").IsRequired().HasDefaultValue(0);
 
             builder.HasOne(x => x.Question).WithMany(x => x.Answers).HasForeignKey(x => x.QuestionFk).OnDelete(DeleteBehavior.Restrict);
Index: src/FinkiChattery/FinkiChattery.Persistence/Configurations/AnswerResponseConfig.cs
===================================================================
--- src/FinkiChattery/FinkiChattery.Persistence/Configurations/AnswerResponseConfig.cs	(revision 7dd2ea2a208bd53152525d720e2f64e2eb165729)
+++ src/FinkiChattery/FinkiChattery.Persistence/Configurations/AnswerResponseConfig.cs	(revision b25b9eaf967e2b5c021b6243500e9528c6e5084a)
@@ -28,5 +28,5 @@
 
             builder.HasOne(x => x.Answer).WithMany(x => x.AnswerResponses).HasForeignKey(x => x.AnswerFk).OnDelete(DeleteBehavior.Restrict);
-            builder.HasOne(x => x.Student).WithMany().HasForeignKey(x => x.AnswerFk).OnDelete(DeleteBehavior.Restrict);
+            builder.HasOne(x => x.Student).WithMany().HasForeignKey(x => x.StudentFk).OnDelete(DeleteBehavior.Restrict);
         }
     }
Index: src/FinkiChattery/FinkiChattery.Persistence/Configurations/QuestionCategoryConfig.cs
===================================================================
--- src/FinkiChattery/FinkiChattery.Persistence/Configurations/QuestionCategoryConfig.cs	(revision 7dd2ea2a208bd53152525d720e2f64e2eb165729)
+++ src/FinkiChattery/FinkiChattery.Persistence/Configurations/QuestionCategoryConfig.cs	(revision b25b9eaf967e2b5c021b6243500e9528c6e5084a)
@@ -26,5 +26,5 @@
 
             builder.HasOne(x => x.Question).WithMany(x => x.QuestionCategories).HasForeignKey(x => x.QuestionFk).OnDelete(DeleteBehavior.Restrict);
-            builder.HasOne(x => x.Category).WithMany().HasForeignKey(x => x.QuestionFk).OnDelete(DeleteBehavior.Restrict);
+            builder.HasOne(x => x.Category).WithMany().HasForeignKey(x => x.CategoryFk).OnDelete(DeleteBehavior.Restrict);
         }
     }
Index: src/FinkiChattery/FinkiChattery.Persistence/Models/Answer.cs
===================================================================
--- src/FinkiChattery/FinkiChattery.Persistence/Models/Answer.cs	(revision 7dd2ea2a208bd53152525d720e2f64e2eb165729)
+++ src/FinkiChattery/FinkiChattery.Persistence/Models/Answer.cs	(revision b25b9eaf967e2b5c021b6243500e9528c6e5084a)
@@ -20,4 +20,6 @@
         public DateTime CreatedOn { get; set; }
 
+        public long UpvotesCount { get; set; }
+
         public virtual ICollection<Upvote> Upvotes { get; set; }
 
Index: src/FinkiChattery/FinkiChattery.Persistence/Repositories/Base/IRepository.cs
===================================================================
--- src/FinkiChattery/FinkiChattery.Persistence/Repositories/Base/IRepository.cs	(revision b25b9eaf967e2b5c021b6243500e9528c6e5084a)
+++ src/FinkiChattery/FinkiChattery.Persistence/Repositories/Base/IRepository.cs	(revision b25b9eaf967e2b5c021b6243500e9528c6e5084a)
@@ -0,0 +1,17 @@
+﻿using System;
+using System.Linq;
+using System.Threading.Tasks;
+
+namespace FinkiChattery.Persistence.Repositories
+{
+    public interface IRepository<T> where T : class
+    {
+        IQueryable<T> All();
+
+        Task<T> GetByUidAsync(Guid uid);
+
+        Task<T> GetByIdAsync(int id);
+
+        Task Add(T entity);
+    }
+}
Index: src/FinkiChattery/FinkiChattery.Persistence/Repositories/Base/Repository.cs
===================================================================
--- src/FinkiChattery/FinkiChattery.Persistence/Repositories/Base/Repository.cs	(revision 7dd2ea2a208bd53152525d720e2f64e2eb165729)
+++ src/FinkiChattery/FinkiChattery.Persistence/Repositories/Base/Repository.cs	(revision b25b9eaf967e2b5c021b6243500e9528c6e5084a)
@@ -8,5 +8,5 @@
 namespace FinkiChattery.Persistence.Repositories
 {
-    public abstract class Repository<T> where T : BaseEntity
+    public abstract class Repository<T> : IRepository<T> where T : BaseEntity
     {
         public Repository(ApplicationDbContext dbContext)
@@ -29,7 +29,8 @@
         }
 
-        public void Add(T entity)
+        public async Task Add(T entity)
         {
             DbSet.Add(entity);
+            await DbContext.SaveChangesAsync();
         }
 
Index: src/FinkiChattery/FinkiChattery.Persistence/Repositories/Contracts/IQuestionRepo.cs
===================================================================
--- src/FinkiChattery/FinkiChattery.Persistence/Repositories/Contracts/IQuestionRepo.cs	(revision 7dd2ea2a208bd53152525d720e2f64e2eb165729)
+++ src/FinkiChattery/FinkiChattery.Persistence/Repositories/Contracts/IQuestionRepo.cs	(revision b25b9eaf967e2b5c021b6243500e9528c6e5084a)
@@ -1,6 +1,11 @@
-﻿namespace FinkiChattery.Persistence.Repositories
+﻿using FinkiChattery.Persistence.Repositories.Contracts;
+using System;
+using System.Threading.Tasks;
+
+namespace FinkiChattery.Persistence.Repositories
 {
     public interface IQuestionRepo
     {
+        Task<QuestionStateDto> GetQuestionState(Guid questionUid);
     }
 }
Index: src/FinkiChattery/FinkiChattery.Persistence/Repositories/Contracts/Question/QuestionStateDto.cs
===================================================================
--- src/FinkiChattery/FinkiChattery.Persistence/Repositories/Contracts/Question/QuestionStateDto.cs	(revision b25b9eaf967e2b5c021b6243500e9528c6e5084a)
+++ src/FinkiChattery/FinkiChattery.Persistence/Repositories/Contracts/Question/QuestionStateDto.cs	(revision b25b9eaf967e2b5c021b6243500e9528c6e5084a)
@@ -0,0 +1,154 @@
+﻿#nullable enable
+
+using System;
+using System.Collections.Generic;
+
+namespace FinkiChattery.Persistence.Repositories.Contracts
+{
+    public class QuestionStateDto
+    {
+        public QuestionStateDto(long id, Guid uid, string title, string text, DateTime createdOn, long views, DateTime lastActiveOn, StudentQuestionStateDto studentDto, IEnumerable<AnswerQuestionStateDto> answersDto, IEnumerable<QuestionCategoryQuestionStateDto> categoriesDto, TeamQuestionStateDto? teamDto)
+        {
+            Id = id;
+            Uid = uid;
+            Title = title;
+            Text = text;
+            CreatedOn = createdOn;
+            Views = views;
+            LastActiveOn = lastActiveOn;
+            StudentDto = studentDto;
+            AnswersDto = answersDto;
+            CategoriesDto = categoriesDto;
+            TeamDto = teamDto;
+        }
+
+        public long Id { get; }
+        public Guid Uid { get; }
+        public string Title { get; }
+        public string Text { get; }
+        public DateTime CreatedOn { get; }
+        public long Views { get; }
+        public DateTime LastActiveOn { get; }
+        public StudentQuestionStateDto StudentDto { get; }
+        public IEnumerable<AnswerQuestionStateDto> AnswersDto { get; }
+        public IEnumerable<QuestionCategoryQuestionStateDto> CategoriesDto { get; }
+        public TeamQuestionStateDto? TeamDto { get; }
+    }
+
+    public class StudentQuestionStateDto
+    {
+        public StudentQuestionStateDto(long id, Guid uid, string index, string imageUrl)
+        {
+            Id = id;
+            Uid = uid;
+            Index = index;
+            ImageUrl = imageUrl;
+        }
+
+        public long Id { get; }
+        public Guid Uid { get; }
+        public string Index { get; }
+        public string ImageUrl { get; }
+    }
+
+    public class TeamQuestionStateDto
+    {
+        public TeamQuestionStateDto(long id, Guid uid, string name)
+        {
+            Id = id;
+            Uid = uid;
+            Name = name;
+        }
+
+        public long Id { get; }
+        public Guid Uid { get; }
+        public string Name { get; }
+    }
+
+    public class QuestionCategoryQuestionStateDto
+    {
+        public QuestionCategoryQuestionStateDto(long id, Guid uid, string name)
+        {
+            Id = id;
+            Uid = uid;
+            Name = name;
+        }
+
+        public long Id { get; }
+        public Guid Uid { get; }
+        public string Name { get; }
+    }
+
+    public class AnswerQuestionStateDto
+    {
+        public AnswerQuestionStateDto(long id, Guid uid, string text, bool correctAnswer, DateTime createdOn, long upvotesCount, AnswerStudentQuestionStateDto studentDto, IEnumerable<AnswerResponseQuestionStateDto> answerResponsesDto)
+        {
+            Id = id;
+            Uid = uid;
+            Text = text;
+            CorrectAnswer = correctAnswer;
+            CreatedOn = createdOn;
+            UpvotesCount = upvotesCount;
+            StudentDto = studentDto;
+            AnswerResponsesDto = answerResponsesDto;
+        }
+
+        public long Id { get; }
+        public Guid Uid { get; }
+        public string Text { get; }
+        public bool CorrectAnswer { get; }
+        public DateTime CreatedOn { get; }
+        public long UpvotesCount { get; }
+        public AnswerStudentQuestionStateDto StudentDto { get; }
+        public IEnumerable<AnswerResponseQuestionStateDto> AnswerResponsesDto { get; }
+    }
+
+    public class AnswerStudentQuestionStateDto
+    {
+        public AnswerStudentQuestionStateDto(long id, Guid uid, string index, string imageUrl)
+        {
+            Id = id;
+            Uid = uid;
+            Index = index;
+            ImageUrl = imageUrl;
+        }
+        public long Id { get; }
+        public Guid Uid { get; }
+        public string Index { get; }
+        public string ImageUrl { get; }
+    }
+
+    public class AnswerResponseQuestionStateDto
+    {
+        public AnswerResponseQuestionStateDto(long id, Guid uid, string text, DateTime createdOn, AnswerResponseStudentQuestionStateDto studentDto)
+        {
+            Id = id;
+            Uid = uid;
+            Text = text;
+            CreatedOn = createdOn;
+            StudentDto = studentDto;
+        }
+
+        public long Id { get; }
+        public Guid Uid { get; }
+        public string Text { get; }
+        public DateTime CreatedOn { get; }
+        public AnswerResponseStudentQuestionStateDto StudentDto { get; }
+    }
+
+    public class AnswerResponseStudentQuestionStateDto
+    {
+        public AnswerResponseStudentQuestionStateDto(long id, Guid uid, string index, string imageUrl)
+        {
+            Id = id;
+            Uid = uid;
+            Index = index;
+            ImageUrl = imageUrl;
+        }
+
+        public long Id { get; }
+        public Guid Uid { get; }
+        public string Index { get; }
+        public string ImageUrl { get; }
+    }
+}
Index: src/FinkiChattery/FinkiChattery.Persistence/Repositories/Implementations/QuestionRepo.cs
===================================================================
--- src/FinkiChattery/FinkiChattery.Persistence/Repositories/Implementations/QuestionRepo.cs	(revision 7dd2ea2a208bd53152525d720e2f64e2eb165729)
+++ src/FinkiChattery/FinkiChattery.Persistence/Repositories/Implementations/QuestionRepo.cs	(revision b25b9eaf967e2b5c021b6243500e9528c6e5084a)
@@ -1,4 +1,9 @@
 ﻿using FinkiChattery.Persistence.Context;
 using FinkiChattery.Persistence.Models;
+using FinkiChattery.Persistence.Repositories.Contracts;
+using Microsoft.EntityFrameworkCore;
+using System;
+using System.Linq;
+using System.Threading.Tasks;
 
 namespace FinkiChattery.Persistence.Repositories
@@ -9,4 +14,66 @@
         {
         }
+
+        public async Task<QuestionStateDto> GetQuestionState(Guid questionUid)
+        {
+            // TODO: MAYBE WRITE THIS QUERY AS SP ??
+            var questionDto = await DbSet
+              .AsNoTracking()
+              .Include(x => x.Student)
+              .Include(x => x.Team)
+              .Include(x => x.Answers).ThenInclude(y => y.Student)
+              .Include(x => x.Answers).ThenInclude(y => y.AnswerResponses).ThenInclude(y => y.Student)
+              .Include(x => x.QuestionCategories).ThenInclude(y => y.Category)
+              .Where(x => x.Uid == questionUid)
+              .Select(x => new QuestionStateDto(
+                                                x.Id,
+                                                x.Uid,
+                                                x.Title,
+                                                x.Text,
+                                                x.CreatedOn,
+                                                x.Views,
+                                                x.LastActiveOn,
+                                                new StudentQuestionStateDto(
+                                                  x.Student.Id,
+                                                  x.Student.Uid,
+                                                  x.Student.IndexNumber,
+                                                  x.Student.ImageUrl),
+                                                x.Answers.Select(y =>
+                                                new AnswerQuestionStateDto(
+                                                    y.Id,
+                                                    y.Uid,
+                                                    y.Text,
+                                                    y.CorrectAnswer,
+                                                    y.CreatedOn,
+                                                    y.UpvotesCount,
+                                                    new AnswerStudentQuestionStateDto(
+                                                        y.Student.Id,
+                                                        y.Student.Uid,
+                                                        y.Student.IndexNumber,
+                                                        y.Student.ImageUrl),
+                                                    y.AnswerResponses.Select(z =>
+                                                    new AnswerResponseQuestionStateDto(
+                                                        z.Id,
+                                                        z.Uid,
+                                                        z.Text,
+                                                        z.CreatedOn,
+                                                        new AnswerResponseStudentQuestionStateDto(
+                                                            z.Student.Id,
+                                                            z.Student.Uid,
+                                                            z.Student.IndexNumber,
+                                                            z.Student.ImageUrl))))),
+                                                x.QuestionCategories.Select(y =>
+                                                new QuestionCategoryQuestionStateDto(
+                                                    y.Id,
+                                                    y.Uid,
+                                                    y.Category.Name)),
+                                                x.Team == null ? null : new TeamQuestionStateDto(
+                                                    x.Team.Id,
+                                                    x.Team.Uid,
+                                                    x.Team.Name)))
+              .FirstOrDefaultAsync();
+
+            return questionDto;
+        }
     }
 }
Index: src/FinkiChattery/FinkiChattery.Queries/FinkiChattery.Queries.csproj
===================================================================
--- src/FinkiChattery/FinkiChattery.Queries/FinkiChattery.Queries.csproj	(revision 7dd2ea2a208bd53152525d720e2f64e2eb165729)
+++ src/FinkiChattery/FinkiChattery.Queries/FinkiChattery.Queries.csproj	(revision b25b9eaf967e2b5c021b6243500e9528c6e5084a)
@@ -1,3 +1,3 @@
-<Project Sdk="Microsoft.NET.Sdk">
+﻿<Project Sdk="Microsoft.NET.Sdk">
 
   <PropertyGroup>
@@ -5,3 +5,8 @@
   </PropertyGroup>
 
+  <ItemGroup>
+    <ProjectReference Include="..\FinkiChattery.Common\FinkiChattery.Common.csproj" />
+    <ProjectReference Include="..\FinkiChattery.Persistence\FinkiChattery.Persistence.csproj" />
+  </ItemGroup>
+
 </Project>
Index: src/FinkiChattery/FinkiChattery.Queries/Questioning/GetQuestionState/GetQuestionStateQuery.cs
===================================================================
--- src/FinkiChattery/FinkiChattery.Queries/Questioning/GetQuestionState/GetQuestionStateQuery.cs	(revision b25b9eaf967e2b5c021b6243500e9528c6e5084a)
+++ src/FinkiChattery/FinkiChattery.Queries/Questioning/GetQuestionState/GetQuestionStateQuery.cs	(revision b25b9eaf967e2b5c021b6243500e9528c6e5084a)
@@ -0,0 +1,34 @@
+﻿using FinkiChattery.Common.Mediator.Contracs;
+using FinkiChattery.Persistence.Repositories;
+using FinkiChattery.Persistence.Repositories.Contracts;
+using System;
+using System.Threading;
+using System.Threading.Tasks;
+
+namespace FinkiChattery.Queries.Questioning
+{
+    public class GetQuestionStateQuery : IQuery<QuestionStateDto>
+    {
+        public GetQuestionStateQuery(Guid questionUid)
+        {
+            QuestionUid = questionUid;
+        }
+
+        public Guid QuestionUid { get; }
+    }
+
+    public class GetQuestionStateQueryHandler : IQueryHandler<GetQuestionStateQuery, QuestionStateDto>
+    {
+        public GetQuestionStateQueryHandler(IQuestionRepo questionRepo)
+        {
+            QuestionRepo = questionRepo;
+        }
+
+        public IQuestionRepo QuestionRepo { get; }
+
+        public async Task<QuestionStateDto> Handle(GetQuestionStateQuery request, CancellationToken cancellationToken)
+        {
+            return await QuestionRepo.GetQuestionState(request.QuestionUid);
+        }
+    }
+}
