{"id":26562615,"url":"https://github.com/arosansb/taskmanagement","last_synced_at":"2026-04-13T19:33:12.000Z","repository":{"id":282058206,"uuid":"946661036","full_name":"ArosanSB/TaskManagement","owner":"ArosanSB","description":"A self-learning project to explore Clean Architecture, C# ASP.NET Core, Entity Framework Core, and Docker. Built for educational purposes, focusing on best practices, architecture patterns, and backend development. 🎯","archived":false,"fork":false,"pushed_at":"2025-03-24T11:49:45.000Z","size":271,"stargazers_count":1,"open_issues_count":5,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-08-23T06:33:44.941Z","etag":null,"topics":["asp-net","asp-net-core","aspnet","backend","backend-api","backend-development","cicd","clean-architecture","csharp","database","efcore","postgres"],"latest_commit_sha":null,"homepage":"","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/ArosanSB.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,"zenodo":null}},"created_at":"2025-03-11T13:38:12.000Z","updated_at":"2025-03-24T11:49:49.000Z","dependencies_parsed_at":null,"dependency_job_id":"adc05602-105f-4be1-b853-ff4276c60466","html_url":"https://github.com/ArosanSB/TaskManagement","commit_stats":null,"previous_names":["arosansb/taskmanagement"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/ArosanSB/TaskManagement","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ArosanSB%2FTaskManagement","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ArosanSB%2FTaskManagement/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ArosanSB%2FTaskManagement/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ArosanSB%2FTaskManagement/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ArosanSB","download_url":"https://codeload.github.com/ArosanSB/TaskManagement/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ArosanSB%2FTaskManagement/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":279862289,"owners_count":26236542,"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","status":"online","status_checked_at":"2025-10-19T02:00:07.647Z","response_time":64,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"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","asp-net-core","aspnet","backend","backend-api","backend-development","cicd","clean-architecture","csharp","database","efcore","postgres"],"created_at":"2025-03-22T15:18:18.815Z","updated_at":"2025-10-19T17:41:03.907Z","avatar_url":"https://github.com/ArosanSB.png","language":"C#","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Task Management API 🚀\n[![CI/CD Pipeline](https://github.com/ArosanSB/TaskManagement/actions/workflows/dotnet-desktop.yml/badge.svg)](https://github.com/ArosanSB/TaskManagement/actions/workflows/dotnet-desktop.yml)\n## About This Project\nThis project was built for **educational purposes** 📚 because there were no active projects at work.  \nI decided to **educate myself** by implementing various **services, architectures, and design patterns**  \nto enhance my skills in **.NET, Clean Architecture, Docker, and CI/CD.**  \n\nThis repository is a **Task Management API**, developed with **.NET 8, PostgreSQL, and Angular**.\n\n---\n\n## **🛠 Technologies Used**\nThis project follows best practices and modern software architecture, including:\n\n- **.NET 8** - Backend API\n- **Entity Framework Core** - Database ORM\n- **PostgreSQL** - Database\n- **Docker \u0026 Docker Compose** - Containerized setup\n- **MediatR (CQRS)** - Separating business logic from handlers\n- **AutoMapper** - Mapping DTOs to domain entities\n- **Serilog** - Logging for debugging and monitoring\n- **JWT Authentication** - Secure authentication \u0026 authorization (Not added yet)\n- **Unit Testing with xUnit** - Testing API endpoints and business logic (Not added yet) \n- **GitHub Actions (CI/CD)** - Automating builds, tests, and deployment \n- **Angular** - Frontend application (work in progress)\n\n---\n\n## 📂 Project Structure\n\nThis project follows **Clean Architecture** to ensure modularity and scalability.\n\n### 🏗️ What is Clean Architecture?\n\nClean Architecture is a software design pattern that promotes **separation of concerns**, ensuring that each layer of the application has a distinct responsibility. This leads to **maintainability, testability, and scalability** of the codebase.\n\n#### 🔹 Key Principles of Clean Architecture:\n\n- **Independence of Frameworks**: The core logic does not depend on external libraries or frameworks.\n- **Testability**: Business rules can be tested independently from UI, database, and external services.\n- **Separation of Concerns**: Dividing the application into layers such as **Presentation, Application, Domain, and Infrastructure**.\n- **Dependency Rule**: Inner layers should not depend on outer layers, keeping business logic pure.\n\n### 🛠️ Implementation in This Project\n\nThis project is structured into four main layers:\n\n1️⃣ **Presentation Layer** → Handles HTTP requests and responses (Controllers, Middleware).  \n2️⃣ **Application Layer** → Contains use cases, DTOs, and business logic.  \n3️⃣ **Domain Layer** → Defines core business entities and interfaces.  \n4️⃣ **Infrastructure Layer** → Handles data persistence, repositories, and database interactions.  \n\nEach layer communicates **only through well-defined interfaces**, ensuring **loose coupling** and **high cohesion**.\n\nBy following Clean Architecture, this project is structured to **support future enhancements, improve testability, and remain adaptable to technological changes**.\n\n---\n\n## 🚀 How to Implement\n\n### 🐳 Setting up PostgreSQL with Docker\nTo set up your PostgreSQL database using Docker, run the following command:\n\n```bash\ndocker run --name task-management-db -e POSTGRES_USER=postgres -e POSTGRES_PASSWORD=postgres -e POSTGRES_DB=Task-Management -p 5432:5432 -d postgres\n```\n\n### 🛠️ Configure Your Database Connection\nAfter running the Docker command, update your `appsettings.json` file with the following connection string:\n\n```json\n\"ConnectionStrings\": {\n    \"DefaultConnection\": \"Host=localhost;Port=5432;Database=postgres;Username=postgres;Password=postgres\"\n}\n```\n\n✅ Now, you are **good to go!** Your database is running, and your application is ready to connect.\n\n---\n\n## **🚀 Features Implemented**\n✅ **Clean Architecture** (Separation of Concerns)  \n✅ **CQRS (Command-Query Responsibility Segregation)**  \n✅ **PostgreSQL Database with EF Core**  \n✅ **Dockerized Backend \u0026 Database**  \n✅ **Logging with Serilog**  \n✅ **Exception Handling Middleware**  \n✅ **Task Management API Endpoints**  \n✅ **Guid-based IDs for Tasks**  \n✅ **GitHub Actions for CI/CD**  \n✅ **Angular Frontend**  \n\n---\n\n## **📌 API Endpoints**\n### **Task Endpoints**\n| Method | Endpoint              | Description            |\n|--------|-----------------------|------------------------|\n| GET    | `/api/tasks`          | Get all tasks         |\n| GET    | `/api/tasks/{id}`     | Get task by ID        |\n| POST   | `/api/tasks`          | Create a new task     |\n| PUT    | `/api/tasks/{id}`     | Update a task         |\n| DELETE | `/api/tasks/{id}`     | Delete a task         |\n\n---\n\n## **🚀 Features NOT Implemented (Yet)**\n🚧 **JWT Authentication (To Be Added)**  \n🚧 **Unit Tests (To Be Added)**  \n🚧 **Cloud Deployment (To Be Added)**  \n🚧 **Task Assignments \u0026 Priorities (To Be Added)**  \n\n---\n\n## 🤝 Contributions\n\nThis project was built as a **self-learning project** to explore **Clean Architecture, C#, and ASP.NET Core development**.  \nThere is **no need to contribute** unless you find an issue, bug, or something that needs fixing.  \nThis is purely a **hobby project for educational purposes**\n\n---\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Farosansb%2Ftaskmanagement","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Farosansb%2Ftaskmanagement","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Farosansb%2Ftaskmanagement/lists"}