{"id":20667620,"url":"https://github.com/neckerfree/techtest","last_synced_at":"2026-04-20T12:05:40.148Z","repository":{"id":86303291,"uuid":"593354560","full_name":"NeckerFree/TechTest","owner":"NeckerFree","description":"Web API for the program that plays Rock, Paper, Scissors against a human.","archived":false,"fork":false,"pushed_at":"2023-01-27T00:09:19.000Z","size":7610,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-01-13T10:35:49.353Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"C#","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/NeckerFree.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":"2023-01-25T20:09:19.000Z","updated_at":"2023-01-26T20:54:51.000Z","dependencies_parsed_at":"2023-03-09T00:30:20.488Z","dependency_job_id":null,"html_url":"https://github.com/NeckerFree/TechTest","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/NeckerFree%2FTechTest","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/NeckerFree%2FTechTest/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/NeckerFree%2FTechTest/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/NeckerFree%2FTechTest/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/NeckerFree","download_url":"https://codeload.github.com/NeckerFree/TechTest/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":242873075,"owners_count":20199287,"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":[],"created_at":"2024-11-16T19:44:30.123Z","updated_at":"2026-04-20T12:05:40.114Z","avatar_url":"https://github.com/NeckerFree.png","language":"C#","funding_links":[],"categories":[],"sub_categories":[],"readme":"﻿# TechTest\nWeb API for the program that plays Rock, Paper, Scissors against a human.\n\n\u003ca name=\"readme-top\"\u003e\u003c/a\u003e\n\n\u003c!-- TABLE OF CONTENTS --\u003e\n\n# 📗 Table of Contents\n\n- [📖 About the Project](#about-project)\n  - [🛠 Built With](#built-with)\n    - [Tech Stack](#tech-stack)\n    - [Key Features](#key-features)\n- [💻 Getting Started](#getting-started)\n  - [Setup](#setup)\n  - [Prerequisites](#prerequisites)\n  - [Install](#install)\n  - [Usage](#usage)\n- [👥 Authors](#authors)\n- [⭐️ Show your support](#support)\n- [❓ FAQ (OPTIONAL)](#faq)\n- [📝 License](#license)\n\n\u003c!-- PROJECT DESCRIPTION --\u003e\n\n# 📖 TechTest \u003ca name=\"about-project\"\u003e\u003c/a\u003e\n\n**TechTest** is a .NET Solution that uses a layer architecture to expose a minimal Web API \nfor the program that plays Rock, Paper, Scissors against a human..\n\n## Web API Service Images:\n***Swagger Index:***\n\n![Swagger](https://user-images.githubusercontent.com/8497300/214976709-abb1dc89-5a17-4c9c-9722-53d9f4b9e491.png)\n\n***Start Game Method:***\n\n![Start](https://user-images.githubusercontent.com/8497300/214976811-9c00ff7a-e9c4-4597-a6d7-ec9272909253.png)\n\n***Make Move Method:***\n\n![MakeMove](https://user-images.githubusercontent.com/8497300/214976869-cc25c801-6fc5-4c48-9487-e06ae500f10d.png)\n\n***End Game Method:***\n\n![End](https://user-images.githubusercontent.com/8497300/214976984-a6f71fc1-b0df-4c71-b5b3-21248277da28.png)\n\n***Historic Results Request:***\n\n![Historic Results Request](https://user-images.githubusercontent.com/8497300/214977101-7902a5d1-4b73-43e7-ab85-8db41f052fc5.png)\n\n***Historic Results Response:***\n\n![Historic Results Response](https://user-images.githubusercontent.com/8497300/214977172-e69c7693-1986-467d-8057-b132e3ab23bf.png)\n\n\n## 🛠 Built With \u003ca name=\"built-with\"\u003e\u003c/a\u003e\n\n### Tech Stack \u003ca name=\"tech-stack\"\u003e\u003c/a\u003e\n\n.NET Core Minimal API, \n\n\u003cdetails\u003e\n  \u003csummary\u003eServer\u003c/summary\u003e\n  \u003cul\u003e\n    \u003cli\u003e\u003ca href=\"https://learn.microsoft.com/en-us/aspnet/core/fundamentals/minimal-apis\"\u003eMinimal API\u003c/a\u003e\u003c/li\u003e\n  \u003c/ul\u003e\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003eDatabase\u003c/summary\u003e\n  \u003cul\u003e\n    \u003cli\u003e\u003ca href=\"https://www.microsoft.com/en-US/download/details.aspx?id=101064\"\u003eSQL Server\u003c/a\u003e\u003c/li\u003e\n  \u003c/ul\u003e\n\u003c/details\u003e\n\n\u003c!-- Features --\u003e\n\n### Key Features \u003ca name=\"key-features\"\u003e\u003c/a\u003e\n\n\u003e Describe between 1-3 key features of the application.\n\n- **EF Core Database First**\n- **Unit of Work and Repository Pattern**\n- **Services Dependency Injection**\n- **Data Annotations**\n- **Extension Methods**\n- **Dependency Injection**\n- **Paging**\n- **GIT Flow**\n\n\u003cp align=\"right\"\u003e(\u003ca href=\"#readme-top\"\u003eback to top\u003c/a\u003e)\u003c/p\u003e\n\n\u003c!-- GETTING STARTED --\u003e\n\n## 💻 Getting Started \u003ca name=\"getting-started\"\u003e\u003c/a\u003e\n\nTo get a local copy up and running, follow these steps:\n\n### Prerequisites\n\nIn order to run this project you need:\n\n- Visual Studio .NET 2022 updated to use NET Core 7\n- SQL Server Database \n\n### Setup\n\n1. Clone this repository to your desired folder:\n\n```\n  cd my-folder\n  git clone https://github.com/NeckerFree/TechTest\n```\n\n2. Run next commands to generate the database from TT.DataAccess project:\n```\n   dotnet ef migrations add InitialCreate \n   dotnet ef database update\n```\n\n3. Create a User as db_owner of this batabase\n\n4. Modify the connection string (GamesConnection) in the file \\TT.MinApi\\appsettings.json to point your database\n### Install\n\nInstall this project with:\n1. Build the solution and assure that doesn't have errors\n\n2. Set the project TT.MinApi as default \n\n### Usage\n\nTo run the project, \n\nStart the application (F5), the /swagger/index.html page is displayed\n\n\u003cp align=\"right\"\u003e(\u003ca href=\"#readme-top\"\u003eback to top\u003c/a\u003e)\u003c/p\u003e\n\n\u003c!-- AUTHORS --\u003e\n\n## 👥 Authors \u003ca name=\"authors\"\u003e\u003c/a\u003e\n\n👤 **Elio Cortés**\n\n- GitHub: [@NeckerFree](https://github.com/NeckerFree)\n- Twitter: [@ElioCortesM](https://twitter.com/ElioCortesM)\n- LinkedIn: [elionelsoncortes](https://www.linkedin.com/in/elionelsoncortes/)\n\n\n\u003cp align=\"right\"\u003e(\u003ca href=\"#readme-top\"\u003eback to top\u003c/a\u003e)\u003c/p\u003e\n\n\u003c!-- CONTRIBUTING --\u003e\n\n## 🤝 Contributing \u003ca name=\"contributing\"\u003e\u003c/a\u003e\n\nContributions, issues, and feature requests are welcome!\n\nFeel free to check the [issues page](../../issues/).\n\n\u003cp align=\"right\"\u003e(\u003ca href=\"#readme-top\"\u003eback to top\u003c/a\u003e)\u003c/p\u003e\n\n\u003c!-- SUPPORT --\u003e\n\n## ⭐️ Show your support \u003ca name=\"support\"\u003e\u003c/a\u003e\n\nIf you like this project please start my project\n\n\u003cp align=\"right\"\u003e(\u003ca href=\"#readme-top\"\u003eback to top\u003c/a\u003e)\u003c/p\u003e\n\n\u003c!-- FAQ (optional) --\u003e\n\n## ❓ FAQ (OPTIONAL) \u003ca name=\"faq\"\u003e\u003c/a\u003e\n\n- **What command are required to Scaffold from Scratch a DB First?**\n\n  - Run next commands:\n  ```\n    dotnet add TT.DataAccess package Microsoft.EntityFrameworkCore.Design\n    dotnet add TT.DataAccess package Microsoft.EntityFrameworkCore.SqlServer\n    dotnet add TT.DataAccess package Microsoft.EntityFrameworkCore.Tools\n    dotnet tool update --global dotnet-ef\n    dotnet ef dbcontext scaffold \"Data Source=localhost\\ELIO_SQL;Initial Catalog=[your DB]; User Id=[your User];Password=[your Pwd];Encrypt=False\" Microsoft.EntityFrameworkCore.SqlServer --project TT.DataAccess --output-dir \"TT.Models\\Models\" --context-dir \"TT.DataAccess\\Data\" --namespace TT.Models --context-namespace TT.DataAccess --context GamesContext -f --no-onconfiguring --data-annotations\n    dotnet tool install --global dotnet-ef\n    dotnet tool update --global dotnet-ef \n  ```\n- **How to Implement Unit Of Work and Generic Repository pattern?**\n   - [Unit Of Work And Generic Repository pattern](https://www.c-sharpcorner.com/article/implement-unit-of-work-and-generic-repository-pattern-in-a-web-api-net-core-pro)\n   - [Repository Pattern and Unit of Work](https://enlear.academy/repository-pattern-and-unit-of-work-with-asp-net-core-web-api-6802e1aa4f78)\n\n\u003cp align=\"right\"\u003e(\u003ca href=\"#readme-top\"\u003eback to top\u003c/a\u003e)\u003c/p\u003e\n\n\u003c!-- LICENSE --\u003e\n\n## 📝 License \u003ca name=\"license\"\u003e\u003c/a\u003e\n\nThis project is [MIT](./LICENSE) licensed.\n\n[MIT license](https://choosealicense.com/licenses/mit/) \n\n\u003cp align=\"right\"\u003e(\u003ca href=\"#readme-top\"\u003eback to top\u003c/a\u003e)\u003c/p\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fneckerfree%2Ftechtest","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fneckerfree%2Ftechtest","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fneckerfree%2Ftechtest/lists"}