{"id":15286454,"url":"https://github.com/profjordanov/famousquotequiz","last_synced_at":"2025-04-13T03:19:17.313Z","repository":{"id":40293598,"uuid":"176385304","full_name":"profjordanov/FamousQuoteQuiz","owner":"profjordanov","description":"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.","archived":false,"fork":false,"pushed_at":"2024-10-19T10:36:14.000Z","size":2873,"stargazers_count":2,"open_issues_count":1,"forks_count":2,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-03-26T20:21:17.252Z","etag":null,"topics":["api-rest","dotnercore","entity-framework-core","jquery","microsoft-sql-server"],"latest_commit_sha":null,"homepage":"","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/profjordanov.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2019-03-18T23:27:40.000Z","updated_at":"2024-10-02T04:45:18.000Z","dependencies_parsed_at":"2024-01-16T10:09:19.214Z","dependency_job_id":"2104e9cf-5ab3-4f06-9fc8-8d82d36e50e7","html_url":"https://github.com/profjordanov/FamousQuoteQuiz","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/profjordanov%2FFamousQuoteQuiz","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/profjordanov%2FFamousQuoteQuiz/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/profjordanov%2FFamousQuoteQuiz/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/profjordanov%2FFamousQuoteQuiz/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/profjordanov","download_url":"https://codeload.github.com/profjordanov/FamousQuoteQuiz/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248658146,"owners_count":21140890,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["api-rest","dotnercore","entity-framework-core","jquery","microsoft-sql-server"],"created_at":"2024-09-30T15:14:21.686Z","updated_at":"2025-04-13T03:19:17.289Z","avatar_url":"https://github.com/profjordanov.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# FamousQuoteQuiz\nQuiz game system asks questions and user should try to pick a correct answer. \nDepending on selected mode user will have to choose correct answer from a list of\nanswers, or simply to answer with Yes/No to the question.\n\n![alt text](https://raw.githubusercontent.com/profjordanov/FamousQuoteQuiz/master/resources/settings-screen.PNG)\n\n## Getting Started\nThese instructions will get you a copy of the project up and running on your local machine for development and testing purposes.\n\n### Prerequisites\n1. You'll need version `3.1.0` of the [`.NET Core SDK`](https://dotnet.microsoft.com/download).\n\n2. 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.\n\n### Running Using Visual Studio\n\n1. Download it via `CLONE OR DOWNLOAD BUTTON`\n2. Unzip the project\n3. Open the `.sln` file using Visual Studio\n4. Set up the connection strings inside `FamousQuoteQuiz.Api/appsettings.Development.json` (or leave the set)\n5. Execute `Update-Database` inside the `Package Manager Console`\n6. Run the FamousQuoteQuiz.Api\n7. Go to src/client/jQuery.Client/index.html\n8. Have FUN!!!\n\n#### Using Docker\n\n1. Execute `docker-compose up`\n\n## Technology Stack:\n- [x] C#\n- [x] .NET Core Web API v3.1\n- [x] EntityFramework Core with SQL Server and ASP.NET Identity\n- [x] jQuery v3.1\n- [x] jQuery Fancybox\n- [x] Bootstrap v3.3\n![alt text](https://raw.githubusercontent.com/profjordanov/FamousQuoteQuiz/master/resources/database-diagram.PNG)\n\n### Test Suite\n- [x] SQL Database Integration Testing\n- [x] Arrange Act Assert Pattern\n- [x] xUnit\n- [x] Autofixture\n- [x] Moq\n- [x] Shouldly\n\n## Features:\n\n### Web API\n- [x] AutoMapper\n- [x] File logging with Serilog\n- [x] JWT authentication/authorization\n- [x] Stylecop\n- [x] Neat folder structure\n```\n├───src\n|   |___clients\n|   |   ├───jQuery.Client\n|   |   ├───cordova.Client\n│   ├───configuration\n│   └───server\n│       ├───FamousQuoteQuiz.Api\n│       ├───FamousQuoteQuiz.Business\n│       ├───FamousQuoteQuiz.Core\n│       ├───FamousQuoteQuiz.Data\n│       └───FamousQuoteQuiz.Data.EntityFramework\n└───tests\n    └───FamousQuoteQuiz.Business.Tests\n\n```\n\n- [x] Swagger UI + Fully Documented Controllers \u003cbr\u003e\n```csharp\n/// \u003csummary\u003e\n/// Gets BinaryChoiceQuestion whose ID is bigger the one received.\n/// \u003c/summary\u003e\n/// \u003cparam name=\"initialId\"\u003e\n/// ID of BinaryChoiceQuestion which has to be surpassed.\n/// \u003c/param\u003e\n/// \u003creturns\u003e\u003csee cref=\"BinaryChoiceQuestionViewModel\"/\u003e\u003c/returns\u003e\n/// \u003cresponse code=\"200\"\u003eIf such question exists.\u003c/response\u003e\n/// \u003cresponse code=\"400\"\u003eNo existing questions or no more than received.\u003c/response\u003e\n[HttpGet]\n[Route(\"binary-choice-question\")]\n[ProducesResponseType(typeof(BinaryChoiceQuestionViewModel), (int)HttpStatusCode.OK)]\n[ProducesResponseType(typeof(Error), (int)HttpStatusCode.BadRequest)]\npublic async Task\u003cIActionResult\u003e GetBinaryChoiceQuestion([FromQuery] long initialId) =\u003e\n    (await _quizQuestionService.GetBinaryChoiceQuestionAsync(initialId))\n    .Match(Ok, Error);\n```\n- [x] Global Model Errors Handler \u003cbr\u003e\n- [x] Global Environment-Dependent Exception Handler \u003cbr\u003e\n- [x] Neatly organized solution structure \u003cbr\u003e\n- [x] Thin Controllers \u003cbr\u003e\n- [x] Robust service layer using the [Either](http://optional-github.com) monad. \u003cbr\u003e\n\n### jQuery Client\n- [x] Mobile-First Responsive Design\n- [x] Works correctly in the latest HTML5-compatible browsers: Chrome, Firefox, Edge, Opera, Safari \n- [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.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fprofjordanov%2Ffamousquotequiz","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fprofjordanov%2Ffamousquotequiz","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fprofjordanov%2Ffamousquotequiz/lists"}