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.
These instructions will get you a copy of the project up and running on your local machine for development and testing purposes.
-
You'll need version
3.1.0
of the.NET Core SDK
. -
If not, you'll need to have SQLServer either installed locally or at least have some instance available to set up the connection strings.
- Download it via
CLONE OR DOWNLOAD BUTTON
- Unzip the project
- Open the
.sln
file using Visual Studio - Set up the connection strings inside
FamousQuoteQuiz.Api/appsettings.Development.json
(or leave the set) - Execute
Update-Database
inside thePackage Manager Console
- Run the FamousQuoteQuiz.Api
- Go to src/client/jQuery.Client/index.html
- Have FUN!!!
- Execute
docker-compose up
- C#
- .NET Core Web API v3.1
- EntityFramework Core with SQL Server and ASP.NET Identity
- jQuery v3.1
- jQuery Fancybox
- Bootstrap v3.3
- SQL Database Integration Testing
- Arrange Act Assert Pattern
- xUnit
- Autofixture
- Moq
- Shouldly
- 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.
- 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.