Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/profjordanov/famousquotequiz
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.
https://github.com/profjordanov/famousquotequiz
api-rest dotnercore entity-framework-core jquery microsoft-sql-server
Last synced: about 1 month ago
JSON representation
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.
- Host: GitHub
- URL: https://github.com/profjordanov/famousquotequiz
- Owner: profjordanov
- Created: 2019-03-18T23:27:40.000Z (over 5 years ago)
- Default Branch: master
- Last Pushed: 2024-10-02T04:45:52.000Z (about 2 months ago)
- Last Synced: 2024-10-14T16:21:41.357Z (about 1 month ago)
- Topics: api-rest, dotnercore, entity-framework-core, jquery, microsoft-sql-server
- Language: JavaScript
- Homepage:
- Size: 2.7 MB
- Stars: 2
- Watchers: 3
- Forks: 2
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# 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](https://raw.githubusercontent.com/profjordanov/FamousQuoteQuiz/master/resources/settings-screen.PNG)
## 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`](https://dotnet.microsoft.com/download).2. If not, you'll need to have [SQLServer](https://www.microsoft.com/en-us/sql-server/sql-server-downloads) 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:
- [x] C#
- [x] .NET Core Web API v3.1
- [x] EntityFramework Core with SQL Server and ASP.NET Identity
- [x] jQuery v3.1
- [x] jQuery Fancybox
- [x] Bootstrap v3.3
![alt text](https://raw.githubusercontent.com/profjordanov/FamousQuoteQuiz/master/resources/database-diagram.PNG)### Test Suite
- [x] SQL Database Integration Testing
- [x] Arrange Act Assert Pattern
- [x] xUnit
- [x] Autofixture
- [x] Moq
- [x] Shouldly## Features:
### Web API
- [x] AutoMapper
- [x] File logging with Serilog
- [x] JWT authentication/authorization
- [x] Stylecop
- [x] 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```
- [x] Swagger UI + Fully Documented Controllers
```csharp
///
/// Gets BinaryChoiceQuestion whose ID is bigger the one received.
///
///
/// ID of BinaryChoiceQuestion which has to be surpassed.
///
///
/// If such question exists.
/// No existing questions or no more than received.
[HttpGet]
[Route("binary-choice-question")]
[ProducesResponseType(typeof(BinaryChoiceQuestionViewModel), (int)HttpStatusCode.OK)]
[ProducesResponseType(typeof(Error), (int)HttpStatusCode.BadRequest)]
public async Task GetBinaryChoiceQuestion([FromQuery] long initialId) =>
(await _quizQuestionService.GetBinaryChoiceQuestionAsync(initialId))
.Match(Ok, Error);
```
- [x] Global Model Errors Handler
- [x] Global Environment-Dependent Exception Handler
- [x] Neatly organized solution structure
- [x] Thin Controllers
- [x] Robust service layer using the [Either](http://optional-github.com) monad.### jQuery Client
- [x] Mobile-First Responsive Design
- [x] Works correctly in the latest HTML5-compatible browsers: Chrome, Firefox, Edge, Opera, Safari
- [x] Followed the best practices for high-quality HTML and CSS: good formatting, good code structure, consistent naming, semantic HTML, correct usage of classes, etc.