{"id":21991090,"url":"https://github.com/genocs/genocs-library","last_synced_at":"2025-09-11T16:19:02.767Z","repository":{"id":37798996,"uuid":"263106654","full_name":"Genocs/genocs-library","owner":"Genocs","description":"The enterprise library designed by Genocs","archived":false,"fork":false,"pushed_at":"2025-03-10T04:17:51.000Z","size":4158,"stargazers_count":2,"open_issues_count":5,"forks_count":1,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-04-14T07:03:09.005Z","etag":null,"topics":["ddd","dotnet-core","microservices"],"latest_commit_sha":null,"homepage":"https://www.genocs.com","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/Genocs.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","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},"funding":{"open_collective":"genocs","custom":["https://www.buymeacoffee.com/genocs"]}},"created_at":"2020-05-11T17:08:09.000Z","updated_at":"2025-04-12T18:58:55.000Z","dependencies_parsed_at":"2023-10-14T19:34:12.304Z","dependency_job_id":"67a6a924-171a-4d02-b19a-155bdd7775b4","html_url":"https://github.com/Genocs/genocs-library","commit_stats":{"total_commits":76,"total_committers":2,"mean_commits":38.0,"dds":"0.013157894736842146","last_synced_commit":"d8e270eed46c5f7726b62d8bfc0c86a1747fb4c0"},"previous_names":[],"tags_count":11,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Genocs%2Fgenocs-library","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Genocs%2Fgenocs-library/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Genocs%2Fgenocs-library/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Genocs%2Fgenocs-library/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Genocs","download_url":"https://codeload.github.com/Genocs/genocs-library/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":251714812,"owners_count":21631793,"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":["ddd","dotnet-core","microservices"],"created_at":"2024-11-29T20:06:43.300Z","updated_at":"2025-09-11T16:19:02.760Z","avatar_url":"https://github.com/Genocs.png","language":"C#","funding_links":["https://opencollective.com/genocs","https://www.buymeacoffee.com/genocs","https://www.buymeacoffee.com/genocs)!","https://opencollective.com/genocs/contribute"],"categories":[],"sub_categories":[],"readme":"\u003c!-- PROJECT SHIELDS --\u003e\n\n[![License][license-shield]][license-url]\n[![Build][build-shield]][build-url]\n[![Downloads][downloads-shield]][downloads-url]\n[![Contributors][contributors-shield]][contributors-url]\n[![Forks][forks-shield]][forks-url]\n[![Stargazers][stars-shield]][stars-url]\n[![Issues][issues-shield]][issues-url]\n[![Discord][discord-shield]][discord-url]\n[![Gitter][gitter-shield]][gitter-url]\n[![Twitter][twitter-shield]][twitter-url]\n[![Twitterx][twitterx-shield]][twitterx-url]\n[![LinkedIn][linkedin-shield]][linkedin-url]\n\n[license-shield]: https://img.shields.io/github/license/Genocs/genocs-library?color=2da44e\u0026style=flat-square\n[license-url]: https://github.com/Genocs/genocs-library/blob/main/LICENSE\n[build-shield]: https://github.com/Genocs/genocs-library/actions/workflows/build_and_test.yml/badge.svg?branch=main\n[build-url]: https://github.com/Genocs/genocs-library/actions/workflows/build_and_test.yml\n[downloads-shield]: https://img.shields.io/nuget/dt/Genocs.Microservice.Template.svg?color=2da44e\u0026label=downloads\u0026logo=nuget\n[downloads-url]: https://www.nuget.org/packages/Genocs.Microservice.Template\n[contributors-shield]: https://img.shields.io/github/contributors/Genocs/genocs-library.svg?style=flat-square\n[contributors-url]: https://github.com/Genocs/genocs-library/graphs/contributors\n[forks-shield]: https://img.shields.io/github/forks/Genocs/genocs-library?style=flat-square\n[forks-url]: https://github.com/Genocs/genocs-library/network/members\n[stars-shield]: https://img.shields.io/github/stars/Genocs/genocs-library.svg?style=flat-square\n[stars-url]: https://img.shields.io/github/stars/Genocs/genocs-library?style=flat-square\n[issues-shield]: https://img.shields.io/github/issues/Genocs/genocs-library?style=flat-square\n[issues-url]: https://github.com/Genocs/genocs-library/issues\n[discord-shield]: https://img.shields.io/discord/1106846706512953385?color=%237289da\u0026label=Discord\u0026logo=discord\u0026logoColor=%237289da\u0026style=flat-square\n[discord-url]: https://discord.com/invite/fWwArnkV\n[gitter-shield]: https://img.shields.io/badge/chat-on%20gitter-blue.svg\n[gitter-url]: https://gitter.im/genocs/\n[twitter-shield]: https://img.shields.io/twitter/follow/genocs?color=1DA1F2\u0026label=Twitter\u0026logo=Twitter\u0026style=flat-square\n[twitter-url]: https://twitter.com/genocs\n[linkedin-shield]: https://img.shields.io/badge/-LinkedIn-black.svg?style=flat-square\u0026logo=linkedin\u0026colorB=555\n[linkedin-url]: https://www.linkedin.com/in/giovanni-emanuele-nocco-b31a5169/\n[twitterx-shield]: https://img.shields.io/twitter/url/https/twitter.com/genocs.svg?style=social\n[twitterx-url]: https://twitter.com/genocs\n\n\u003cp align=\"center\"\u003e\n    \u003cimg src=\"./assets/genocs-library-logo.png\" alt=\"icon\"\u003e\n\u003c/p\u003e\n\n# Genocs .NET library\n\nThis repo contains a set of libraries to build LOB (Line Of Business) applications. The library is open source and built to be PRODUCTION READY. The library is built on top of .NET9, it is designed and maintained by Genocs.\n\nPackages are available on [NuGet Genocs](https://www.nuget.org/profiles/gioema_nocco).\n\n## The idea\n\n**_Build a software library to be cloud agnostic_**\n\nBuilding a software library to be cloud agnostic has several advantages. First, it allows developers to create applications that can be deployed on any cloud platform without having to rewrite code or make major changes. This makes it easier for developers to quickly deploy their applications across multiple cloud providers. Additionally, it reduces the cost of development and maintenance since developers don’t have to write separate code for each cloud provider. Finally, it increases the scalability of applications since they can be easily deployed on different cloud platforms with minimal effort.\n\n**_Cloud agnostic by use of Containers_**\n\nThe advantages of using containers are numerous. Containers provide a lightweight, portable, and isolated environment for applications to run in, allowing them to be easily moved between different systems. This makes it easier to deploy applications quickly and reliably across different environments. Additionally, containers can help reduce resource consumption by running multiple applications on the same host, as each container is isolated from the others. This helps to improve efficiency and scalability. Finally, containers provide an additional layer of security, as they are isolated from the underlying operating system and other applications.\n\n## Documentation\n\nYou can find a useful documentation about how to use the library. The documentation contains the complete set of libraries, template, CLI that altogether make the _genocs ecosystem_ a comprensive set of tools to build enterprise solutions.\n\nDocumentation available at [Genocs Blog](https://genocs-blog.netlify.app/library/)\n\n## Infrastructure\n\nIn this section you can find the infrastructure components you need to execute the solution. Infrastucture components are the database, the enterprice servise bus, the distributed logging, monitoring, tracing systems along with database and many more.\nYou can use **Docker compose** to setup the infrastructure components just by running few commands.\n\n```bash\ncd ./containers\n\n# Setup the infrastructure.\n#Use this file to setup the basic infrastructure components (RabbitMQ, MongoDB)\ndocker compose -f ./infrastructure.yml --env-file ./.env --project-name genocs up -d\n\n# Use this file only in case you want to setup Redis and PostgreSQL (no need if you use MongoDB)\ndocker compose -f ./infrastructure-db.yml --env-file ./.env --project-name genocs up -d\n\n# Use this file only in case you want to setup monitoring infrastructure components (Prometheus, Grafana, InfluxDB, Jaeger, Seq)\ndocker compose -f ./infrastructure-monitoring.yml --env-file ./.env --project-name genocs up -d\n\n# Use this file only in case you want to setup scaling infrastructure components (Fabio, Consul)\ndocker compose -f ./infrastructure-scaling.yml --env-file ./.env --project-name genocs up -d\n\n# Use this file only in case you want to setup security infrastructure components (Vault)\ndocker compose -f ./infrastructure-security.yml --env-file ./.env --project-name genocs up -d\n\n# Use this file only in case you want to setup sqlserver database (no need if you use PostgreSQL)\ndocker compose -f ./infrastructure-sqlserver.yml --env-file ./.env --project-name genocs up -d\n\n# Use this file only in case you want to setup mySql database (no need if you use PostgreSQL)\ndocker compose -f ./infrastructure-mysql.yml --env-file ./.env --project-name genocs up -d\n\n# Use this file only in case you want to setup oracle database (no need if you use PostgreSQL)\ndocker compose -f ./infrastructure-oracle.yml --env-file ./.env --project-name genocs up -d\n\n# Use this file only in case you want to setup elk stack\ndocker compose -f ./infrastructure-elk.yml --env-file ./.env --project-name genocs up -d\n\n# Use this file only in case you want to setup AI ML components prepared by Genocs\ndocker compose -f ./infrastructure-ml.yml --env-file ./.env --project-name genocs up -d\n```\n\n`infrastructure.yml` allows to install the basic infrastructure components. They are:\n\n- [RabbitMQ](https://rabbitmq.com)\n- [MongoDB](https://mongodb.com)\n\n`infrastructure-db.yml` allows to install Redis and PostgreSQL\n\n- [Redis](https://redis.io)\n- [Postgres](https://www.postgresql.org/)\n\nYou can check them locally:\n\n- [RabbitMQ](http://localhost:15672): `localhost:15672`\n- Redis: `TCP:localhost:6379`\n- MongoDB: `TCP:localhost:27017`\n- Postgres: `TCP:localhost:5432`\n\n`infrastructure-monitoring.yml` allows to install the monitoring infrastructure components. They are:\n\n- [Aspire](https://learn.microsoft.com/en-us/dotnet/aspire/)\n- [Prometheus](https://prometheus.io/)\n- [Grafana](https://grafana.com/)\n- [InfluxDB](https://www.influxdata.com/)\n- [Jaeger](https://www.jaegertracing.io/)\n- [Seq](https://datalust.co/seq)\n\nYou can find the console locally at:\n\n- [Aspire](localhost:18888): `localhost:18888`\n- [Prometheus](localhost:9090): `localhost:9090`\n- [Grafana](localhost:3000): `localhost:3000`\n- [InfluxDB](localhost:8086): `localhost:8086`\n- [Jaeger](localhost:16686): `localhost:16686`\n- [Seq](localhost:5341): `localhost:5341`\n\n`infrastructure-scaling.yml` allows to install the scaling infrastructure components composed by a Fabio (Loadbalancer) Service Discovery (Consul) components. They are:\n\n- [Fabio](https://fabiolb.net/)\n- [Consul](https://www.consul.io/)\n\n`infrastructure-security.yml` allows to install the security infrastructure components.\n\nInside the file you can find:\n\n- vault (Hashicorp)\n\n\u003e **NOTE**\n\u003e\n\u003e The commands above allows to setup infrastructure components, this means you can find all the containers inside the same network `genocs`.\n\u003e\n\u003e Whenever possible the data are persisted on the host machine by means of volumens, so you can restart the containers without losing data.\n\n```yml\nnetworks:\n  genocs:\n    name: genocs-network\n    driver: bridge\n\nvolumes:\n  rabbitmq-data:\n  mongo-data:\n  redis-data:\n  postgres-data:\n  influx-data:\n  grafana-data:\n  jaeger-data:\n  seq-data:\n  vault-data:\n  elk-data:\n  fabio-data:\n  consul-data:\n  prometheus-data:\n  ml-data:\n```\n\nRemember to add the network configuration inside your docker compose file to setup the network, before running the containers.\n\n## **_Kubernetes cluster_**\n\nYou can setup the application inside a Kubernetes cluster.\n\nCheck the repo [enterprise-containers](https://github.com/Genocs/enterprise-containers) to setup a Kubernetes cluster.\nThere you can find scripts, configuration files and documentation to setup a cluster from scratch.\n\n## **_Aspire Integration_**\n\nSOON :rocket:\n\n## Support\n\nUse [**api-workbench**](./api-workbench.rest) inside Visual Studio code with [REST Client](https://marketplace.visualstudio.com/items?itemName=humao.rest-client) plugin\n\n## Configuration\n\n```json\n   \"app\": {\n    \"name\": \"Demo WebApi\",\n    \"service\": \"demo-service\",\n    \"instance\": \"01\",\n    \"version\": \"v1.0\",\n    \"displayBanner\": false,\n    \"displayVersion\": false\n  },\n  \"consul\": {\n    \"enabled\": false,\n    \"url\": \"http://localhost:8500\",\n    \"service\": \"demo-service\",\n    \"address\": \"docker.for.mac.localhost\",\n    \"port\": \"5070\",\n    \"pingEnabled\": true,\n    \"pingEndpoint\": \"healthz\",\n    \"pingInterval\": 3,\n    \"removeAfterInterval\": 3\n  },\n  \"fabio\": {\n    \"enabled\": false,\n    \"url\": \"http://localhost:9999\",\n    \"service\": \"demo-service\"\n  },\n  \"httpClient\": {\n    \"type\": \"fabio\",\n    \"retries\": 3,\n    \"services\": {},\n    \"requestMasking\": {\n      \"enabled\": true,\n      \"maskTemplate\": \"*****\"\n    },\n    \"correlationIdHeader\": \"x-correlation-id\"\n  },\n  \"logger\": {\n    \"level\": \"information\",\n    \"excludePaths\": [\n      \"/\",\n      \"/healthz\",\n      \"/alive\",\n      \"/metrics\"\n    ],\n    \"excludeProperties\": [\n      \"api_key\",\n      \"access_key\",\n      \"ApiKey\",\n      \"ApiSecret\",\n      \"ClientId\",\n      \"ClientSecret\",\n      \"ConnectionString\",\n      \"Password\",\n      \"Email\",\n      \"Login\",\n      \"Secret\",\n      \"Token\"\n    ],\n    \"console\": {\n      \"enabled\": false\n    },\n    \"elk\": {\n      \"enabled\": false,\n      \"url\": \"http://localhost:9200\"\n    },\n    \"file\": {\n      \"enabled\": false,\n      \"path\": \"logs/logs.txt\",\n      \"interval\": \"day\"\n    },\n    \"seq\": {\n      \"enabled\": false,\n      \"url\": \"http://localhost:5341\",\n      \"apiKey\": \"secret\"\n    },\n    \"azure\": {\n      \"enabled\": false,\n      \"connectionString\": \"\"\n    },\n    \"tags\": {}\n  },\n  \"jaeger\": {\n    \"enabled\": true,\n    \"serviceName\": \"orders\",\n    \"endpoint\": \"http://localhost:4317\",\n    \"protocol\": \"Grpc\",\n    \"processorType\": \"Batch\",\n    \"maxQueueSize\": 2048,\n    \"scheduledDelayMilliseconds\": 5000,\n    \"exporterTimeoutMilliseconds\": 30000,\n    \"maxExportBatchSize\": 512\n  },\n  \"jwt\": {\n    \"certificate\": {\n      \"location\": \"certs/localhost.pfx\",\n      \"password\": \"test\",\n      \"rawData\": \"\"\n    },\n    \"issuer\": \"genocs-identities-service\",\n    \"validIssuer\": \"genocs-identities-service\",\n    \"validateAudience\": false,\n    \"validateIssuer\": true,\n    \"validateLifetime\": true,\n    \"expiry\": \"01:00:00\"\n  },\n  \"metrics\": {\n    \"enabled\": false,\n    \"influxEnabled\": false,\n    \"prometheusEnabled\": false,\n    \"influxUrl\": \"http://localhost:8086\",\n    \"database\": \"test\",\n    \"env\": \"local\",\n    \"interval\": 5\n  },\n  \"prometheus\": {\n    \"enabled\": false,\n    \"endpoint\": \"/metrics\"\n  },\n  \"mongodb\": {\n    \"connectionString\": \"mongodb://localhost:27017\",\n    \"database\": \"genocs-users-service\",\n    \"seed\": false\n  },\n  \"outbox\": {\n    \"enabled\": false,\n    \"type\": \"sequential\",\n    \"expiry\": 3600,\n    \"intervalMilliseconds\": 2000,\n    \"inboxCollection\": \"inbox\",\n    \"outboxCollection\": \"outbox\",\n    \"disableTransactions\": false\n  },\n  \"rabbitMq\": {\n    \"connectionName\": \"users-service\",\n    \"retries\": 3,\n    \"retryInterval\": 2,\n    \"conventionsCasing\": \"snakeCase\",\n    \"logger\": {\n      \"enabled\": false\n    },\n    \"username\": \"guest\",\n    \"password\": \"guest\",\n    \"virtualHost\": \"/\",\n    \"port\": 5672,\n    \"hostnames\": [\n      \"localhost\"\n    ],\n    \"requestedConnectionTimeout\": \"00:00:30\",\n    \"requestedHeartbeat\": \"00:01:00\",\n    \"socketReadTimeout\": \"00:00:30\",\n    \"socketWriteTimeout\": \"00:00:30\",\n    \"continuationTimeout\": \"00:00:20\",\n    \"handshakeContinuationTimeout\": \"00:00:10\",\n    \"networkRecoveryInterval\": \"00:00:05\",\n    \"exchange\": {\n      \"declare\": true,\n      \"durable\": true,\n      \"autoDelete\": false,\n      \"type\": \"topic\",\n      \"name\": \"users\"\n    },\n    \"queue\": {\n      \"declare\": true,\n      \"durable\": true,\n      \"exclusive\": false,\n      \"autoDelete\": false,\n      \"template\": \"users-service/{{exchange}}.{{message}}\"\n    },\n    \"context\": {\n      \"enabled\": true,\n      \"header\": \"message_context\"\n    },\n    \"spanContextHeader\": \"span_context\"\n  },\n  \"redis\": {\n    \"connectionString\": \"localhost\",\n    \"instance\": \"users-service:\",\n    \"database\": 0\n  },\n  \"swagger\": {\n    \"enabled\": false,\n    \"reDocEnabled\": false,\n    \"name\": \"v1\",\n    \"title\": \"API\",\n    \"version\": \"v1\",\n    \"routePrefix\": \"swagger\",\n    \"includeSecurity\": true\n  },\n  \"security\": {\n    \"certificate\": {\n      \"header\": \"Certificate\"\n    }\n  },\n  \"azureKeyVault\": {\n    \"enabled\": false,\n    \"name\": \"gnx-keyvault\",\n    \"managedIdentityId\": \"secret\",\n  },\n  \"vault\": {\n    \"enabled\": false,\n    \"url\": \"http://localhost:8200\",\n    \"authType\": \"token\",\n    \"token\": \"secret\",\n    \"username\": \"user\",\n    \"password\": \"secret\",\n    \"kv\": {\n      \"enabled\": true,\n      \"engineVersion\": 2,\n      \"mountPoint\": \"kv\",\n      \"path\": \"users-service/settings\"\n    },\n    \"pki\": {\n      \"enabled\": true,\n      \"roleName\": \"users-service\",\n      \"commonName\": \"users-service.demo.io\"\n    },\n    \"lease\": {\n      \"mongo\": {\n        \"type\": \"database\",\n        \"roleName\": \"users-service\",\n        \"enabled\": true,\n        \"autoRenewal\": true,\n        \"templates\": {\n          \"connectionString\": \"mongodb://{{username}}:{{password}}@localhost:27017\"\n        }\n      }\n    }\n  }\n```\n\n---\n\n## Demo Application\n\nInside the library there is a simple demo application you can use to test the library.\n\nFollowing are the commands to build and run the demo application.\n\n```bash\n# Build the solution\ndotnet build\n\n# Pack the projects\ndotnet pack\n\n# Run project with console\ndotnet run --project ./src/Genocs.Core.Demo.WebApi\ndotnet run --project ./src/Genocs.Core.Demo.Worker\n```\n\n```bash\n# To pack the project with nuspec file\ncd src/Genocs.Core\ndotnet pack -p:NuspecFile=./Genocs.Core.nuspec --no-restore -o .\n\n# To push on nuget\ndotnet nuget push\ndotnet nuget push *.nupkg -k $NUGET_API_KEY -s $NUGET_SOURCE\n```\n\n### How to build Docker Demo images\n\n```bash\n# Build webapi\ndocker build -t genocs/demo-webapi:2.0.0 -t genocs/demo-webapi:latest -f ./demo-webapi.dockerfile .\n\n# Push on Dockerhub\ndocker push genocs/demo-webapi:2.0.0\ndocker push genocs/demo-webapi:latest\n\n# Build worker\ndocker build -t genocs/demo-worker:2.0.0 -t genocs/demo-worker:latest -f ./demo-worker.dockerfile .\n\n# Push on Dockerhub\ndocker push genocs/demo-worker:2.0.0\ndocker push genocs/demo-worker:latest\n```\n\n---\n\n## **Enterprise Application**\n\n### Application Components\n\nInside **./src/apps** folder you can find a full-fledged application composed by:\n\n- ApiGateway\n- Identity Service\n- Order Service\n- Product Service\n- SignalR Service\n\nIn that way you can test the entire flow.\n\n| Component        | Description                     | Container Port | Visibility                  |\n| ---------------- | ------------------------------- | -------------- | --------------------------- |\n| ApiGateway       | Handles API requests            | :5500          | Public                      |\n| Identity Service | Manages user identities         | :5510\\*        | Private through API Gateway |\n| Product Service  | Manages product information     | :5520\\*        | Private through API Gateway |\n| Order Service    | Processes orders                | :5530\\*        | Private through API Gateway |\n| SignalR Service  | Handles real-time communication | :5540\\*        | Private through API Gateway |\n\n![Architecture](./assets/architecture_01.png)\n\n### How to BUILD \u0026 RUN the application\n\nThe build and run process can be done by using docker-compose.\n\nPre-requisites:\n\n- Docker\n\n```bash\ncd ./src/apps\n\n# Build with docker compose\ndocker compose -f ./docker-compose.yml -f ./docker-compose.override.yml --env-file ./local.env --project-name genocs build\n\n# *** Before running the solution remember to check ***\n# *** if the infrastructure services were setup     ***\n\n# Run with docker compose\ndocker compose -f ./docker-compose.yml --env-file ./local.env --project-name genocs up -d\n\n# Clean Docker cache\ndocker builder prune\n```\n\nUse following to build and push the images one by one\n\n```bash\n# Build images\n./src/apps/scripts/build-images.sh\n\n# Push images\n./src/apps/scripts/push-images.sh\n```\n\n### How to deploy the application on Kubernetes\n\nYou can deploy the application on Kubernetes cluster.\n\n```bash\n# Build images\n./src/apps/scripts/deploy-k8s.sh\n```\n\n### How to use makefile\n\nPrerequisites:\n\n- make\n\nTo install make on MacOS you can use brew\n\n```bash\nbrew install make\n```\n\nTo install make on Ubuntu you can use apt\n\n```bash\nsudo apt install make\n```\n\nTo install make on Windows you can use [choco](https://chocolatey.org/)\n\n```bash\nchoco install make\n```\n\nUpon installation you can use the makefile to build, run, deploy the application.\n\n```bash\n# Build the solution\nmake build\n```\n\n### How to use Helm chart\n\nInside the folder **./src/apps/k8s/helm** you can find the Helm chart to deploy the application on Kubernetes.\n\n```bash\ncd ./src/apps/k8s/helm\nmicrok8s helm install genocs ./gnxchart\n```\n\n### Deploy in a cloud instance\n\nYou can deploy Demo Application with one click in Heroku, Microsoft Azure, or Google Cloud Platform:\n\n[\u003cimg src=\"https://www.herokucdn.com/deploy/button.svg\" height=\"30px\"\u003e](https://heroku.com/deploy?template=https://github.com/heartexlabs/label-studio/tree/heroku-persistent-pg)\n[\u003cimg src=\"https://aka.ms/deploytoazurebutton\" height=\"30px\"\u003e](https://portal.azure.com/#create/Microsoft.Template/uri/https%3A%2F%2Fraw.githubusercontent.com%2Fheartexlabs%2Flabel-studio%2Fmaster%2Fazuredeploy.json)\n[\u003cimg src=\"https://deploy.cloud.run/button.svg\" height=\"30px\"\u003e](https://deploy.cloud.run)\n\n## License\n\nThis project is licensed with the [MIT license](LICENSE).\n\n## Changelog\n\nView Complete [Changelog](https://github.com/Genocs/microservice-template/blob/main/CHANGELOG.md).\n\n## Community\n\n- Discord [@genocs](https://discord.com/invite/fWwArnkV)\n- Facebook Page [@genocs](https://facebook.com/Genocs)\n- Youtube Channel [@genocs](https://youtube.com/c/genocs)\n\n## Support\n\nHas this Project helped you learn something New? or Helped you at work?\nHere are a few ways by which you can support.\n\n- ⭐ Leave a star!\n- 🥇 Recommend this project to your colleagues.\n- 🦸 Do consider endorsing me on LinkedIn for ASP.NET Core - [Connect via LinkedIn](https://www.linkedin.com/in/giovanni-emanuele-nocco-b31a5169/)\n- ☕ If you want to support this project in the long run, [consider buying me a coffee](https://www.buymeacoffee.com/genocs)!\n\n[![buy-me-a-coffee](https://raw.githubusercontent.com/Genocs/genocs-library/main/assets/buy-me-a-coffee.png \"buy-me-a-coffee\")](https://www.buymeacoffee.com/genocs)\n\n## Code Contributors\n\nThis project exists thanks to all the people who contribute. [Submit your PR and join the team!](CONTRIBUTING.md)\n\n[![genocs contributors](https://contrib.rocks/image?repo=Genocs/genocs-library \"genocs contributors\")](https://github.com/genocs/genocs-library/graphs/contributors)\n\n## Financial Contributors\n\nBecome a financial contributor and help me sustain the project. [Support the Project!](https://opencollective.com/genocs/contribute)\n\n\u003ca href=\"https://opencollective.com/genocs\"\u003e\u003cimg src=\"https://opencollective.com/genocs/individuals.svg?width=890\"\u003e\u003c/a\u003e\n\n## Acknowledgements\n\n- [devmentors](https://github.com/devmentors)\n- [abp](https://github.com/abpframework)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgenocs%2Fgenocs-library","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fgenocs%2Fgenocs-library","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgenocs%2Fgenocs-library/lists"}