Skip to content

Famous quote quiz game where system will ask questions and user should try to pick a correct answer. Depending on selected mode user will have to choose correct answer from a list of answers, or simply to answer with Yes/No to the question.

Notifications You must be signed in to change notification settings

profjordanov/FamousQuoteQuiz

Repository files navigation

FamousQuoteQuiz

Quiz game system asks questions and user should try to pick a correct answer. Depending on selected mode user will have to choose correct answer from a list of answers, or simply to answer with Yes/No to the question.

alt text

Getting Started

These instructions will get you a copy of the project up and running on your local machine for development and testing purposes.

Prerequisites

  1. You'll need version 3.1.0 of the .NET Core SDK.

  2. If not, you'll need to have SQLServer either installed locally or at least have some instance available to set up the connection strings.

Running Using Visual Studio

  1. Download it via CLONE OR DOWNLOAD BUTTON
  2. Unzip the project
  3. Open the .sln file using Visual Studio
  4. Set up the connection strings inside FamousQuoteQuiz.Api/appsettings.Development.json (or leave the set)
  5. Execute Update-Database inside the Package Manager Console
  6. Run the FamousQuoteQuiz.Api
  7. Go to src/client/jQuery.Client/index.html
  8. Have FUN!!!

Using Docker

  1. Execute docker-compose up

Technology Stack:

  • C#
  • .NET Core Web API v3.1
  • EntityFramework Core with SQL Server and ASP.NET Identity
  • jQuery v3.1
  • jQuery Fancybox
  • Bootstrap v3.3 alt text

Test Suite

  • SQL Database Integration Testing
  • Arrange Act Assert Pattern
  • xUnit
  • Autofixture
  • Moq
  • Shouldly

Features:

Web API

  • AutoMapper
  • File logging with Serilog
  • JWT authentication/authorization
  • Stylecop
  • Neat folder structure
├───src
|   |___clients
|   |   ├───jQuery.Client
|   |   ├───cordova.Client
│   ├───configuration
│   └───server
│       ├───FamousQuoteQuiz.Api
│       ├───FamousQuoteQuiz.Business
│       ├───FamousQuoteQuiz.Core
│       ├───FamousQuoteQuiz.Data
│       └───FamousQuoteQuiz.Data.EntityFramework
└───tests
    └───FamousQuoteQuiz.Business.Tests

  • Swagger UI + Fully Documented Controllers
/// <summary>
/// Gets BinaryChoiceQuestion whose ID is bigger the one received.
/// </summary>
/// <param name="initialId">
/// ID of BinaryChoiceQuestion which has to be surpassed.
/// </param>
/// <returns><see cref="BinaryChoiceQuestionViewModel"/></returns>
/// <response code="200">If such question exists.</response>
/// <response code="400">No existing questions or no more than received.</response>
[HttpGet]
[Route("binary-choice-question")]
[ProducesResponseType(typeof(BinaryChoiceQuestionViewModel), (int)HttpStatusCode.OK)]
[ProducesResponseType(typeof(Error), (int)HttpStatusCode.BadRequest)]
public async Task<IActionResult> GetBinaryChoiceQuestion([FromQuery] long initialId) =>
    (await _quizQuestionService.GetBinaryChoiceQuestionAsync(initialId))
    .Match(Ok, Error);
  • Global Model Errors Handler
  • Global Environment-Dependent Exception Handler
  • Neatly organized solution structure
  • Thin Controllers
  • Robust service layer using the Either monad.

jQuery Client

  • Mobile-First Responsive Design
  • Works correctly in the latest HTML5-compatible browsers: Chrome, Firefox, Edge, Opera, Safari
  • Followed the best practices for high-quality HTML and CSS: good formatting, good code structure, consistent naming, semantic HTML, correct usage of classes, etc.

About

Famous quote quiz game where system will ask questions and user should try to pick a correct answer. Depending on selected mode user will have to choose correct answer from a list of answers, or simply to answer with Yes/No to the question.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published