{"id":23079625,"url":"https://github.com/matheusb432/task-manager-app-dotnet","last_synced_at":"2026-05-03T22:32:43.824Z","repository":{"id":177899200,"uuid":"625041263","full_name":"matheusb432/task-manager-app-dotnet","owner":"matheusb432","description":"Backend REST API for TMA, with E2E Tests using Selenium WebDriver","archived":false,"fork":false,"pushed_at":"2023-07-01T17:28:30.000Z","size":309,"stargazers_count":3,"open_issues_count":0,"forks_count":1,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-09-19T12:38:51.758Z","etag":null,"topics":["asp-net-core","dotnet","e2e-tests","selenium-webdriver","sql","unit-testing"],"latest_commit_sha":null,"homepage":"https://task-manager-app-fake-backend.vercel.app/home","language":"C#","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"cc0-1.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/matheusb432.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","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-04-07T22:51:20.000Z","updated_at":"2023-06-23T22:05:42.000Z","dependencies_parsed_at":"2023-07-10T22:16:07.051Z","dependency_job_id":null,"html_url":"https://github.com/matheusb432/task-manager-app-dotnet","commit_stats":null,"previous_names":["matheusb432/task-manager-app-dotnet"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/matheusb432/task-manager-app-dotnet","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/matheusb432%2Ftask-manager-app-dotnet","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/matheusb432%2Ftask-manager-app-dotnet/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/matheusb432%2Ftask-manager-app-dotnet/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/matheusb432%2Ftask-manager-app-dotnet/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/matheusb432","download_url":"https://codeload.github.com/matheusb432/task-manager-app-dotnet/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/matheusb432%2Ftask-manager-app-dotnet/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32587818,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-03T22:12:39.696Z","status":"ssl_error","status_checked_at":"2026-05-03T22:09:10.534Z","response_time":103,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"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":["asp-net-core","dotnet","e2e-tests","selenium-webdriver","sql","unit-testing"],"created_at":"2024-12-16T12:00:45.909Z","updated_at":"2026-05-03T22:32:43.805Z","avatar_url":"https://github.com/matheusb432.png","language":"C#","funding_links":[],"categories":[],"sub_categories":[],"readme":"# TMA API\n\nTask Manager App API (TMA API) is a web application that allows the processing and handling of TMA's SPA (Single-page application) data, with read/write operations to a SQL database.\n\n## Getting Started\n\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\n\nWhat things you need to install the software and how to install them.\n\n- [.NET 7.0 SDK](https://dotnet.microsoft.com/en-us/download/dotnet/7.0)\n\n- [Microsoft® SQL Server® 2019](https://www.microsoft.com/en-us/download/details.aspx?id=101064)\n\n- [Azure Data Studio](https://azure.microsoft.com/pt-br/products/data-studio)\n\n- [Postman](https://www.postman.com/downloads/)\n\n- [(Optional) Visual Studio 2022](https://visualstudio.microsoft.com/en-us/vs/)\n\n- [(Optional) Docker](https://www.docker.com/products/docker-desktop)\n\n## Running\n\n### Backend (.NET) application\n\nEdit appsettings.Development.json and enter your connection string or set your Environment.\n\nFor running the Api you must go to `src/TaskManagerApp.API` and run:\n\n```powershell\ndotnet run\n```\n\nOR run the `TaskManagerApp.API` profile in VS 2022\n\n### Endpoints \u0026 Postman Setup\n\nTo test the endpoints of the API, import the Postman collection located in `docs/postman` for reference\n\nThe collection's requests have dummy data to test the endpoints, the only necessary config is to make sure you have a SQL database instance with the same name as the one in the connection string in `appsettings.Development.json`, and that you have set the collection's Authorization to `Type: Bearer Token` and `Token: {a JWT token generated from the POST /api/Auth/login endpoint}`\n\nYou can check if a token is valid by debugging it in [jwt.io](https://jwt.io/)\n\nHere's a valid token for reference and testing purposes:\n\n```json\neyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1bmlxdWVfbmFtZSI6Im1hdGhldXMiLCJlbWFpbCI6Im1AbS5jb20iLCJVc2VySWQiOiIyIiwicm9sZSI6IkFETUlOIiwibmJmIjoxNjg3NDU0OTUxLCJleHAiOjE2OTAwNDY5NTEsImlhdCI6MTY4NzQ1NDk1MX0.grG3OYNUCuNb6EPm7ugE-bL0pWIMPfwW8KxYgZQymWs\n```\n\nDecoded:\n\n```json\n{\n  \"unique_name\": \"matheus\",\n  \"email\": \"m@m.com\",\n  \"UserId\": \"2\",\n  \"role\": \"ADMIN\",\n  \"nbf\": 1687454951,\n  \"exp\": 1690046951,\n  \"iat\": 1687454951\n}\n```\n\n### Database\n\nTo create a database from the existing migrations, run the following command:\n\n```powershell\ndotnet ef database update\n```\n\nOR run the `Update-Database` command in VS 2022 Package Manager Console\n\n### (Optional) Docker Compose\n\nTo create container instances of the SQL server and the API, first check that you correctly set up a `.env` file at the root of the project, with the same variables as the `.env.example` file.\n\nThen, run the following command:\n\n```powershell\ndocker-compose up --build -d\n```\n\nYou can test if the container instances are up, and if the database is correctly created, by calling the GET `/health` endpoint of the API\n\n## Architecture\n\nThe backend application is a REST API built with .NET 7.0. Following the Clean Architecture principles, the application is divided into 4 layers:\n\n### Presentation\n\nThe Presentation/API layer is the entry point of the application. It is responsible for receiving the requests and sending the responses to the client. It is also responsible for the authentication and authorization of the requests.\n\n### Application\n\nThe Application layer is responsible for the application's business rules. It is responsible for the communication between the API and the Domain layer.\n\n### Domain\n\nThe Domain layer is the core of the application. It is responsible for the entities of the application and their validations.\n\n### Infrastructure\n\nThe Infrastructure layer is responsible for the communication with the database, it uses Entity Framework Core as the ORM to perform the operations in the database.\n\n## Built With\n\n- [.NET 7.0](https://dotnet.microsoft.com/download/dotnet/7.0)\n- [Entity Framework Core](https://docs.microsoft.com/en-us/ef/core/)\n- [AutoMapper](https://automapper.org/)\n- [FluentValidation](https://fluentvalidation.net/)\n\n## Formatting\n\nThe solution's formatter is [CSharpier](https://csharpier.com/docs/About), to format the code, run the following command:\n\n```powershell\ndotnet csharpier .\n```\n\n## Unit Tests\n\nUnit tests for utility classes are located in tests/TaskManagerApp.Tests.Unit\n\nYou can run them via the VS 2022 Test Explorer\n\n## E2E Tests\n\nE2E tests are located in tests/TaskManagerApp.Tests.E2E, they were built with [Selenium WebDriver](https://www.selenium.dev/documentation/webdriver/)\n\nYou can run them via the VS 2022 Test Explorer\n\n## Low-Priority Possible Improvements\n\nThese are some architectural and performance improvements that could be eventually made to the application, but are not necessary for the application to function.\n\n- Convert join tables primary keys to composite keys\n- Improve API caching\n- Refactor the API to use a CQRS pattern\n- Handle spamming of the API with a rate limiter\n\n## Contributing\n\nFeel free to submit a pull request with any improvements you see fit, suggestions are also welcome!\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmatheusb432%2Ftask-manager-app-dotnet","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmatheusb432%2Ftask-manager-app-dotnet","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmatheusb432%2Ftask-manager-app-dotnet/lists"}