{"id":27024259,"url":"https://github.com/jonathanperis/cpnucleo","last_synced_at":"2025-04-04T21:18:56.220Z","repository":{"id":36999046,"uuid":"166312739","full_name":"jonathanperis/cpnucleo","owner":"jonathanperis","description":"This sample solution demonstrates modern .NET best practices—featuring clean architecture, robust testing, dependency injection, and Docker containerization—to help you build scalable, maintainable applications.","archived":false,"fork":false,"pushed_at":"2025-03-29T17:20:42.000Z","size":20201,"stargazers_count":6,"open_issues_count":0,"forks_count":4,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-03-29T18:27:19.840Z","etag":null,"topics":["best-practices","chsarp","clean-architecture","clean-code","code-quality","continuous-integration","dependency-injection","devops","docker","dotnet","integration-testing","sample-solution","software-architecture","solid-principles","unit-testing"],"latest_commit_sha":null,"homepage":"","language":"C#","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/jonathanperis.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":"2019-01-17T23:37:07.000Z","updated_at":"2025-03-24T23:30:48.000Z","dependencies_parsed_at":"2024-05-30T14:46:57.495Z","dependency_job_id":"b53d94af-7f2a-4c88-bd98-d287781f5111","html_url":"https://github.com/jonathanperis/cpnucleo","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/jonathanperis%2Fcpnucleo","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jonathanperis%2Fcpnucleo/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jonathanperis%2Fcpnucleo/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jonathanperis%2Fcpnucleo/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/jonathanperis","download_url":"https://codeload.github.com/jonathanperis/cpnucleo/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247249528,"owners_count":20908213,"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":["best-practices","chsarp","clean-architecture","clean-code","code-quality","continuous-integration","dependency-injection","devops","docker","dotnet","integration-testing","sample-solution","software-architecture","solid-principles","unit-testing"],"created_at":"2025-04-04T21:18:55.736Z","updated_at":"2025-04-04T21:18:56.213Z","avatar_url":"https://github.com/jonathanperis.png","language":"C#","readme":"# Cpnucleo\n\nWelcome to **Cpnucleo** – a cutting-edge sample solution that embodies the best practices for building robust and scalable .NET projects. This project is your blueprint for modern application development using C# and Docker, designed to help developers kickstart their journey with high-quality code, organized structure, and industry-standard patterns.\n\n---\n\n## Table of Contents\n\n- [Introduction](#introduction)\n- [Project Overview](#project-overview)\n- [Key Features](#key-features)\n- [Architecture](#architecture)\n- [Technologies Used](#technologies-used)\n- [Prerequisites](#prerequisites)\n- [Getting Started](#getting-started)\n- [Installation](#installation)\n- [Configuration](#configuration)\n- [Building and Running](#building-and-running)\n- [Testing](#testing)\n- [Deployment](#deployment)\n- [Contribution Guidelines](#contribution-guidelines)\n- [License](#license)\n- [Troubleshooting \u0026 FAQ](#troubleshooting--faq)\n- [Contact \u0026 Support](#contact--support)\n- [Acknowledgements](#acknowledgements)\n\n---\n\n## Introduction\n\nCpnucleo is a sample solution that demonstrates how to implement industry best practices when developing .NET projects. The purpose of this repository is to serve as a learning tool and a reference implementation that covers everything from clean architecture principles and dependency injection to unit testing and containerization.\n\n---\n\n## Project Overview\n\nThis repository is designed for:\n- **Beginners** aiming to learn best practices in modern .NET projects.\n- **Experienced developers** looking for a reliable reference implementation.\n- **Teams** seeking to set a standard for coding conventions, project structure, and CI/CD pipeline integration.\n\n**Highlights:**\n- Clean and modular project structure\n- Robust error handling and logging\n- Comprehensive unit and integration tests\n- Docker integration for containerized deployments\n- Extensive documentation for ease of onboarding\n\n---\n\n## Key Features\n\n- **Modular Architecture:** Clear separation of concerns using layered architecture, domain-driven design, and SOLID principles.\n- **Extensible Design:** Easily extend and customize the solution to fit your specific requirements.\n- **Robust Error Handling:** Integrated logging and detailed exception management.\n- **Test Coverage:** Extensive unit and integration tests ensuring high reliability.\n- **Containerized Environment:** Dockerfile provided for building and running the app in a containerized environment.\n- **CI/CD Ready:** Sample configurations and scripts for automated build, test, and deployment processes.\n\n---\n\n## Architecture\n\nThe solution follows an organized structure that promotes:\n- **Separation of Concerns:** Clear distribution between UI, Business Logic, and Data Access layers.\n- **Dependency Injection:** Decoupled components for easy testing and maintainability.\n- **Configuration Management:** Centralized configuration that adapts to different environments.\n\nA high-level diagram of the architecture is provided below:\n\n```\n+---------------------+\n|  Client / Frontend  |\n+---------------------+\n          |\n          v\n+---------------------+\n|     API Gateway     |\n| (Controllers/Routes)|\n+---------------------+\n          |\n          v\n+---------------------+\n| Business Logic Layer|\n| (Services/Managers) |\n+---------------------+\n          |\n          v\n+---------------------+\n|  Data Access Layer  |\n|  (Repositories)     |\n+---------------------+\n```\n\n---\n\n## Technologies Used\n\n- **C# \u0026 .NET:** Primary language and framework.\n- **Docker:** Containerization via provided Dockerfile.\n- **Entity Framework Core:** ORM for database interactions.\n- **xUnit:** For unit testing.\n- **AutoMapper:** Object-to-object mapping.\n- **Logging Framework:** Integrated logging (e.g., Serilog, NLog) for monitoring and troubleshooting.\n\n---\n\n## Prerequisites\n\nBefore getting started, ensure you have the following installed:\n\n- [.NET SDK](https://dotnet.microsoft.com/download/dotnet)\n- [Docker](https://www.docker.com/get-started) (if you plan to run in a container)\n- A code editor or IDE (e.g., [Visual Studio Code](https://code.visualstudio.com/))\n\n---\n\n## Getting Started\n\nClone this repository to your local machine:\n\n```bash\ngit clone https://github.com/jonathanperis/cpnucleo.git\ncd cpnucleo\n```\n\n### Installation\n\nRestore the NuGet packages and build the solution:\n\n```bash\ndotnet restore\ndotnet build\n```\n\n### Configuration\n\nAll configuration settings are located in the `appsettings.json` file. Adjust connection strings and other environment-specific settings as needed.\n\n---\n\n## Building and Running\n\nTo run the application locally, use the following command:\n\n```bash\ndotnet run --project WebApi\n```\n\nAlternatively, to build and run using Docker, execute:\n\n```bash\ndocker build -t cpnucleo .\ndocker run -d -p 5000:80 cpnucleo\n```\n\n---\n\n## Testing\n\nRun all tests using the following command:\n\n```bash\ndotnet test\n```\n\nEnsure that all tests pass and review the detailed test reports generated during the test run.\n\n---\n\n## Deployment\n\nThe project supports multiple deployment strategies including:\n\n- **Dockerized Deployment:** Use the provided Dockerfile to package and deploy your application.\n- **Cloud Providers:** Suitable for Azure App Services, AWS Elastic Beanstalk, and more.\n- **CI/CD Integration:** Sample CI/CD configurations are included to facilitate automated pipelines.\n\n---\n\n## Contribution Guidelines\n\nWe welcome contributions from the community! To contribute:\n\n1. **Fork** the repository.\n2. **Create a new branch** for your feature or bugfix.\n3. **Write tests** for your changes.\n4. **Submit a pull request** with a detailed description of your changes.\n\n---\n\n## License\n\nThis project is licensed under the [MIT License](LICENSE). Feel free to use, modify, and distribute this software in accordance with the license terms.\n\n---\n\n## Troubleshooting \u0026 FAQ\n\n**Q: How do I encounter a build error?**  \nA: Please review the error logs and ensure that all dependencies are correctly installed. Check the configuration files for any mismatches.\n\n**Q: How do I run tests?**  \nA: Run `dotnet test` in the root directory; detailed test results will be displayed in the terminal.\n\n---\n\n## Contact \u0026 Support\n\nIf you have any questions, issues, or would like to contribute, please open an issue on GitHub.\n\nStay connected:\n\n- **GitHub:** [jonathanperis/cpnucleo](https://github.com/jonathanperis/cpnucleo)\n- **Bluesky:** [@jperis.bsky.social](https://bsky.app/profile/jperis.bsky.social)\n\n---\n\n## Acknowledgements\n\n- Inspiration from industry-leading projects and best practices.\n- Contributions from the open-source community.\n- Special thanks to all the developers and maintainers who helped shape this project.\n\n---\n\nElevate your development process with Cpnucleo – where quality meets innovation.","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjonathanperis%2Fcpnucleo","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjonathanperis%2Fcpnucleo","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjonathanperis%2Fcpnucleo/lists"}